private void ForceMoveClip(int index)
    {
        if (inputs != null)
        {
            for (int i = 0; i < inputs.Count; i++)
            {
                if (i < index)
                {
                    inputs[i].isFinishRole = true;
                }

                if (i == index)
                {
                    inputs[i].isFinishRole  = false;
                    m_PlayableDirector.time = clips[i].start;
                    m_PlayableDirector.Pause();
                    currentInput                  = inputs[i];
                    currentInputCount             = i;
                    trackBinding.currentClipCount = currentInputCount;
                }
            }
        }
    }
    public override void ProcessFrame(Playable playable, FrameData info, object playerData)
    {
        trackBinding = playerData as TimeMachineTrackManeger;

        if (!trackBinding)
        {
            return;
        }

        if (!initialized)
        {
            Init(playable);
            trackBinding.OnNextState     += OnNextState;
            trackBinding.OnInit          += InitEvents;
            trackBinding.OnForceMoveClip += ForceMoveClip;
        }


        if (trackBinding.clipCount != clips.Count)
        {
            InitClipViewer();
        }



        double time    = m_PlayableDirector.time;
        var    counter = 0;

        foreach (var clip in clips)

        {
            var inputPlayable = (ScriptPlayable <TimeMachineControlBehaviour>)playable.GetInput(counter);
            var input         = inputPlayable.GetBehaviour();
            if (clip.start <= time && clip.end >= time)
            {
                currentInput                  = input;
                currentInputCount             = counter;
                trackBinding.currentClipCount = currentInputCount;
                if (trackBinding.currentClipCount != counter)
                {
                    trackBinding.currentClipCount = counter;
                    // trackBinding.UpdateStatus();
                    break;
                }

                if (!input.isFinishRole && input.timeMachineClipEvent == TimeMaschineClipEvent.SKIP)
                {
                    m_PlayableDirector.time = clip.end - trackBinding.frameDuration;
                    input.isFinishRole      = true;
                    break;
                }
            }

            if (!input.isFinishRole && input.timeMachineClipEvent == TimeMaschineClipEvent.PAUSE && time >= clip.end - trackBinding.frameDuration)
            {
                trackBinding.EnableClickButton();

                m_PlayableDirector.time = clip.end - trackBinding.frameDuration;
                break;
            }

            if (!input.isFinishRole && input.timeMachineClipEvent == TimeMaschineClipEvent.LOOP && time >= clip.end - trackBinding.frameDuration)
            {
                if (m_PlayableDirector.state == PlayState.Playing)
                {
                    m_PlayableDirector.time = clip.start;
                }
            }


            counter++;
        }

        // if (currentInput != null)
        // {
        //     if (currentInput.isFinishRole == false && currentInput.timeMaschineClipEvent == TimeMaschineClipEvent.LOOP)
        //     {
        //         trackBinding.currentClipStatus = TimeMaschineClipEvent.LOOP;
        //     }
        //
        //     if (currentInput.isFinishRole == true && currentInput.timeMaschineClipEvent == TimeMaschineClipEvent.LOOP)
        //     {
        //         trackBinding.currentClipStatus = TimeMaschineClipEvent.THOROUGH;
        //     }
        // }
    }