From c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 19 Apr 2020 17:19:32 -0400 Subject: Inital commit --- .../Editor/Animation/CurveDataSource.cs | 272 +++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/CurveDataSource.cs (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/CurveDataSource.cs') diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/CurveDataSource.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/CurveDataSource.cs new file mode 100644 index 0000000..b5ad13b --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/CurveDataSource.cs @@ -0,0 +1,272 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Timeline; + +namespace UnityEditor.Timeline +{ + abstract class CurveDataSource + { + public static CurveDataSource Create(IRowGUI trackGUI) + { + if (trackGUI.asset is AnimationTrack) + return new InfiniteClipCurveDataSource(trackGUI); + + return new TrackParametersCurveDataSource(trackGUI); + } + + public static CurveDataSource Create(TimelineClipGUI clipGUI) + { + if (clipGUI.clip.animationClip != null) + return new ClipAnimationCurveDataSource(clipGUI); + + return new ClipParametersCurveDataSource(clipGUI); + } + + int? m_ID = null; + public int id + { + get + { + if (!m_ID.HasValue) + m_ID = CreateHashCode(); + + return m_ID.Value; + } + } + + readonly IRowGUI m_TrackGUI; + protected IRowGUI trackGUI { get { return m_TrackGUI; } } + + protected CurveDataSource(IRowGUI trackGUI) + { + m_TrackGUI = trackGUI; + } + + public abstract AnimationClip animationClip { get; } + public abstract float start { get; } + public abstract float timeScale { get; } + public abstract string groupingName { get; } + public virtual void UpdateCurves(List updatedCurves) {} + public virtual void RebuildCurves() {} // Only necessary when using proxies + + public Rect GetBackgroundRect(WindowState state) + { + var trackRect = m_TrackGUI.boundingRect; + return new Rect( + state.timeAreaTranslation.x + trackRect.xMin, + trackRect.y, + (float)state.editSequence.asset.duration * state.timeAreaScale.x, + trackRect.height + ); + } + + public List GenerateWrappers(List bindings) + { + var wrappers = new List(bindings.Count); + int curveWrapperId = 0; + + foreach (EditorCurveBinding b in bindings) + { + // General configuration + var wrapper = new CurveWrapper + { + id = curveWrapperId++, + binding = b, + groupId = -1, + hidden = false, + readOnly = false, + getAxisUiScalarsCallback = () => new Vector2(1, 1) + }; + + // Specific configuration + ConfigureCurveWrapper(wrapper); + + wrappers.Add(wrapper); + } + + return wrappers; + } + + protected virtual void ConfigureCurveWrapper(CurveWrapper wrapper) + { + wrapper.color = CurveUtility.GetPropertyColor(wrapper.binding.propertyName); + wrapper.renderer = new NormalCurveRenderer(AnimationUtility.GetEditorCurve(animationClip, wrapper.binding)); + wrapper.renderer.SetCustomRange(0.0f, animationClip.length); + } + + protected virtual int CreateHashCode() + { + return m_TrackGUI.asset.GetHashCode(); + } + } + + class ClipAnimationCurveDataSource : CurveDataSource + { + static readonly string k_GroupingName = L10n.Tr("Animated Values"); + + readonly TimelineClipGUI m_ClipGUI; + + public ClipAnimationCurveDataSource(TimelineClipGUI clipGUI) : base(clipGUI.parent) + { + m_ClipGUI = clipGUI; + } + + public override AnimationClip animationClip + { + get { return m_ClipGUI.clip.animationClip; } + } + + public override float start + { + get { return (float)m_ClipGUI.clip.FromLocalTimeUnbound(0.0); } + } + + public override float timeScale + { + get { return (float)m_ClipGUI.clip.timeScale; } + } + + public override string groupingName + { + get { return k_GroupingName; } + } + + protected override int CreateHashCode() + { + return base.CreateHashCode().CombineHash(m_ClipGUI.clip.GetHashCode()); + } + } + + class ClipParametersCurveDataSource : CurveDataSource + { + static readonly string k_GroupingName = L10n.Tr("Clip Properties"); + + readonly TimelineClipGUI m_ClipGUI; + readonly CurvesProxy m_CurvesProxy; + + public ClipParametersCurveDataSource(TimelineClipGUI clipGUI) : base(clipGUI.parent) + { + m_ClipGUI = clipGUI; + m_CurvesProxy = new CurvesProxy(clipGUI.clip); + } + + public override AnimationClip animationClip + { + get { return m_CurvesProxy.curves; } + } + + public override float start + { + get { return (float)m_ClipGUI.clip.FromLocalTimeUnbound(0.0); } + } + + public override float timeScale + { + get { return (float)m_ClipGUI.clip.timeScale; } + } + + public override string groupingName + { + get { return k_GroupingName; } + } + + public override void UpdateCurves(List updatedCurves) + { + m_CurvesProxy.UpdateCurves(updatedCurves); + } + + public override void RebuildCurves() + { + m_CurvesProxy.RebuildCurves(); + } + + protected override void ConfigureCurveWrapper(CurveWrapper wrapper) + { + m_CurvesProxy.ConfigureCurveWrapper(wrapper); + } + + protected override int CreateHashCode() + { + return base.CreateHashCode().CombineHash(m_ClipGUI.clip.GetHashCode()); + } + } + + class InfiniteClipCurveDataSource : CurveDataSource + { + static readonly string k_GroupingName = L10n.Tr("Animated Values"); + + readonly AnimationTrack m_AnimationTrack; + + public InfiniteClipCurveDataSource(IRowGUI trackGui) : base(trackGui) + { + m_AnimationTrack = trackGui.asset as AnimationTrack; + } + + public override AnimationClip animationClip + { + get { return m_AnimationTrack.infiniteClip; } + } + + public override float start + { + get { return 0.0f; } + } + + public override float timeScale + { + get { return 1.0f; } + } + + public override string groupingName + { + get { return k_GroupingName; } + } + } + + class TrackParametersCurveDataSource : CurveDataSource + { + static readonly string k_GroupingName = L10n.Tr("Track Properties"); + + readonly CurvesProxy m_CurvesProxy; + + public TrackParametersCurveDataSource(IRowGUI trackGui) : base(trackGui) + { + m_CurvesProxy = new CurvesProxy(trackGui.asset); + } + + public override AnimationClip animationClip + { + get { return m_CurvesProxy.curves; } + } + + public override float start + { + get { return 0.0f; } + } + + public override float timeScale + { + get { return 1.0f; } + } + + public override string groupingName + { + get { return k_GroupingName; } + } + + public override void UpdateCurves(List updatedCurves) + { + m_CurvesProxy.UpdateCurves(updatedCurves); + } + + public override void RebuildCurves() + { + m_CurvesProxy.RebuildCurves(); + } + + protected override void ConfigureCurveWrapper(CurveWrapper wrapper) + { + m_CurvesProxy.ConfigureCurveWrapper(wrapper); + } + } +} -- cgit v1.2.3