private void UpdateRemoteNetRef(NetRef<object> obj)
{
valueGetter = obj.Value;
bool finalize = false;
if (valueGetter is float)
{
obj.Value = (float)Mathf.Lerp((float)valueGetter, (float)obj.LerpTo, lerpT);
if (Math.Abs((float)obj.LerpTo - (float)valueGetter) <= lerpStopOffset)
finalize = true;
}
else if (valueGetter is double)
{
obj.Value = BeardedMath.Lerp((double)valueGetter, (double)obj.LerpTo, lerpT);
if (Math.Abs((double)obj.LerpTo - (double)valueGetter) <= lerpStopOffset)
finalize = true;
}
else if (valueGetter is Vector2)
{
obj.Value = Vector2.Lerp((Vector2)valueGetter, (Vector2)obj.LerpTo, lerpT);
if (Vector2.Distance((Vector2)valueGetter, (Vector2)obj.LerpTo) <= lerpStopOffset)
finalize = true;
}
else if (valueGetter is Vector3)
{
obj.Value = Vector3.Lerp((Vector3)valueGetter, (Vector3)obj.LerpTo, lerpT);
if (Vector3.Distance((Vector3)valueGetter, (Vector3)obj.LerpTo) <= lerpStopOffset)
finalize = true;
}
else if (valueGetter is Vector4)
{
obj.Value = Vector4.Lerp((Vector4)valueGetter, (Vector4)obj.LerpTo, lerpT);
if (Vector4.Distance((Vector4)valueGetter, (Vector4)obj.LerpTo) <= lerpStopOffset)
finalize = true;
}
else if (valueGetter is Quaternion)
{
obj.Value = Quaternion.Slerp((Quaternion)valueGetter, (Quaternion)obj.LerpTo, lerpT);
if (Quaternion.Angle((Quaternion)valueGetter, (Quaternion)obj.LerpTo) <= lerpAngleStopOffset)
finalize = true;
}
else
finalize = true;
if (finalize)
{
obj.AssignToLerp();
obj.Callback(this, true);
}
}