Exemple #1
0
        public static void DrawPathGizmo(SplineBase path, Color pathColor, float start, float end, SplineBase.PositionUnits units, float offset, bool canDrawMin = true, bool canDrawMax = true)
        {
            // Draw the path
            Color colorOld = Gizmos.color;

            Gizmos.color = pathColor;
            float   step    = 1f / path.Resolution;
            Vector3 lastPos = path.EvaluatePositionAtUnit(start, units);
            Vector3 lastW   = (path.EvaluateOrientationAtUnit(start, units)
                               * Vector3.right) * path.Appearances.Width * offset;

            Vector3 p0          = lastPos;
            Vector3 p1          = lastW;
            int     currentStep = 0;

            for (float t = start + step; t <= end + step / 2; t += step)
            {
                Vector3    p = path.EvaluatePositionAtUnit(t, units);
                Quaternion q = path.EvaluateOrientationAtUnit(t, units);
                Vector3    w = (q * Vector3.right) * path.Appearances.Width * offset;

                p0 = p - w;
                p1 = p + w;

                if (currentStep == 0 && canDrawMin)
                {
                    Gizmos.DrawLine(p0, p1);
                }
                Gizmos.DrawLine(lastPos - lastW, p - w);
                Gizmos.DrawLine(lastPos + lastW, p + w);
#if false
                // Show the normals, for debugging
                Gizmos.color = Color.red;
                Vector3 y = (q * Vector3.up) * path.Appearances.Width / 4;
                Gizmos.DrawLine(p, p + y);
                Gizmos.color = pathColor;
#endif
                lastPos = p;
                lastW   = w;
                currentStep++;
            }
            if (canDrawMax)
            {
                Gizmos.DrawLine(p0, p1);
            }

            Gizmos.color = colorOld;
        }
Exemple #2
0
 public Vector3 GetPositionFromPoint(int index)
 {
     return(_spline.EvaluatePositionAtUnit(GetWayPoint(index).PathPosition, _positionUnits));
 }
Exemple #3
0
 public Vector3 PositionWithoutOffsetFromSpline(float offset)
 {
     return(SplineBase.EvaluatePositionAtUnit(offset, PositionUnits));
 }