public Vector3 GetWorldPoint(int curveIndex, float t)
 {
     if (curveIndex < curves.Count)
     {
         return(transform.TransformPoint(BezierCurves.GetPoint(curves[curveIndex].points, t)));
     }
     else
     {
         Debug.LogError("curveIndex out of bounds! (" + curveIndex + ", number of curves in spline = "
                        + curves.Count + ". Returning Vector3.zero");
         return(Vector3.zero);
     }
 }
Ejemplo n.º 2
0
    private void OnDrawGizmos()
    {
        Vector3 prevPoint = _curve.Points[0];
        Vector3 pt;

        float total = 0;

        float step = 1.0f / 10.0f;

        for (float f = step; f < 1.0f; f += step)
        {
            pt     = _curve.GetPoint(f);
            total += (pt - prevPoint).magnitude;

            Gizmos.DrawLine(prevPoint, pt);
            Gizmos.DrawWireSphere(prevPoint, 0.3f);

            prevPoint = pt;
        }
        Gizmos.DrawWireSphere(prevPoint, 0.3f);

        pt = _curve.GetPoint(1);
    }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns a position on the spline at the given percentage.
        /// </summary>
        public Vector3 GetPosition(float percentage, bool normalized = true)
        {
            if (normalized)
            {
                percentage = Reparam(percentage);
            }

            //evaluate curve:
            CurveDetail curveDetail = GetCurve(percentage);

            //avoid an error in editor usage where this index can be -1:
            if (curveDetail.currentCurve < 0)
            {
                return(Vector3.zero);
            }

            SplineAnchor startAnchor = Anchors[curveDetail.currentCurve];
            SplineAnchor endAnchor   = Anchors[curveDetail.currentCurve + 1];

            return(BezierCurves.GetPoint(startAnchor.Anchor.position, endAnchor.Anchor.position, startAnchor.OutTangent.position, endAnchor.InTangent.position, curveDetail.currentCurvePercentage, true, 100));
        }
Ejemplo n.º 4
0
 public Vector3 GetWorldPoint(float t)
 {
     return(transform.TransformPoint(BezierCurves.GetPoint(points, t)));
 }
Ejemplo n.º 5
0
 public Vector3 GetPoint(float t)
 {
     return(BezierCurves.GetPoint(points, t));
 }