public int GetNumFrames(int animationID) { if (m_Animations == null || animationID >= m_Animations.Length) { return(0); } var animation = m_Animations[animationID]; if (animation.clip == null) { return(0); } var curves = AnimationUtility.GetObjectReferenceCurveBindings(animation.clip); for (int i = 0; i < curves.Length; i++) { if (AnimClipUtils.CheckSpriteCurve(curves[i])) { var keyframes = AnimationUtility.GetObjectReferenceCurve(animation.clip, curves[i]); return(keyframes.Length); } } Debug.LogWarning("No sprite keyframes have been found in the current animation."); return(0); }
void RepairFrameData() { var length = m_targetManager.GetNumFrames(SelectedAnimation); var diff = length - m_targetManager.m_Animations[SelectedAnimation].frameData.Length; if (diff != 0) { var list = new List <HitboxAnimationFrame>(m_targetManager.m_Animations[SelectedAnimation].frameData); while (diff < 0) { list.RemoveAt(list.Count - 1); diff++; } while (diff > 0) { list.Add(new HitboxAnimationFrame { collider = new HitboxColliderData[0], events = new HitboxFrameEventData[0] }); diff--; } m_targetManager.m_Animations[SelectedAnimation].frameData = list.ToArray(); } else { EditorCurveBinding[] curves = AnimationUtility.GetObjectReferenceCurveBindings(m_targetManager.m_Animations[SelectedAnimation].clip); for (int i = 0; i < curves.Length; i++) { if (AnimClipUtils.CheckSpriteCurve(curves[i])) { var keyframes = AnimationUtility.GetObjectReferenceCurve(m_targetManager.m_Animations[SelectedAnimation].clip, curves[i]); for (int j = 0; j < m_targetManager.m_Animations[SelectedAnimation].frameData.Length && j < keyframes.Length; j++) { m_targetManager.m_Animations[SelectedAnimation].frameData[j].time = keyframes[j].time; } } } } }