public FrameContact GetContactPointInTime(int index, float currentLocalTime, float animSpeedMulti = 1f)
        {
            int   backFrame  = Mathf.FloorToInt(currentLocalTime / frameTime);
            int   nextFrame  = backFrame == (frames.Count - 1) ? frames.Count - 1 : backFrame + 1;
            float lerpFactor = (currentLocalTime - backFrame * frameTime) / frameTime;

            return(FrameContact.Lerp(
                       this[backFrame].contactPoints[index],
                       this[nextFrame].contactPoints[index],
                       lerpFactor
                       ));
        }
        public void GetContactPoints(
            ref List <FrameContact> points,
            float currentLocalTime,
            float animSpeedMulti = 1f
            )
        {
            int   backFrame  = Mathf.FloorToInt(currentLocalTime / frameTime);
            int   nextFrame  = backFrame == (frames.Count - 1) ? frames.Count - 1 : backFrame + 1;
            float lerpFactor = (currentLocalTime - backFrame * frameTime) / frameTime;

            points.Clear();

            for (int i = 0; i < this[backFrame].contactPoints.Length; i++)
            {
                points.Add(FrameContact.Lerp(
                               this[backFrame].contactPoints[i],
                               this[nextFrame].contactPoints[i],
                               lerpFactor
                               ));
            }
        }