public void Apply(ref SplineUpdateInfo inInfo, Transform inTransform, Space inSpace)
        {
            if (Mode == SplineOrientationMode.Ignore)
            {
                return;
            }

            Axis maskedAxis = DirectionMask & Axis.XYZ;

            if (maskedAxis == 0)
            {
                return;
            }

            Vector3 direction = inInfo.Direction;

            if (maskedAxis != Axis.XYZ)
            {
                if ((DirectionMask & Axis.X) == 0)
                {
                    direction.x = 0;
                }
                if ((DirectionMask & Axis.Y) == 0)
                {
                    direction.y = 0;
                }
                if ((DirectionMask & Axis.Z) == 0)
                {
                    direction.z = 0;
                }
            }

            if (Mode == SplineOrientationMode.ThreeD)
            {
                Quaternion dirRot = Quaternion.LookRotation(direction, UpVector);
                if (inSpace == Space.Self)
                {
                    inTransform.localRotation = dirRot;
                }
                else
                {
                    inTransform.rotation = dirRot;
                }
            }
            else if (Mode == SplineOrientationMode.TwoD)
            {
                float dir = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
                if (dir < -180)
                {
                    dir += 360f;
                }

                inTransform.SetRotation(dir, Axis.Z, inSpace);
            }
            else if (CustomCallback != null)
            {
                CustomCallback(inTransform, direction, inSpace);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Generates info about an interpolation along the given spline.
 /// </summary>
 static public void GetUpdateInfo(this ISpline inSpline, float inPercent, out SplineUpdateInfo outInfo)
 {
     GetUpdateInfo(inSpline, inPercent, SplineLerp.Vertex, Curve.Linear, out outInfo);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Generates info about an interpolation along the given spline.
 /// </summary>
 static public void GetUpdateInfo(this ISpline inSpline, float inPercent, SplineLerp inLerpMethod, Curve inSegmentEase, out SplineUpdateInfo outInfo)
 {
     outInfo.Spline    = inSpline;
     outInfo.Percent   = inSpline.TransformPercent(inPercent, inLerpMethod);
     outInfo.Point     = inSpline.GetPoint(outInfo.Percent, inSegmentEase);
     outInfo.Direction = inSpline.GetDirection(outInfo.Percent, inSegmentEase);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Generates info about an interpolation along the given spline.
 /// </summary>
 static public void GetUpdateInfo(this ISpline inSpline, float inPercent, SplineTweenSettings inTweenSettings, out SplineUpdateInfo outInfo)
 {
     GetUpdateInfo(inSpline, inPercent, inTweenSettings.LerpMethod, inTweenSettings.SegmentEase, out outInfo);
 }