public override void PrepareFrame(Playable playable, FrameData info) { m_PreviewPlay = false; #if UNITY_EDITOR && UNITY_2019_2_OR_NEWER var cacheMode = TargetPositionCache.Mode.Disabled; if (!Application.isPlaying) { if (GetMasterPlayableDirector != null) { var d = GetMasterPlayableDirector(); if (d != null && d.playableGraph.IsValid()) { m_PreviewPlay = GetMasterPlayableDirector().playableGraph.IsPlaying(); } } if (TargetPositionCache.UseCache) { cacheMode = m_PreviewPlay ? TargetPositionCache.Mode.Record : TargetPositionCache.Mode.Playback; if (m_ScrubbingCacheHelper == null) { m_ScrubbingCacheHelper = new ScrubbingCacheHelper(); m_ScrubbingCacheHelper.Init(playable); } } } TargetPositionCache.CacheMode = cacheMode; #endif }
public override void PrepareFrame(Playable playable, FrameData info) { mPlaying = info.evaluationType == FrameData.EvaluationType.Playback; #if UNITY_EDITOR && UNITY_2019_2_OR_NEWER if (Application.isPlaying || !TargetPositionCache.UseCache) { TargetPositionCache.CacheMode = TargetPositionCache.Mode.Disabled; } else { if (m_ScrubbingCacheHelper == null) { m_ScrubbingCacheHelper = new ScrubbingCacheHelper(); m_ScrubbingCacheHelper.Init(playable); } m_ScrubbingCacheHelper.ScrubToHere( (float)playable.GetGraph().GetRootPlayable(0).GetTime(), mPlaying ? TargetPositionCache.Mode.Record : TargetPositionCache.Mode.Playback, mBrain); } #else TargetPositionCache.CacheMode = TargetPositionCache.Mode.Disabled; #endif }