예제 #1
0
        private void StartAnimationUpdate()
        {
            switch (mode)
            {
            case Mode.AnimationClips:
                if (!AnimationMode.InAnimationMode())
                {
                    AnimationMode.StartAnimationMode();
                }
                AnimationMode.BeginSampling();
                AnimationMode.SampleAnimationClip(gameObject, animationClips[currentClipIndex], 0f);
                AnimationMode.EndSampling();
                break;

            case Mode.AnimationStates:
                animator.enabled = false;
                animator.Play(animationStates[currentClipIndex], 0, 0f);
                break;

            case Mode.PlayableDirector:
                director.enabled = false;
                director.time    = 0f;
                director.Evaluate();
                break;
            }
        }
예제 #2
0
    private void BuildOutput()
    {
        PlayableDirector.Evaluate();

        if (PlayableDirector.playableGraph.IsValid())
        {
            _outputTrackIndex       = 0;
            _trackAsset             = (PlayableDirector.playableAsset as TimelineAsset)?.GetOutputTrack(_outputTrackIndex);
            _originalOutput         = (AnimationPlayableOutput)PlayableDirector.playableGraph.GetOutputByType <AnimationPlayableOutput>(_outputTrackIndex);
            _originalSourcePlayable = _originalOutput.GetSourcePlayable();
            _clone         = PlayableDirector.playableAsset.CreatePlayable(PlayableDirector.playableGraph, PlayableDirector.gameObject);
            _mixer         = AnimationMixerPlayable.Create(PlayableDirector.playableGraph, 2);
            _cloneIndex    = _mixer.AddInput(_clone, 0);
            _originalIndex = _mixer.AddInput(_originalSourcePlayable, 0, 1f);

            if (_originalOutput.IsOutputValid() && _originalOutput.GetTarget() != null)
            {
                _output = AnimationPlayableOutput.Create(PlayableDirector.playableGraph, "OverridedDirectorOutput" + GetInstanceID(), _originalOutput.GetTarget());
                _output.SetSourcePlayable(_mixer);
                _output.SetSourceOutputPort(_originalOutput.GetSourceOutputPort());
                _output.SetWeight(1f);
                _originalOutput.SetTarget(null);
            }
            else
            {
                Debug.Log("Original Director Output is invalid");
            }
        }
    }
 public void BackLevelSelect()
 {
     timeline.Stop();
     timeline.time = timeline.playableAsset.duration - 0.01;
     timeline.Evaluate();
     reverse = true;
 }
예제 #4
0
    public void Awake()
    {
        director.Evaluate();
#if !UNITY_EDITOR
        loadedAudio = NativeAudio.Load(noteToPlay);
#endif
    }
예제 #5
0
 public void Pause()
 {
     if (director && director.state == PlayState.Playing)
     {
         director.Pause();
         director.Evaluate();
     }
 }
 public void Rewind(float ft)
 {
     while (ft < pd.time)
     {
         pd.time -= .1f;
         pd.Evaluate();
     }
 }
예제 #7
0
        /// <summary> 時間を直接変更. </summary>
        public void SetTime(double time)
        {
            Initialize();

            playableDirector.Evaluate();

            playableDirector.time = time;

            playableDirector.Evaluate();
        }
예제 #8
0
        public override void FinishSequence(Action callback)
        {
            Director.time = Director.duration;

            Director.Evaluate();

            if (_callback != null)
            {
                _callback();
            }
        }
예제 #9
0
        void Reset()
        {
            ForceClearHomeMenuElements();
            ForceClearSubMenuElements();

            m_InputModeText.text                                 = string.Empty;
            m_Director.playableAsset                             = m_RevealTimelinePlayable;
            m_HomeSectionCanvasGroup.alpha                       = 1f;
            m_HomeTextBackgroundInnerCanvasGroup.alpha           = 1f;
            m_HomeSectionTitlesBackgroundBorderCanvasGroup.alpha = 1f;

            m_Director.time = 0f;
            m_Director.Evaluate();
        }
        /// <summary>
        /// This function is called during the ProcessFrame phase of the PlayableGraph.
        /// </summary>
        /// <param name="playable">The playable this behaviour is attached to.</param>
        /// <param name="info">A FrameData structure that contains information about the current frame context.</param>
        /// <param name="playerData">unused</param>
        public override void ProcessFrame(Playable playable, FrameData info, object playerData)
        {
            if (director == null || !director.isActiveAndEnabled || director.playableAsset == null)
            {
                return;
            }

            if (m_SyncTime || DetectOutOfSync(playable))
            {
                UpdateTime(playable);
                if (director.playableGraph.IsValid())
                {
                    director.playableGraph.Evaluate();
#if TIMELINE_FRAMEACCURATE
                    director.playableGraph.SynchronizeEvaluation(playable.GetGraph());
#endif
                }
                else
                {
                    director.Evaluate();
                }
            }

            m_SyncTime = false;
        }
