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); } }
/// <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); }
/// <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); }
/// <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); }