Exemplo n.º 1
0
 private void DisconnectAllInputs(Playable p)
 {
     for (var i = p.GetInputCount() - 1; i >= 0; i--)
     {
         p.DisconnectInput(i);
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
            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);
            }
Exemplo n.º 5
0
        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;
                }
            }
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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);
            }
        }