예제 #11
0
        GameObject CaptureOneShot(PlayableDirector director, TimelineClip clip)
        {
            var time = clip.start + (clip.end - clip.start) / 2;

            director.time = time;
            director.Evaluate();

            var maskRoot  = director.gameObject.transform.Find("MaskRoot");
            var reference = director.gameObject.transform.Find("Reference").gameObject;
            var go        = GameObject.Instantiate(reference, maskRoot);
            var mask      = go.AddComponent <DanceCheckPoint>();

            var d = clip.asset as DanceClip;

            mask.isUsedWeight = false;

            mask.Weight_Head_2_Neck                  = d.Weight_Head_2_Neck;
            mask.Weight_Neck_2_Right_Shoulder        = d.Weight_Neck_2_Right_Shoulder;
            mask.Weight_Right_Shoulder_2_Right_Elbow = d.Weight_Right_Shoulder_2_Right_Elbow;
            mask.Weight_Right_Elbow_2_Right_Hand     = d.Weight_Right_Elbow_2_Right_Hand;
            mask.Weight_Neck_2_Left_Shoulder         = d.Weight_Neck_2_Left_Shoulder;
            mask.Weight_Left_Shoulder_Left_Elbow     = d.Weight_Left_Shoulder_Left_Elbow;
            mask.Weight_Left_Elbow_2_Left_Hand       = d.Weight_Left_Elbow_2_Left_Hand;
            mask.Weight_Neck_2_Right_Hip             = d.Weight_Neck_2_Right_Hip;
            mask.Weight_Right_Hip_2_Right_Knee       = d.Weight_Right_Hip_2_Right_Knee;
            mask.Weight_Right_Knee_2_Right_Foot      = d.Weight_Right_Knee_2_Right_Foot;
            mask.Weight_Neck_2_Left_Hip              = d.Weight_Neck_2_Left_Hip;
            mask.Weight_Left_Hip_2_Left_Knee         = d.Weight_Left_Hip_2_Left_Knee;
            mask.Weight_Left_Knee_2_Left_Foot        = d.Weight_Left_Knee_2_Left_Foot;

            DestroyImmediate(go.GetComponent <Animator>());
            Match(go.transform, reference.transform);
            return(go);
        }
예제 #12
0
    private void Seeking(float progress)
    {
        var newTime = Mathf.Lerp(0, (float)director.duration, progress);

        director.time = newTime;
        director.Evaluate();
    }
예제 #13
0
 void Update()
 {
     if (Input.GetKeyUp(KeyCode.Space))
     {
         director.Stop();
         director.time = 0d;
         director.Play();
     }
     if (Input.GetKeyUp(KeyCode.F1))
     {
         var output             = ScriptPlayableOutput.Create(director.playableGraph, "");
         JumpSignalEmmiter sign = ScriptableObject.CreateInstance <JumpSignalEmmiter>();
         sign.jumpTime = 0;
         output.PushNotification(Playable.Null, sign);
     }
     if (Input.GetKeyUp(KeyCode.F3))
     {
         director.Pause();
         backward = true;
     }
     if (Input.GetKeyUp(KeyCode.F4))
     {
         backward = false;
         director.Play();
     }
     if (backward)
     {
         director.time = director.time - Time.deltaTime;
         director.Evaluate();
     }
 }
