public void CollectState(NetStream stream) { if (syncPosition == NetBodySyncPosition.Relative) { NetVector3.Quantize(base.transform.position - relativeTo.position - basePos, posRange, posfull).Write(stream); } else if (syncPosition == NetBodySyncPosition.Absolute || syncPosition == NetBodySyncPosition.Local || syncPosition == NetBodySyncPosition.World) { NetVector3.Quantize(((syncPosition != NetBodySyncPosition.Local) ? base.transform.position : base.transform.localPosition) - basePos, posRange, posfull).Write(stream); } if (syncRotation == NetBodySyncRotation.Relative) { NetQuaternion netQuaternion = collectedRot = NetQuaternion.Quantize(baseRotInv * Quaternion.Inverse(relativeTo.rotation) * base.transform.rotation, rotfull); netQuaternion.Write(stream); } else if (syncRotation == NetBodySyncRotation.Absolute || syncRotation == NetBodySyncRotation.Local || syncRotation == NetBodySyncRotation.World) { NetQuaternion netQuaternion2 = collectedRot = NetQuaternion.Quantize(baseRotInv * ((syncRotation != NetBodySyncRotation.Local) ? base.transform.rotation : base.transform.localRotation), rotfull); netQuaternion2.Write(stream); } else if (syncRotation == NetBodySyncRotation.EulerX || syncRotation == NetBodySyncRotation.EulerY || syncRotation == NetBodySyncRotation.EulerZ) { float value; switch (syncRotation) { case NetBodySyncRotation.EulerX: value = 0f - Math3d.SignedVectorAngle(baseRotInv * base.transform.localRotation * Vector3.up, Vector3.up, Vector3.right); break; case NetBodySyncRotation.EulerY: value = 0f - Math3d.SignedVectorAngle(baseRotInv * base.transform.localRotation * Vector3.forward, Vector3.forward, Vector3.up); break; case NetBodySyncRotation.EulerZ: value = 0f - Math3d.SignedVectorAngle(baseRotInv * base.transform.localRotation * Vector3.right, Vector3.right, Vector3.forward); break; default: throw new InvalidOperationException(); } collectedEuler = value; eulerEncoder.CollectState(stream, value); } if (syncLocalScale) { NetVector3.Quantize(base.transform.localScale, posRange, posfull).Write(stream); } }
public void CollectState(NetStream stream) { encoder.CollectState(stream, input.value); }