Exemple #1
0
    public Vector3 GetVelocity(float t, bool transformToWorldSpace)
    {
        int ii;

        if (t >= 1f)
        {
            t  = 1f;
            ii = m_points.Length - 4;
        }
        else
        {
            t   = Mathf.Clamp01(t) * CurveCount;
            ii  = (int)t;
            t  -= ii;
            ii *= 3;
        }

        Vector3 outputVelocity;

        if (transformToWorldSpace)
        {
            outputVelocity = transform.TransformPoint(BezHelper.GetFirstDerivative(
                                                          m_points[ii], m_points[ii + 1], m_points[ii + 2], m_points[ii + 3], t))
                             - transform.position;
        }
        else
        {
            outputVelocity = BezHelper.GetFirstDerivative(
                m_points[ii], m_points[ii + 1], m_points[ii + 2], m_points[ii + 3], t)
                             - transform.position;
        }
        return(outputVelocity);
    }
Exemple #2
0
    public Vector3 GetPoint(float t, bool pointInWorldSpace)
    {
        int ii;

        if (t >= 1f)
        {
            t  = 1f;
            ii = m_points.Length - 4;
        }
        else
        {
            t   = Mathf.Clamp01(t) * CurveCount;
            ii  = (int)t;
            t  -= ii;
            ii *= 3;
        }

        Vector3 point;

        if (pointInWorldSpace)
        {
            point = transform.TransformPoint(BezHelper.GetBezPoint(
                                                 m_points[ii], m_points[ii + 1], m_points[ii + 2], m_points[ii + 3], t));
        }
        else
        {
            point = BezHelper.GetBezPoint(
                m_points[ii], m_points[ii + 1], m_points[ii + 2], m_points[ii + 3], t);
        }

        return(point);
    }