4,789 Commits over 1,371 Days - 0.15cph!
Fix - but obviously it can't be done this way it's absolutely awful
Kind of genericize SmallNetworkFiles - push / add / remove files from it externally - mount its MemoryFileSystem externally as well to desired file system
Do GetHashCode this way
Initialize CollisionRules
Handle small network files from different file systems this way?
When deserializing a GameObject create components in a try/catch and log an error if it fails. If no component could be created, add a missing component. Fixes not being able to open a prefab if there's an error in the constructor of a component. Closes Facepunch/sbox-issues#4397
Add Package.FileSize (MB) ( Closes Facepunch/sbox-issues#4908 )
Add PhysicsWorld.CollisionRules getter. Delete ServerConfig. Update collision rules json on world if hash changes before physics step. Project Settings (.config) are networked via Small Network Files - can react to changes
Ignore packets from non-host until we're fully connected ( Fixes Facepunch/sbox-issues#1595 )
Add Spawn Pickup Chance variable to Breakable prefab (awesome)
When calling NetworkSpawn we break from prefabs in all of our ancestors ( Fixes Facepunch/sbox-issues#5046 )
Added screen shake effect when near an explosion from a HE grenade with same falloff applied to damage for intensity
Fix merge conflict in player prefab
Unsubscribe from OnTeamChanged in PlayerId.OnDestroy
Add a priority of 10 to ChangeAttribute. Change logic will be done before Sync Var logic, ensures we can get the old value properly. This should fix recursion in change callback.
Add Priority to CodeGeneratorAttribute - allows you to specify priority. Higher priority means the target method/property is wrapped first.
Wrap SendSpawnConfirmation call in !IsProxy check so we every player doesn't confirm it
Check valid scene in SceneNetworkSystem message handlers
In OnIsDeployedPropertyChanged don't update deploy state if OnStart hasn't been called yet (be nice to have a property on Component to know if this is the case, maybe we can expose _startCalled)
Don't need to clear interpolation when cloning these prefabs in fixed update now
Don't interpolate when setting local transform within fixed update if the GameObject isn't enabled. Fixes trying to interpolate to initial position when cloning GameObjects in fixed update, but really we need a way to say "was the game object created this frame" and if it was then don't interpolate.
Clear interpolation properly and don't apply new interpolation if transform update received over network with clear interpolation flag
Another minor fix
Fix NRE when melee attacking someone due to hitbox being null
Some UI NRE fixes (in cases when a player just joined and UI tries to use GameUtils.LocalPlayer before it exists)
Better weapon Deploy/Holster logic + use IDeploymentListener to set current weapon avoid Components.GetAll being used A LOT
Some fixes + swap all instances of using Query=true with a change callback attribute
Flush network updates before send RPCs (#1594)
* Flush network updates before send RPCs
* Keep track of potential pending network updates to flush for RPCs
* Make sure to unregister for update after sending
* Add some documentation
Make sure to unregister for update after sending
Keep track of potential pending network updates to flush for RPCs
If grenade is holstered and state is not thrown, set state to idle
Throw grenades owned by thrower - do damage on host
Thrown grenades don't collide with players for now - they can be pushed through the ground if you stand on them
If guid is empty for connection don't print left the game log (make a note to investigate why)
Add drop on disconnect for C4. Add WeaponData.DropOnDisconnect set it to true for C4
Don't pickup weapons if we're not alive yet
Add TimeSinceLastRespawn for player and use that as well to determine if weapon can be auto picked up
Switch weapons with mouse wheel
Fix NRE in RadioSounds if there's no sounds
Fix team radio sound chat message being sent to people on other team
Flush network updates before send RPCs
Add deployment listener for weapon - recoil func can use that to cancel reloading when holstered. Cache Weapon for funcs in awake.
Use id again here makes no difference - remote player just cant seem to find door sounds either way
It could be that the resource or SoundHandle isn't valid here (version mismatch?)
Don't play deploy effects if we're creating the view model because we're spectating
Changes to how initial state is handled on player spawn (better this way for now to avoid x2 RPCs after initial player network spawn). Fix bots floating in the air.
If weapon becomes undeployed while reloading, cancel reloading
We are spectating when we die
Fix missing scss error - some cleanup... make IsSpecating a property on PlayerController instead of checking for life state dead, set it to false when respawning. I think this'll fix stuck in spectating mode (hunch). Right now Sync var state is usually sent after RPCs, I have a PR to queue RPCs to be sent at end of network tick so state should always be up to date when RPCs are received but its WIP
Start hooking up smoke grenade (just need effect). Implement IsPurchasable on WeaponData. Smoke grenade is not purchasable right now
Network TimeSinceDefuseStart - fixes progress bar on defusing
Gotta do auto-crouch when planting this way because tags aren't networked like that (so only host would auto crouch when planting) - use the tag "planting" on the weapon because that is bound to IsPlanting (host synchronized var)
Fix a connection crash when planting bomb because can't [Sync] a component (needs better handling at s&box level)
Fix door sounds - host plays sounds via RPC
When you throw a grenade, try to switch to weapons in the following order: Primary, Secondary, etc instead of just switching to (usually) the knife
Use GiveCash with negative value instead of set Balance directly (dunno how this worked as setter is private?!)
Force on explosions. Fix networking issues with grenades - properly remove grenade (on host) after throw. Only update explosion logic on host then broadcast explode
Make sure special allocated weapons are removed at round start for everyone but the target player. Don't make a new C4 for example and drop it