private UnityEngine.HumanPose GetPoseInSubTrackSpace(float time) { // Compute the clapped, padded, search time. float clampTime = Mathf.Clamp(time, 0, Duration); float paddedTime = PaddedClipStartTime + clampTime; float searchTime = paddedTime; // Search through tracks to find subtrack corresponding to current time. AnimTrackBase track = null; for (int i = 0; i < m_SubTracks.Count; i++) { track = m_SubTracks[i]; if (searchTime - track.Duration <= 0) { break; } searchTime -= track.Duration; } // searchTime should be in [0,track.Duration] // Return the pose sampled from the chosen subtrack. return((track != null) ? track.GetPose(searchTime) : new UnityEngine.HumanPose()); // safeguard against null }
public void AddTrack(AnimTrackBase track) { m_SubTracks.Add(track); track.PropertiesChanged += OnSubTrackPropertiesChanged; track.OnValidate(); }