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