예제 #14
0
    public void OnGameInitialized()
    {
        if (gameJustStarted)
        {
            //  myTimeline.initialTime = 0;
            myTimeline.time          = 0;
            currentFruitBlendedCount = 0;
            fruitmixlayer            = Random.Range(1, 4);

            gameJustStarted = false;
            DestroyPreviousFruits();
            ListFruitsToBlend(fruitmixlayer);
            myTimeline.Stop();
            myTimeline.Evaluate();
        }
        else
        {
            myTimeline.time = 0.45f;
        }
        ResumeTimeline();


        //   noOFFruitsToDrag = noOfFruitsToDrag[currentFruitBlendedCount];

        GameInitializeListeners?.Invoke(noOFFruitsToDrag);
        // start of the game
        // show items to cut
    }
예제 #15
0
    private IEnumerator tRewind(PlayableDirector Director)
    {
        yield return(new WaitForSeconds(0.001f * Time.deltaTime));

        Director.time -= 1.0f * Time.deltaTime;  //1.0f是倒带速度
        Director.Evaluate();
        if (Director.time < 0f)
        {
            Director.time = 0f;
            Director.Evaluate();
        }
        else
        {
            StartCoroutine(tRewind(Director));
        }
    }
예제 #16
0
 // Use this for initialization
 void Start()
 {
     director = GetComponent <PlayableDirector>();
     director.Stop();
     director.time = isDoorOpen ?  director.playableAsset.duration - 0.01 : 0f;
     director.Evaluate();
 }
예제 #17
0
        public override void SetPrefab(string prefabName)
        {
            if (prefabName == currentPrefabName)
            {
                return;
            }

            base.SetPrefab(prefabName);

            prefabInstance.SetActive(false);

            playableDirector = prefabInstance.GetComponent <PlayableDirector>();
            if (playableDirector != null)
            {
                playableDirector.timeUpdateMode = DirectorUpdateMode.Manual;
                playableDirector.playOnAwake    = false;
                playableDirector.Evaluate();
            }

            Camera newCamera = prefabInstance.GetComponentInChildren <Camera>();

            if (newCamera != null)
            {
                this.RuntimeAssert(newCamera.GetComponent <CameraController>() == null,
                                   "The camera in the timeline prefab should not have a CameraController.");

                cameraController.overridingCamera = newCamera;
                mainCamera.enabled      = false;
                newCamera.targetTexture = mainCamera.targetTexture;
                // Debug.Log("Switched main camera to timeline provided camera");
            }

            prefabInstance.SetActive(true);
        }
        // Update is called once per frame
        void Update()
        {
            PixelRef pxRef = CheckPXRef();

            if (!pxRef)
            {
                return;
            }

            if (!CheckPlayableDirector())
            {
                return;
            }

            float value = pxRef.GetValue(0);

            float speed = Utils.MapValue(value, _inMin, _inMax, _SpeedMin, _SpeedMax);
            float delay = Utils.MapValue(value, _inMin, _inMax, _Delay01Min, _Delay01Max);

            double duration = _playableDirector.duration;

            _playableDirector.time = Mathf.Repeat(
                Time.realtimeSinceStartup * speed + (float)duration * delay, (float)duration);
            _playableDirector.Evaluate();
        }
예제 #19
0
    public IEnumerator tRewind(PlayableDirector director)
    {
        yield return(new WaitForSeconds(0.001f * Time.deltaTime));

        director.time -= 1.0f * Time.deltaTime; //1.0f是倒帶速度
        director.Evaluate();                    //director播放当前帧
        if (director.time < 0f)
        {
            director.time = 0f;
            director.Evaluate();
        }
        else
        {
            StartCoroutine(tRewind(director));
        }
    }
예제 #20
0
 private void reverse(PlayableDirector ani)
 {
     //Debug.Log("called reverse function");
     ani.Stop();
     ani.time = ani.playableAsset.duration - 0.01;
     ani.Evaluate();
 }
        async void Update()
        {
            // Debug.Log($"isPlaying:{video.isPlaying.ToString()} isPaused:{video.isPaused.ToString()} isPrepared:{video.isPrepared.ToString()}");

            if (PlayingState.IsPreviewingInPlayMode)
            {
                if (video.isPlaying)
                {
                    director.time = clip.start + video.time;
                }
                else if (director.time <= director.duration)
                {
                    director.time += frameDelta;
                }

                director.Evaluate();
            }

            if (PlayingState.IsRecording)
            {
                await UniTask.WaitUntil(() => (Time.unscaledTime - timePreviousCaptured) > RecorderOptions.CurrentOptions.FrameTimeout);

                timedUp = true;
            }
        }
