1,298 Commits over 1,371 Days - 0.04cph!
Re-instate these long-obsolete methods for now because something is still using one of them :(
Ensure last update is sent properly when ownership changes (Fixes Facepunch/sbox-issues#6394)
Move ChangeAttribute back to Sandbox.System but put the callback in Sandbox.Game so we don't break anything.
Upgrade ChangeAttribute to support any property not just for [ConVar], so it now works with [Sync], too. Move ChangeAttribute to Sandbox.Game so it can use TypeLibrary for CodeGenerator wrapped property stuff. Resolves Facepunch/sbox-issues#6386
More accurately synchronize Time.Now between clients. Fixes Facepunch/sbox-issues#6326 (at least with the repro they attached.)
Fixed Sync attribute / CodeGenerator wrapped properties ignoring existing modifiers (Fixes Facepunch/sbox-issues#5867)
Delta Snapshot Slots (#1660)
Test fix for "Unknown Player" has left the game
Put this warning behind a network debug check
Testing disable Nagle's algorithm on snapshots - it may caused delayed snapshots
Some final refactoring of DeltaSnapshot/DeltaSnapshotContainer
Further optimization - this is quicker than WriteArray/ReadArray
Optimization here to only re-serialize changes for snapshots
Optimize lookups - fix bug with reconnecting clients not processing snapshot
Clean up - make things more explicit in seperation of snapshot supported network table entries
Remove this obsolete - it's been obsolete forever
Stash all this work so I can make ubre happy
Stash this as well first
Custom (INetworkCustom such as NetList/NetDictionary) not including in delta snapshot for now as they handle this sort of thing themselves. Stepping stone
++
Logs
No wonder this wasn't getting received
Don't log these now
Test
Remove this now
Go on server time
Test
More tests
Some cleaning
Compress test
Remove for comparison
Pack them up
Some cleanup
Force a single delta snapshot when owner changes to simulate old behavior
Interp test
Revert that
Force a single delta snapshot when owner changes to simulate old behavior
Stash all this work so I can make ubre happy
Stash this as well first
Custom (INetworkCustom such as NetList/NetDictionary) not including in delta snapshot for now as they handle this sort of thing themselves. Stepping stone
++
Logs
No wonder this wasn't getting received
Don't log these now
Test
Remove this now
Go on server time
Test
More tests
Some cleaning
No wonder this wasn't getting received
Custom (INetworkCustom such as NetList/NetDictionary) not including in delta snapshot for now as they handle this sort of thing themselves. Stepping stone
Only run logic in SceneNetworkSystem.OnBecameHost if scene is valid - we could just be in a lobby/party but not in-game
Stash all this work so I can make ubre happy
Stash this as well first
If GameObject isn't valid when trying to call an RPC, call the method anyway but only if we can determine that we have permission to do so - this way we can ensure RPC methods are still not called when they shouldn't be for any given user. (Fixes Facepunch/sbox-issues#6270)
Fixed an issue where if you're Small Fish and disconnect yourself from a created lobby immediately by calling GameNetworkSystem.Disconnect in OnLoad, a TCP socket would remain open preventing you from starting a lobby again. This is because Disconnect is called before the asynchronous method CreateLobbyAsync has finished, so it goes and adds/creates new sockets that never get closed.
Stash all this work so I can make ubre happy
Idea for custom writing / reading data to snapshot per component (if it overrides those methods)
Some docs
Explicit ISnapshotWriter interface
Read snapshot immediately - no need for this prop
Dispose ByteStream properly
Rename to INetworkSnapshot
Component.INetworkSnapshot - improve some docs
Component.INetworkSnapshot - improve some docs
Idea for custom writing / reading data to snapshot per component (if it overrides those methods)
Some docs
Explicit ISnapshotWriter interface
Read snapshot immediately - no need for this prop
Dispose ByteStream properly
Rename to INetworkSnapshot
Rename to INetworkSnapshot
Dispose ByteStream properly
Read snapshot immediately - no need for this prop