public override void ModifyPose(ref RigidPose pose, Transform origin) { if (firstPose) { firstPose = false; } else { var deltaTime = Time.unscaledDeltaTime; if (deltaTime < duration) { var easedPose = RigidPose.Lerp(prevPose, pose, curve.Evaluate(deltaTime / duration)); if (!easePositionX || !easePositionY || !easePositionZ) { var originPos = pose.pos; var easedPos = easedPose.pos; if (!easePositionX) { easedPos.x = originPos.x; } if (!easePositionY) { easedPos.y = originPos.y; } if (!easePositionZ) { easedPos.z = originPos.z; } easedPose.pos = easedPos; } if (!easeRotationX || !easeRotationY || !easeRotationZ) { var originEuler = pose.rot.eulerAngles; var easedEuler = easedPose.rot.eulerAngles; if (!easeRotationX) { easedEuler.x = originEuler.x; } if (!easeRotationY) { easedEuler.y = originEuler.y; } if (!easeRotationZ) { easedEuler.z = originEuler.z; } easedPose.rot = Quaternion.Euler(easedEuler); } pose = easedPose; } } prevPose = pose; }