public void SerialiseObject(AnimatorState state, AnimatorMotion mo = null) { SerializableMotion serialisedBo = new SerializableMotion(); if (mo == null)//initial blend object will be patched in on first call { mo = state.motion; } if (mo is AnimatorClip) { AnimatorClip anim = mo as AnimatorClip; serialisedBo.isAnimation = true; serialisedBo.name = anim.data.clipName; serialisedBo.animatorData = anim.data; serialisedBo.childCount = 0; serialisedBo.indexOfFirstChild = state.serialisedMotions.Count + 1; state.serialisedMotions.Add(serialisedBo); } if (mo is AnimatorBlendTree) { AnimatorBlendTree blend = mo as AnimatorBlendTree; serialisedBo.isAnimation = false; serialisedBo.name = blend.name;//string.Format("Tree of {0}", blend.motionCount); serialisedBo.positions = blend.positions; serialisedBo.blendParameterIndex = blend.blendParameterIndex; serialisedBo.blendParameterIndexY = blend.blendParameterIndexY; serialisedBo.weightTable = SerializeWeightTable(blend.weightTable); serialisedBo.resolution = blend.resolution; serialisedBo.childCount = blend.motionCount; serialisedBo.indexOfFirstChild = state.serialisedMotions.Count + 1; state.serialisedMotions.Add(serialisedBo); foreach (var child in blend.motions) { SerialiseObject(state, child); } } }
/// <summary> /// Initialize the default values. /// </summary> public void OnEnable() { m_AnimatorMotion = target as AnimatorMotion; m_Duration = m_AnimatorMotion.XPosition.keys[m_AnimatorMotion.XPosition.length - 1].time; }