Example #1
0
        private GUIStyle GetExtrapolationIcon(TimelineClip.ClipExtrapolation mode)
        {
            GUIStyle gUIStyle = null;
            GUIStyle result;

            switch (mode)
            {
            case TimelineClip.ClipExtrapolation.None:
                result = null;
                return(result);

            case TimelineClip.ClipExtrapolation.Hold:
                gUIStyle = this.m_Styles.extrapolationHold;
                break;

            case TimelineClip.ClipExtrapolation.Loop:
                gUIStyle = this.m_Styles.extrapolationLoop;
                break;

            case TimelineClip.ClipExtrapolation.PingPong:
                gUIStyle = this.m_Styles.extrapolationPingPong;
                break;

            case TimelineClip.ClipExtrapolation.Continue:
                gUIStyle = this.m_Styles.extrapolationContinue;
                break;
            }
            result = gUIStyle;
            return(result);
        }
 private void AssignAnimationClip(TimelineClip clip, AnimationClip animClip)
 {
     if (clip != null && !(animClip == null))
     {
         if (animClip.legacy)
         {
             throw new InvalidOperationException("Legacy Animation Clips are not supported");
         }
         if (animClip.frameRate > 0f)
         {
             double num = (double)Mathf.Round(animClip.length * animClip.frameRate);
             clip.duration = num / (double)animClip.frameRate;
         }
         else
         {
             clip.duration = (double)animClip.length;
         }
         TimelineClip.ClipExtrapolation clipExtrapolation = TimelineClip.ClipExtrapolation.None;
         if (!base.isSubTrack)
         {
             clipExtrapolation = TimelineClip.ClipExtrapolation.Hold;
         }
         AnimationPlayableAsset animationPlayableAsset = clip.asset as AnimationPlayableAsset;
         if (animationPlayableAsset != null)
         {
             animationPlayableAsset.clip = animClip;
         }
         clip.preExtrapolationMode  = clipExtrapolation;
         clip.postExtrapolationMode = clipExtrapolation;
     }
 }
                protected static float GetExtrapolatedTrackTime(TimelineClip clip, double directorTime, float animationLength)
                {
                    TimelineClip.ClipExtrapolation extrapolation = directorTime < clip.start ? clip.preExtrapolationMode : clip.postExtrapolationMode;
                    float time = (float)(directorTime - clip.start);

                    if (clip.start <= directorTime && directorTime < clip.end)
                    {
                        return(time);
                    }

                    if (animationLength <= 0.0f)
                    {
                        return(0.0f);
                    }

                    switch (extrapolation)
                    {
                    case TimelineClip.ClipExtrapolation.Continue:
                    case TimelineClip.ClipExtrapolation.Hold:
                        return(time < 0.0f ? 0.0f : (float)clip.end);

                    case TimelineClip.ClipExtrapolation.Loop:
                    {
                        if (time < 0.0f)
                        {
                            float t        = -time / animationLength;
                            int   n        = Mathf.FloorToInt(t);
                            float fraction = animationLength - (t - n);

                            time = (animationLength * n) + fraction;
                        }

                        return(time);
                    }

                    case TimelineClip.ClipExtrapolation.PingPong:
                    {
                        float t        = Mathf.Abs(time) / animationLength;
                        int   n        = Mathf.FloorToInt(t);
                        float fraction = t - n;

                        if (n % 2 == 1)
                        {
                            fraction = animationLength - fraction;
                        }

                        return((animationLength * n) + fraction);
                    }

                    case TimelineClip.ClipExtrapolation.None:
                    default:
                        return(0.0f);
                    }
                }
        private static double GetExtrapolatedTime(double time, TimelineClip.ClipExtrapolation mode, double duration)
        {
            double result;

            if (duration == 0.0)
            {
                result = 0.0;
            }
            else
            {
                switch (mode)
                {
                case TimelineClip.ClipExtrapolation.Hold:
                    if (time < 0.0)
                    {
                        result = 0.0;
                        return(result);
                    }
                    if (time > duration)
                    {
                        result = duration;
                        return(result);
                    }
                    break;

                case TimelineClip.ClipExtrapolation.Loop:
                    if (time < 0.0)
                    {
                        time = duration - -time % duration;
                    }
                    else if (time > duration)
                    {
                        time %= duration;
                    }
                    break;

                case TimelineClip.ClipExtrapolation.PingPong:
                    if (time < 0.0)
                    {
                        time = duration * 2.0 - -time % (duration * 2.0);
                        time = duration - Math.Abs(time - duration);
                    }
                    else
                    {
                        time %= duration * 2.0;
                        time  = duration - Math.Abs(time - duration);
                    }
                    break;
                }
                result = time;
            }
            return(result);
        }
            private static Extrapolation GetExtrapolation(TimelineClip.ClipExtrapolation clipExtrapolation)
            {
                switch (clipExtrapolation)
                {
                case TimelineClip.ClipExtrapolation.Loop:
                    return(Extrapolation.Loop);

                case TimelineClip.ClipExtrapolation.PingPong:
                    return(Extrapolation.PingPong);

                case TimelineClip.ClipExtrapolation.None:
                case TimelineClip.ClipExtrapolation.Continue:
                case TimelineClip.ClipExtrapolation.Hold:
                default:
                    return(Extrapolation.Hold);
                }
            }
        GUIStyle GetExtrapolationIcon(TimelineClip.ClipExtrapolation mode)
        {
            GUIStyle extrapolationIcon = null;

            switch (mode)
            {
            case TimelineClip.ClipExtrapolation.None: return(null);

            case TimelineClip.ClipExtrapolation.Hold: extrapolationIcon = m_Styles.extrapolationHold; break;

            case TimelineClip.ClipExtrapolation.Loop: extrapolationIcon = m_Styles.extrapolationLoop; break;

            case TimelineClip.ClipExtrapolation.PingPong: extrapolationIcon = m_Styles.extrapolationPingPong; break;

            case TimelineClip.ClipExtrapolation.Continue: extrapolationIcon = m_Styles.extrapolationContinue; break;
            }

            return(extrapolationIcon);
        }
Example #7
0
        /// <summary>
        /// All manipulation through reflection
        /// Highly prompt to changes, use at risk
        /// </summary>
        public static void SetClipExtrapolationMode(TimelineClip clip, string propertyName, TimelineClip.ClipExtrapolation mode)
        {
            var pro = clip.GetType().GetProperty(propertyName);

            if (pro == null)
            {
                UnityEngine.Debug.LogWarning("Error in getting property: " + clip + "." + propertyName);
                return;
            }
            pro.SetValue(clip, Convert.ChangeType(mode, pro.PropertyType), null);
        }
Example #8
0
        public static void SetClipExtrapolationMode(TimelineClip clip, string propertyName, TimelineClip.ClipExtrapolation mode)
        {
            // FIXME: get rid of reflection
            var pro = clip.GetType().GetProperty(propertyName);

            pro.SetValue(clip, Convert.ChangeType(mode, pro.PropertyType), null);
        }