public static float Evaluate(float time, Keyframe lhs, Keyframe rhs) { float dx = rhs.time - lhs.time; float m0; float m1; float t; if (dx != 0.0f) { t = (time - lhs.time) / dx; m0 = lhs.outTangent * dx; m1 = rhs.inTangent * dx; } else { t = 0.0f; m0 = 0; m1 = 0; } return(Hermite.Evaluate(t, lhs.value, m0, m1, rhs.value)); }
/// <summary> /// Returns world space position of point evaluated on t. /// </summary> /// <param name="t"></param> /// <returns></returns> public Vector3 GetNonUniformPoint(float t) { return(transform.TransformPoint(m_Hermite.Evaluate(t))); }