4,603 Commits over 1,310 Days - 0.15cph!
Call TransformChanged() once again in InterpolateFixedUpdate
Clear pending updates in SceneNetworkUpdate too
Make sure we use TargetLocal in any transform changed callbacks called from within interpolation phase to fix physics bodies using wrong values. Add internal InterpolationWorld getter in GameTransform and use that in ModelRenderer OnTransformChanged for updating scene object position (fixes broken interp.)
PhysicsWorld.CollisionRules Refactor - Project Settings Small Network Files Support (#1604)
* 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
* Do GetHashCode this way
* Initialize CollisionRules
* Handle small network files from different file systems this way?
* Fix
* Fix documentation
* Reset config files
* Kind of genericize SmallNetworkFiles - push / add / remove files from it externally - mount its MemoryFileSystem externally as well to desired file system
* Fix - but obviously it can't be done this way it's absolutely awful
* Add all files from network when mounting on client side
* Method name update
* Remove some duplication
* Cleanup
* Fix inverted condition
* Unnecessary arg
* ToHashCode
* ReadWithFallback will return new T() if package is null too
* Store CollisionRules from Project Settings in ProjectSettings static class - update it when project settings change. Physics worlds using this reference should update automatically
* Call ProjectSettings.Reset in ResetEnvironment
* Clean up
* Swap these
Call ProjectSettings.Reset in ResetEnvironment
Store CollisionRules from Project Settings in ProjectSettings static class - update it when project settings change. Physics worlds using this reference should update automatically
ReadWithFallback will return new T() if package is null too
Add all files from network when mounting on client side
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