private void DisconnectAllInputs(Playable p) { for (var i = p.GetInputCount() - 1; i >= 0; i--) { p.DisconnectInput(i); } }
public void Destroy() { Playable output = this.Output; Playable input0 = this.Input0; output.DisconnectInput(0); this.mixer.DisconnectInput(0); output.ConnectInput(0, input0, 0); switch (output.GetInputCount()) { case 1: output.SetInputWeight(0, 1f); break; case 2: float outputWeight = this.mixer.GetInputWeight(0); output.SetInputWeight(0, outputWeight); break; } IEnumerator destroy = this.DestroyNextFrame(); CoroutinesManager.Instance.StartCoroutine(destroy); }
protected void Setup <TInput1>( ref PlayableGraph graph, ref TInput1 input1, PlayableBase next) where TInput1 : struct, IPlayable { Playable input0 = next.Input0; Playable output = next.Mixer; output.DisconnectInput(0); this.SetupMixer(ref graph, ref input0, ref input1, ref output); }
private void RemoveUnusedInputs(Playable p, int usedInputs) { if (p.GetInputCount() <= usedInputs) { return; } for (var i = usedInputs; i < p.GetInputCount(); i++) { p.DisconnectInput(i); } p.SetInputCount(usedInputs); }
override public void PrepareFrame(Playable playable, FrameData info) { if (mFinishFrameId == info.frameId) { var cb = mFinishCb; mFinishCb = null; cb.Invoke(0); return; } var count = mMixer.GetInputCount(); if (count == 0) { return; } if (count > 1 && mTransitionTime >= 0f) { mTransitionTime -= info.deltaTime; if (mTransitionTime > 0f) { var rate = mTransitionTime / mTransitionDuration; for (var i = 0; i < count - 1; ++i) { mMixer.SetInputWeight(i, Mathf.Lerp(mMixer.GetInputWeight(i), 0f, rate)); } mMixer.SetInputWeight(count - 1, Mathf.Lerp(mMixer.GetInputWeight(count - 1), 1f, 1f - rate)); } else { for (var i = 0; i < count - 1; ++i) { mMixer.GetInput(i).Destroy(); } var clipPlayable = mMixer.GetInput(count - 1); mMixer.DisconnectInput(count - 1); mMixer.SetInputCount(1); mMixer.ConnectInput(0, clipPlayable, 0); mMixer.SetInputWeight(0, 1.0f); } } if (mActionTime > 0) { mActionTime -= info.deltaTime; if (mActionTime <= 0 && mFinishCb != null) { mFinishFrameId = info.frameId + 2; } } }
public static void DestroyPlayableRecursive(ref Playable a_playable) { int count = a_playable.GetInputCount(); for (int i = 0; i < count; ++i) { var playable = a_playable.GetInput(i); if (playable.IsValid()) { a_playable.DisconnectInput(i); DestroyPlayableRecursive(ref playable); //Recursion } } a_playable.Destroy(); }
public void SetOutput(BaseNode node) { OutputNode = node; if (node.Playable.GetOutputCount() == 0) { node.Playable.SetOutputCount(1); } if (Playable.GetInputCount() > 0) { if (!Playable.GetInput(0).IsNull()) { Playable.DisconnectInput(0); } Playable.ConnectInput(0, node.Playable, 0, 1f); } else { Playable.AddInput(node.Playable, 0, 1f); } }