private UnserializeModeTransform ( NetworkReader reader, bool initialState ) : void | ||
reader | NetworkReader | |
initialState | bool | |
return | void |
private void UnserializeModeTransform(NetworkReader reader, bool initialState)
{
if (base.hasAuthority)
{
reader.ReadVector3();
if (this.syncRotationAxis != AxisSyncMode.None)
{
UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
}
}
else if (base.isServer && (this.m_ClientMoveCallback3D != null))
{
Vector3 position = reader.ReadVector3();
Vector3 zero = Vector3.zero;
Quaternion identity = Quaternion.identity;
if (this.syncRotationAxis != AxisSyncMode.None)
{
identity = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
}
if (this.m_ClientMoveCallback3D(ref position, ref zero, ref identity))
{
base.transform.position = position;
if (this.syncRotationAxis != AxisSyncMode.None)
{
base.transform.rotation = identity;
}
}
}
else
{
base.transform.position = reader.ReadVector3();
if (this.syncRotationAxis != AxisSyncMode.None)
{
base.transform.rotation = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression);
}
}
}
public static void HandleTransform(NetworkMessage netMsg) { NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId(); GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId); if (gameObject == null) { if (LogFilter.logError) { Debug.LogError("HandleTransform no gameObject"); } return; } NetworkTransform component = gameObject.GetComponent <NetworkTransform>(); if (component == null) { if (LogFilter.logError) { Debug.LogError("HandleTransform null target"); } } else if (!component.localPlayerAuthority) { if (LogFilter.logError) { Debug.LogError("HandleTransform no localPlayerAuthority"); } } else if (netMsg.conn.clientOwnedObjects == null) { if (LogFilter.logError) { Debug.LogError("HandleTransform object not owned by connection"); } } else if (netMsg.conn.clientOwnedObjects.Contains(networkInstanceId)) { switch (component.transformSyncMode) { case TransformSyncMode.SyncNone: return; case TransformSyncMode.SyncTransform: component.UnserializeModeTransform(netMsg.reader, initialState: false); break; case TransformSyncMode.SyncRigidbody3D: component.UnserializeMode3D(netMsg.reader, initialState: false); break; case TransformSyncMode.SyncRigidbody2D: component.UnserializeMode2D(netMsg.reader, initialState: false); break; case TransformSyncMode.SyncCharacterController: component.UnserializeModeCharacterController(netMsg.reader, initialState: false); break; } component.m_LastClientSyncTime = Time.time; } else if (LogFilter.logWarn) { Debug.LogWarning("HandleTransform netId:" + networkInstanceId + " is not for a valid player"); } }