Example #1
0
        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;
        }