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); }
/// <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); }
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); }