1,090 Commits over 1,280 Days - 0.04cph!
Add new Interpolation stage - the updates need to happen at the right point. Clear interpolation if interpolation isn't enabled and we receive a transform update
Add InterpolationSystem (GameObjectSystem) - update GameTransform to Add/Remove GameObjects from this system as appropriate
Add overloads for filtering RPC recipients based on a predicate
Test
Clean up - use TransformInterpolate class
Can't modify transform if we're a network object root and a proxy - we must stay true to network transform target
Hook up Interpolation enable/disable from Inspector. When Owner calls ClearInterpolation, set a bit on the update msg to have other clients do so as well. Hook up Network.Interpolation and Enable/DisableInterpolation() on the accessor.
Fix to allow interp property to be set by GameObjectHeader
Serialize the interpolation bool with GameObject
Combination of fixed update interpolator and networked interpolation buffer. Working nicely
Some cleanup
Some extra docs + let's call it Query to match the other class
Use Time.Now
Restore backward compat LerpTo
Cull after, ensure move direct to last tx if query out of time but entries remaining
Fix formatting
Tiny tidyup
RPC in log for consistency
Add single Connection overloads
Same logic for static Rpcs
Update documentation
Add recipient filter struct, type, and Rpc.FilterOnly and Rpc.AllExcept methods
Update documentation
Change filtertype options
Move to Connection.Filter. Can pass optional filter to Broadcast. Use this for Rpcs with current filter.
More docs
Ensure can't use different RPC attributes together, doesn't make sense
Add some more documentation to the other RPC attributes
Implement MethodArguments attribute, use it for UnicastAttribute ensure that first parameter is Connection
Cull after, ensure move direct to last tx if query out of time but entries remaining
Restore backward compat LerpTo
Some extra docs + let's call it Query to match the other class
Test
Clean up - use TransformInterpolate class
Can't modify transform if we're a network object root and a proxy - we must stay true to network transform target
Hook up Interpolation enable/disable from Inspector. When Owner calls ClearInterpolation, set a bit on the update msg to have other clients do so as well. Hook up Network.Interpolation and Enable/DisableInterpolation() on the accessor.
Fix to allow interp property to be set by GameObjectHeader
Serialize the interpolation bool with GameObject
Combination of fixed update interpolator and networked interpolation buffer. Working nicely
Combination of fixed update interpolator and networked interpolation buffer. Working nicely
Serialize and Deserialize Scene properties such as Time Scale, Fixed Update Frequency, Threaded Animation... joining clients will now have correct values for the Scene. These don't replicate when changed after that though. Fixes Facepunch/sbox-issues#4483
When creating networked object from remote (networked), wrap Deserialize and NetworkSpawnRemote in CallbackBatch so that _net is initialized before OnAwake is called. Fixes Facepunch/sbox-issues#4950
Use StringTable.Remove instead of StringTable.Entries.Remove when removing Connection from ConnectionInfoManager. Fixes Facepunch/sbox-issues#4983
Test
Clean up - use TransformInterpolate class
Can't modify transform if we're a network object root and a proxy - we must stay true to network transform target
Hook up Interpolation enable/disable from Inspector. When Owner calls ClearInterpolation, set a bit on the update msg to have other clients do so as well. Hook up Network.Interpolation and Enable/DisableInterpolation() on the accessor.
Fix to allow interp property to be set by GameObjectHeader
Serialize the interpolation bool with GameObject
Specify in documentation that NetPermission.OwnerOnly works the same as NetPermission.HostOnly for static actions.
Fixed reading String Table snapshot that has an entry with 0 elements throwing an exception. Instead, ByteStream.ReadArray should return null (empty span) if it has a length of 0. Added a test to prove the bug. Fixes Facepunch/sbox-issues#5357
Serialize Component FullName instead of ClassName. Fixes cases where two components with the same name exist in different namespaces, sometimes the wrong one will be serialized. Fully backwards compatible. Fixes Facepunch/sbox-issues#5331
Test
Clean up - use TransformInterpolate class
Can't modify transform if we're a network object root and a proxy - we must stay true to network transform target
Hook up Interpolation enable/disable from Inspector. When Owner calls ClearInterpolation, set a bit on the update msg to have other clients do so as well. Hook up Network.Interpolation and Enable/DisableInterpolation() on the accessor.
Fix to allow interp property to be set by GameObjectHeader
Serialize the interpolation bool with GameObject
Serialize the interpolation bool with GameObject
Fix to allow interp property to be set by GameObjectHeader
Hook up Interpolation enable/disable from Inspector. When Owner calls ClearInterpolation, set a bit on the update msg to have other clients do so as well. Hook up Network.Interpolation and Enable/DisableInterpolation() on the accessor.
Can't modify transform if we're a network object root and a proxy - we must stay true to network transform target
Test
Clean up - use TransformInterpolate class
Clean up - use TransformInterpolate class
Fixed NetPermission not working for static Rpcs (Fixes Facepunch/sbox-issues#5188)
Fix failing test, use float.PositiveInfinity not -1
NetList implements IList, IList<T>
NetDictionary implements IDictionary, IDictionary<TKey,TValue>
Avoid collection modified error in NetworkPrune (Fixes Facepunch/sbox-issues#5280)