//----------------------------------------------------------------------------------------------------------------------

        private void ValidateClipDataCurves()
        {
            foreach (TimelineClip clip in  GetClips())
            {
                StreamingImageSequencePlayableAsset sisPlayableAsset = clip.asset as StreamingImageSequencePlayableAsset;
                Assert.IsNotNull(sisPlayableAsset);

                SISClipData clipData = sisPlayableAsset.GetBoundClipData();
                Assert.IsNotNull(clipData);
                AnimationCurve curve = clipData.GetAnimationCurve();
                if (null != curve)
                {
                    continue;
                }


#if UNITY_EDITOR
                EditorCurveBinding curveBinding = StreamingImageSequencePlayableAsset.GetTimeCurveBinding();
                curve = AnimationUtility.GetEditorCurve(clip.curves, curveBinding);
#else
                Debug.LogWarning("[SIS] ClipData does not have AnimationCurve. Need to resave track: " + name);
                curve = AnimationCurve.Linear(0f, 0f, (float)(clip.duration * clip.timeScale), 1f);
#endif
                clipData.SetAnimationCurve(curve);
            }
        }
Ejemplo n.º 2
0
//----------------------------------------------------------------------------------------------------------------------

        internal static float CalculateFPS(StreamingImageSequencePlayableAsset sisPlayableAsset)
        {
            double      clipTimeScale = 1;
            SISClipData sisClipData   = sisPlayableAsset.GetBoundClipData();

            if (null == sisClipData)
            {
                return(0);
            }

            if (null != sisClipData.GetOwner())
            {
                clipTimeScale = sisClipData.GetOwner().timeScale;
            }

            int   numImages = sisPlayableAsset.GetNumImages();
            float fps       = (float)(numImages * clipTimeScale / sisClipData.CalculateCurveDuration());

            return(fps);
        }
Ejemplo n.º 3
0
        internal static void SetFPS(StreamingImageSequencePlayableAsset sisPlayableAsset, float newFPS)
        {
            SISClipData sisClipData = sisPlayableAsset.GetBoundClipData();

            Assert.IsNotNull(sisClipData);
            TimelineClip clip = sisClipData.GetOwner();

            Assert.IsNotNull(clip);

            int numImages = sisPlayableAsset.GetNumImages();

            if (numImages <= 0)
            {
                Debug.LogWarning("[SIS] There are no images in folder: " + sisPlayableAsset.GetFolder());
                return;
            }

            double prevTimeScale = clip.timeScale;
            float  clipTimeScale = (newFPS * sisClipData.CalculateCurveDuration() / numImages);

            clip.timeScale = clipTimeScale;
            clip.duration  = clip.duration * (prevTimeScale / clipTimeScale);
        }