-
Notifications
You must be signed in to change notification settings - Fork 436
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: ClientNetworkTransform ownership change with half precision synchronization issues [MTT-7271] #2696
fix: ClientNetworkTransform ownership change with half precision synchronization issues [MTT-7271] #2696
Conversation
This resolves the issue with client authoritative network transforms and the random "noise" that would occur when transitioning ownership from a remote client back to the host-server. - Latent messages from the client would still be received and processed after ownership changed. - Ownership changed messages would proceed the NetworkTransform initialization state update message. Now ownership changed messages precede the NetworkTransform initialization state update message. - Clients could sometimes have the same network tick value even when the tick event had triggered, which for NetworkDeltaPosition would cause dropped state updates.
This is another bug in the validation test suite where removing an override of a virtual method that can still be overridden will throw an API validation error.
@@ -2510,24 +2542,25 @@ public override void OnDestroy() | |||
} | |||
|
|||
/// <inheritdoc/> | |||
public override void OnGainedOwnership() | |||
public override void OnLostOwnership() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leaving these here otherwise the validation test will fail even though a user can still override both methods (see OnGainedOwnership too).
@@ -588,6 +588,7 @@ private void AllChildrenLocalTransformValuesMatch(bool useSubChild) | |||
success = WaitForConditionOrTimeOutWithTimeTravel(AllChildObjectInstancesHaveChild); | |||
Assert.True(success, "Timed out waiting for all instances to have parented a child!"); | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both minor tweaks to this test will help prevent random edge case precision validation errors.
This PR resolves an issue with owner to host-server ownership transfer where the synchronization could get corrupted by noise due to:
fix: #2628
Changelog
Testing and Documentation