示例#1
0
 public void ApplyLerpedState(NetStream state0, NetStream state1, float mix)
 {
     if (syncPosition == NetBodySyncPosition.Relative || syncPosition == NetBodySyncPosition.Absolute || syncPosition == NetBodySyncPosition.Local || syncPosition == NetBodySyncPosition.World)
     {
         Vector3 a      = NetVector3.Read(state0, posfull).Dequantize(posRange);
         Vector3 vector = NetVector3.Read(state1, posfull).Dequantize(posRange);
         if ((a - vector).sqrMagnitude > 15f)
         {
             a = vector;
         }
         Vector3 target = Vector3.Lerp(a, vector, mix);
         ApplyPositionState(target);
     }
     if (syncRotation == NetBodySyncRotation.Relative || syncRotation == NetBodySyncRotation.Absolute || syncRotation == NetBodySyncRotation.Local || syncRotation == NetBodySyncRotation.World)
     {
         Quaternion    a2            = NetQuaternion.Read(state0, rotfull).Dequantize();
         NetQuaternion netQuaternion = appliedRot = NetQuaternion.Read(state1, rotfull);
         Quaternion    b             = netQuaternion.Dequantize();
         Quaternion    target2       = Quaternion.Slerp(a2, b, mix);
         ApplyQuaternionState(target2);
     }
     else if (syncRotation == NetBodySyncRotation.EulerX || syncRotation == NetBodySyncRotation.EulerY || syncRotation == NetBodySyncRotation.EulerZ)
     {
         float diff = eulerEncoder.ApplyLerpedState(state0, state1, mix);
         ApplyEulerState(diff);
     }
     if (body != null)
     {
         Rigidbody rigidbody = body;
         Vector3   vector2   = Vector3.zero;
         body.velocity             = vector2;
         rigidbody.angularVelocity = vector2;
     }
     if (syncLocalScale && (syncPosition == NetBodySyncPosition.Relative || syncPosition == NetBodySyncPosition.Absolute || syncPosition == NetBodySyncPosition.Local || syncPosition == NetBodySyncPosition.World))
     {
         Vector3 a3         = NetVector3.Read(state0, posfull).Dequantize(posRange);
         Vector3 b2         = NetVector3.Read(state1, posfull).Dequantize(posRange);
         Vector3 localScale = Vector3.Lerp(a3, b2, mix);
         base.transform.localScale = localScale;
     }
 }
示例#2
0
 public void ApplyLerpedState(NetStream state0, NetStream state1, float mix)
 {
     output.SetValue(encoder.ApplyLerpedState(state0, state1, mix));
 }