mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
fix: don't apply any hybrid rpcs in host mode, fixes overwriting client's data points
This commit is contained in:
parent
6ece0c7d71
commit
fa53191b6e
@ -338,6 +338,11 @@ void RpcServerToClientBaseline_PositionRotation(byte baselineTick, Vector3 posit
|
|||||||
// ignore if this object is owned by this client.
|
// ignore if this object is owned by this client.
|
||||||
if (IsClientWithAuthority) return;
|
if (IsClientWithAuthority) return;
|
||||||
|
|
||||||
|
// host mode: baseline Rpc is also sent through host's local connection and applied.
|
||||||
|
// applying host's baseline as last deserialized would overwrite the owner client's data and cause jitter.
|
||||||
|
// in other words: never apply the rpcs in host mode.
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
// save last deserialized baseline tick number to compare deltas against
|
// save last deserialized baseline tick number to compare deltas against
|
||||||
lastDeserializedBaselineTick = baselineTick;
|
lastDeserializedBaselineTick = baselineTick;
|
||||||
lastDeserializedBaselinePosition = position;
|
lastDeserializedBaselinePosition = position;
|
||||||
@ -358,6 +363,11 @@ void RpcServerToClientBaseline_Position(byte baselineTick, Vector3 position)
|
|||||||
// ignore if this object is owned by this client.
|
// ignore if this object is owned by this client.
|
||||||
if (IsClientWithAuthority) return;
|
if (IsClientWithAuthority) return;
|
||||||
|
|
||||||
|
// host mode: baseline Rpc is also sent through host's local connection and applied.
|
||||||
|
// applying host's baseline as last deserialized would overwrite the owner client's data and cause jitter.
|
||||||
|
// in other words: never apply the rpcs in host mode.
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
// save last deserialized baseline tick number to compare deltas against
|
// save last deserialized baseline tick number to compare deltas against
|
||||||
lastDeserializedBaselineTick = baselineTick;
|
lastDeserializedBaselineTick = baselineTick;
|
||||||
lastDeserializedBaselinePosition = position;
|
lastDeserializedBaselinePosition = position;
|
||||||
@ -377,6 +387,11 @@ void RpcServerToClientBaseline_Rotation(byte baselineTick, Quaternion rotation)
|
|||||||
// ignore if this object is owned by this client.
|
// ignore if this object is owned by this client.
|
||||||
if (IsClientWithAuthority) return;
|
if (IsClientWithAuthority) return;
|
||||||
|
|
||||||
|
// host mode: baseline Rpc is also sent through host's local connection and applied.
|
||||||
|
// applying host's baseline as last deserialized would overwrite the owner client's data and cause jitter.
|
||||||
|
// in other words: never apply the rpcs in host mode.
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
// save last deserialized baseline tick number to compare deltas against
|
// save last deserialized baseline tick number to compare deltas against
|
||||||
lastDeserializedBaselineTick = baselineTick;
|
lastDeserializedBaselineTick = baselineTick;
|
||||||
lastDeserializedBaselineRotation = rotation;
|
lastDeserializedBaselineRotation = rotation;
|
||||||
@ -394,6 +409,11 @@ void RpcServerToClientDelta_PositionRotation(byte baselineTick, Vector3 position
|
|||||||
// ignore if this object is owned by this client.
|
// ignore if this object is owned by this client.
|
||||||
if (IsClientWithAuthority) return;
|
if (IsClientWithAuthority) return;
|
||||||
|
|
||||||
|
// host mode: baseline Rpc is also sent through host's local connection and applied.
|
||||||
|
// applying host's baseline as last deserialized would overwrite the owner client's data and cause jitter.
|
||||||
|
// in other words: never apply the rpcs in host mode.
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
// debug draw: delta
|
// debug draw: delta
|
||||||
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
|
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
|
||||||
|
|
||||||
@ -408,6 +428,11 @@ void RpcServerToClientDelta_Position(byte baselineTick, Vector3 position)
|
|||||||
// ignore if this object is owned by this client.
|
// ignore if this object is owned by this client.
|
||||||
if (IsClientWithAuthority) return;
|
if (IsClientWithAuthority) return;
|
||||||
|
|
||||||
|
// host mode: baseline Rpc is also sent through host's local connection and applied.
|
||||||
|
// applying host's baseline as last deserialized would overwrite the owner client's data and cause jitter.
|
||||||
|
// in other words: never apply the rpcs in host mode.
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
// debug draw: delta
|
// debug draw: delta
|
||||||
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
|
if (debugDraw) Debug.DrawLine(position, position + Vector3.up, Color.white, 10f);
|
||||||
|
|
||||||
@ -422,6 +447,11 @@ void RpcServerToClientDelta_Rotation(byte baselineTick, Quaternion rotation)
|
|||||||
// ignore if this object is owned by this client.
|
// ignore if this object is owned by this client.
|
||||||
if (IsClientWithAuthority) return;
|
if (IsClientWithAuthority) return;
|
||||||
|
|
||||||
|
// host mode: baseline Rpc is also sent through host's local connection and applied.
|
||||||
|
// applying host's baseline as last deserialized would overwrite the owner client's data and cause jitter.
|
||||||
|
// in other words: never apply the rpcs in host mode.
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
OnServerToClientDeltaSync(baselineTick, Vector3.zero, rotation);//, scale);
|
OnServerToClientDeltaSync(baselineTick, Vector3.zero, rotation);//, scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user