예제 #22
0
        public void Update()
        {
            if (m_PlayMode != PlayMode.Stop)
            {
                float dt = UnscaledGameTime? Time.unscaledDeltaTime : Time.deltaTime;

                float prevTime = (float)director.time;
                float newTime  = prevTime + (m_PlayMode == PlayMode.Reverse ? -1.0f : 1.0f) * dt;

                if (m_StopTime >= 0.0f &&
                    ((m_PlayMode == PlayMode.Play && prevTime < m_StopTime && m_StopTime <= newTime) ||
                     (m_PlayMode == PlayMode.Reverse && newTime <= m_StopTime && m_StopTime < prevTime)
                    ))
                {
                    director.time = m_StopTime;
                    m_PlayMode    = PlayMode.Stop;
                    m_StopTime    = -1.0f;
                }
                else
                {
                    director.time = newTime;
                }

                director.Evaluate();

                if ((director.time <= 0.0f && m_PlayMode == PlayMode.Reverse) ||
                    (director.time >= director.playableAsset.duration && m_PlayMode == PlayMode.Play))
                {
                    switch (wrapMode)
                    {
                    case WrapMode.Loop:
                        if (director.time <= 0.0f)
                        {
                            director.time = director.playableAsset.duration;
                        }
                        else
                        {
                            director.time = 0.0f;
                        }
                        break;

                    case WrapMode.PingPong:
                        if (m_PlayMode == PlayMode.Play)
                        {
                            m_PlayMode = PlayMode.Reverse;
                        }
                        else if (m_PlayMode == PlayMode.Reverse)
                        {
                            m_PlayMode = PlayMode.Play;
                        }
                        break;

                    case WrapMode.Stop:
                        m_PlayMode = PlayMode.Stop;
                        break;
                    }
                }
            }
        }
    void Update()
    {
        m_Interp += Time.deltaTime * (m_Reverse ? -1.0f : 1.0f);
        m_Interp  = Mathf.Clamp(m_Interp, 0.0f, (float)TimelineDirector.duration);

        TimelineDirector.time = m_Interp;
        TimelineDirector.Evaluate();
    }
예제 #24
0
 private void Start()
 {
     director.initialTime = 0;
     director.time        = 0;
     director.Stop();
     director.Evaluate();
     director.Play();
 }
예제 #25
0
 public void RebuildGraph()
 {
     if (playableDirector != null)
     {
         playableDirector.RebuildGraph();
         playableDirector.Evaluate();
     }
 }
예제 #26
0
        public static void SetAnimationToMeasurement(PlayableDirector director, int measurementsToMake, int measurementIndex)
        {
            Debug.Log($"M782 animation to measurement {measurementIndex}/{measurementsToMake}");
            float percent = measurementIndex / (float)measurementsToMake;

            director.time = director.duration * percent;
            director.Evaluate();
        }
 protected override IEnumerator Event_Content()
 {
     Timeline.enabled = true;
     Timeline.Stop();
     Timeline.Evaluate();
     Timeline.enabled = false;
     yield return(StartCoroutine(Event_Tieup()));
 }
예제 #28
0
        public void PlayCutscene(TimelineAsset cutscene)
        {
            // TODO block player input, keeping dialogue input enabled

            m_director.playableAsset = cutscene;
            m_director.Evaluate();
            m_director.Play();
            m_director.stopped += OnCutsceneCompleted;
        }
예제 #29
0
 public void SkipIntro()
 {
     timeline.time = timeline.duration;
     timeline.Evaluate();
     GameManager.GetInstance().TriggerGameStart();
     discSlots.SetActive(true);
     skipIntroButton.SetActive(false);
     timeline.Stop();
 }
예제 #30
0
 void Update()
 {
     if (m_director.time < m_director.duration)
     {
         m_currentTime  += Time.deltaTime * m_timeScale;
         m_director.time = m_currentTime;
         m_director.Evaluate();
     }
 }