void FindMixers() { m_Mixers.Clear(); m_PoseMixer = AnimationLayerMixerPlayable.Null; m_LayerMixer = AnimationLayerMixerPlayable.Null; m_MotionXPlayable = AnimationMotionXToDeltaPlayable.Null; var playable = m_Output.GetSourcePlayable(); var outputPort = m_Output.GetSourceOutputPort(); if (!playable.IsValid() || outputPort < 0 || outputPort >= playable.GetInputCount()) { return; } var mixer = FindFirstAnimationPlayable(playable.GetInput(outputPort)); Playable motionXPlayable = mixer; if (motionXPlayable.IsPlayableOfType <AnimationMotionXToDeltaPlayable>()) { m_MotionXPlayable = (AnimationMotionXToDeltaPlayable)motionXPlayable; mixer = m_MotionXPlayable.GetInput(0); } #if UNITY_EDITOR // Default pose mixer if (!Application.isPlaying) { if (mixer.IsValid() && mixer.IsPlayableOfType <AnimationLayerMixerPlayable>()) { m_PoseMixer = (AnimationLayerMixerPlayable)mixer; mixer = m_PoseMixer.GetInput(1); } } #endif // Track mixer if (mixer.IsValid() && mixer.IsPlayableOfType <AnimationLayerMixerPlayable>()) { m_LayerMixer = (AnimationLayerMixerPlayable)mixer; } if (!m_LayerMixer.IsValid()) { return; } var count = m_LayerMixer.GetInputCount(); for (var i = 0; i < count; i++) { FindMixers(m_LayerMixer, i, m_LayerMixer.GetInput(i)); } }
void FindMixers() { m_Mixers.Clear(); m_PoseMixer = AnimationMixerPlayable.Null; m_LayerMixer = AnimationLayerMixerPlayable.Null; m_MotionXPlayable = AnimationMotionXToDeltaPlayable.Null; var playable = m_Output.GetSourcePlayable(); var outputPort = m_Output.GetSourceOutputPort(); if (!playable.IsValid() || outputPort < 0 || outputPort >= playable.GetInputCount()) { return; } var mixer = FindFirstAnimationPlayable(playable.GetInput(outputPort)); Playable motionXPlayable = mixer; if (motionXPlayable.IsPlayableOfType <AnimationMotionXToDeltaPlayable>()) { m_MotionXPlayable = (AnimationMotionXToDeltaPlayable)motionXPlayable; mixer = m_MotionXPlayable.GetInput(0); } if (mixer.IsValid() && mixer.IsPlayableOfType <AnimationMixerPlayable>()) { m_PoseMixer = (AnimationMixerPlayable)mixer; Playable layerMixer = m_PoseMixer.GetInput(0); if (layerMixer.IsValid() && layerMixer.IsPlayableOfType <AnimationLayerMixerPlayable>()) { m_LayerMixer = (AnimationLayerMixerPlayable)layerMixer; } } else if (mixer.IsValid() && mixer.IsPlayableOfType <AnimationLayerMixerPlayable>()) { m_LayerMixer = (AnimationLayerMixerPlayable)mixer; } if (!m_LayerMixer.IsValid()) { return; } var count = m_LayerMixer.GetInputCount(); for (var i = 0; i < count; i++) { FindMixers(m_LayerMixer, i, m_LayerMixer.GetInput(i)); } }
private AnimMixer CreateAnimMixer(int layer) { // Increase input count int inputCount = _mixerRoot.GetInputCount(); if (layer == 0 && inputCount == 0) { _mixerRoot.SetInputCount(1); } else { if (layer > inputCount - 1) { _mixerRoot.SetInputCount(layer + 1); } } var animMixer = new AnimMixer(_graph, layer); _mixers.Add(animMixer); return(animMixer); }
public virtual void Destroy(AnimationLayerMixerPlayable AnimationLayerMixerPlayable) { PlayableExtensions.DisconnectInput(AnimationLayerMixerPlayable, this.Inputhandler); AnimationLayerMixerPlayable.SetInputCount(AnimationLayerMixerPlayable.GetInputCount() - 1); }