1,239 Commits over 1,341 Days - 0.04cph!
We could actually interpolate the body transforms on the client like this
Fix transform update delay when Skinned Model Renderer is attached to bone of another Skinned Model Renderer (#1578)
* Fix lag/wobbly update when Skinned Model Renderer is attached to bone of another Skinned Model Renderer
* Use Channel to contain changed transforms, write to that in threads for animation updates, then call transform changed on main thread for them after
Use Channel to contain changed transforms, write to that in threads for animation updates, then call transform changed on main thread for them after
Fix lag/wobbly update when Skinned Model Renderer is attached to bone of another Skinned Model Renderer
Fix lag/wobbly update when Skinned Model Renderer is attached to bone of another Skinned Model Renderer
Only enable motion if we're the owner (or we don't network bodies)
Initial experiment with networked Model Physics
Query game package MaxPlayers when creating a lobby
Initiailize target local with Transform.Zero. SceneUtility.GetPrefabScene never actually saves the cached scene to the var. ( Fixes Facepunch/sbox-issues#5511 )
Independently Interpolated Transform Parts + Other Fixes (#1577)
Call transformchanged in clearinterp
More cleanup, fix offset, make FixedUpdateInterpolation bool internal for now until decide how we wanna expose
Make LerpTo expected behavior - same as Vector3.LerpTo, Rotation.Lerp etc
Everything in this branch - cleanup
GameTransform.FixedUpdateInterpolation (bool) (def: true)
Restore old Rigidbody code, remove RigidbodyInterpolation enum etc. Remove warnings that CharacterController needs to be used in Update (not now)
Expand and expose SystemInfo
* add cpu and ram info to Hardware, expose to api
* Rename Hardware -> SystemInfo, add ProcessorCount
Wrapped method resume will get async keyword when wrapped method has it
Fix tests
Silently term any new children created from children's OnDestroy when clearing scene. Fixes Facepunch/sbox-issues#4855
Rigidbody interpolation mode (def: Interpolate)
Silently term any new children created from children's OnDestroy when clearing scene. Fixes Facepunch/sbox-issues#4855
Wrapped method resume will get async keyword when wrapped method has it
Expand and expose SystemInfo
* add cpu and ram info to Hardware, expose to api
* Rename Hardware -> SystemInfo, add ProcessorCount
Merge branch 'master' into networked-model-physics
Initial experiment with networked Model Physics
Test branch for only interpolating transforms set in Fixed Update for Rigidbody, with backwards compatibility for Character Controller - but output warning when using CharacterController.Move within a Fixed Update context that it should be called within OnUpdate instead. This is all separate to networked transform interpolation which remains untouched.
Test branch for only interpolating transforms set in Fixed Update for Rigidbody, with backwards compatibility for Character Controller - but output warning when using CharacterController.Move within a Fixed Update context that it should be called within OnUpdate instead. This is all separate to networked transform interpolation which remains untouched.
Fixes to restore some old and intended behavior, additional documentation
This shiz is confusing - try this
When copying and pasting GameObjects in the editor - use the world transform instead of the local transform ( Fixes Facepunch/sbox-issues#4514 )
Shapshot -> Snapshot in loading screen ( Fixes Facepunch/sbox-issues#5439 ) 😂
Some clearer documentation
Interpolation v2 (#1516)
* 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
* Add InterpolationSystem (GameObjectSystem) - update GameTransform to Add/Remove GameObjects from this system as appropriate
* Actually enable it
* 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
RPC Filter (#1549)
* 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
* Same logic for static Rpcs
* Add single Connection overloads
* this can be made private
* Fix ambigious docs
* Inverse logic (doh!)
* Use hasvalue etc
* Some fixes
* Remove duplicate docs
* Better docs
* RPC in log for consistency
* Add overloads for filtering RPC recipients based on a predicate
* FilterOnly -> FilterInclude. AllExcept -> FilterExclude. Only one RPC filter can be active at any time
* Add Rpc.Resume. This handles disabling and restoring filter if the Rpc.Caller is us before and after resuming. Use this everywhere.
* Restore the old filter here even if e.Resume() throws
* Early out / cut nesting
* Tidy up
Restore the old filter here even if e.Resume() throws
Add Rpc.Resume. This handles disabling and restoring filter if the Rpc.Caller is us before and after resuming. Use this everywhere.
FilterOnly -> FilterInclude. AllExcept -> FilterExclude. Only one RPC filter can be active at any time
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