summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs116
1 files changed, 116 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs
new file mode 100644
index 0000000..9ae8c5a
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineAssetViewModel.cs
@@ -0,0 +1,116 @@
+using System;
+using System.Collections.Generic;
+using UnityEditor.IMGUI.Controls;
+using UnityEngine;
+using UnityEngine.Timeline;
+using UnityObject = UnityEngine.Object;
+
+namespace UnityEditor.Timeline
+{
+ [Serializable]
+ class TrackViewModelData : ISerializationCallbackReceiver
+ {
+ public static readonly float DefaultinlineAnimationCurveHeight = 100.0f;
+
+ public bool collapsed = true;
+ public bool showMarkers = true;
+
+ public bool showInlineCurves = false;
+ public float inlineAnimationCurveHeight = DefaultinlineAnimationCurveHeight;
+ public int lastInlineCurveDataID = -1;
+ public TreeViewState inlineCurvesState = null;
+ public Rect inlineCurvesShownAreaInsideMargins = new Rect(1, 1, 1, 1);
+
+ public Dictionary<int, long> markerTimeStamps = new Dictionary<int, long>();
+ [SerializeField] List<int> m_MarkerTimeStampsKeys;
+ [SerializeField] List<long> m_MarkerTimeStampsValues;
+
+ public void OnBeforeSerialize()
+ {
+ if (markerTimeStamps == null)
+ return;
+
+ m_MarkerTimeStampsKeys = new List<int>(markerTimeStamps.Count);
+ m_MarkerTimeStampsValues = new List<long>(markerTimeStamps.Count);
+
+ foreach (var kvp in markerTimeStamps)
+ {
+ m_MarkerTimeStampsKeys.Add(kvp.Key);
+ m_MarkerTimeStampsValues.Add(kvp.Value);
+ }
+ }
+
+ public void OnAfterDeserialize()
+ {
+ markerTimeStamps = new Dictionary<int, long>();
+
+ if (m_MarkerTimeStampsKeys == null || m_MarkerTimeStampsValues == null ||
+ m_MarkerTimeStampsKeys.Count != m_MarkerTimeStampsValues.Count)
+ return;
+
+ for (int i = 0; i < m_MarkerTimeStampsKeys.Count; ++i)
+ markerTimeStamps.Add(m_MarkerTimeStampsKeys[i], m_MarkerTimeStampsValues[i]);
+ }
+ }
+
+ [Serializable]
+ class TimelineAssetViewModel : ScriptableObject, ISerializationCallbackReceiver
+ {
+ public const float DefaultTrackScale = 1.0f;
+ public const float DefaultVerticalScroll = 0;
+
+ public static readonly Vector2 TimeAreaDefaultRange = new Vector2(-WindowConstants.timeAreaShownRangePadding, 5.0f); // in seconds. Hack: using negative value to force the UI to have a left margin at 0.
+ public static readonly Vector2 NoPlayRangeSet = new Vector2(float.MaxValue, float.MaxValue);
+
+ public bool timeInFrames = true;
+ public Vector2 timeAreaShownRange = TimeAreaDefaultRange;
+ public bool showAudioWaveform = true;
+ public float trackScale = DefaultTrackScale;
+ public bool playRangeEnabled;
+ public Vector2 timeAreaPlayRange = NoPlayRangeSet;
+ public double windowTime;
+ public float verticalScroll = DefaultVerticalScroll;
+ public bool showMarkerHeader;
+
+ public Dictionary<TrackAsset, TrackViewModelData> tracksViewModelData = new Dictionary<TrackAsset, TrackViewModelData>();
+
+ // Used only for serialization of the dictionary
+ [SerializeField] List<TrackAsset> m_Keys = new List<TrackAsset>();
+ [SerializeField] List<TrackViewModelData> m_Vals = new List<TrackViewModelData>();
+
+ public void OnBeforeSerialize()
+ {
+ m_Keys.Clear();
+ m_Vals.Clear();
+ foreach (var data in tracksViewModelData)
+ {
+ // Assets that don't save, will create nulls when deserializeds
+ if (data.Key != null && data.Value != null && (data.Key.hideFlags & HideFlags.DontSave) == 0)
+ {
+ m_Keys.Add(data.Key);
+ m_Vals.Add(data.Value);
+ }
+ }
+ }
+
+ public void OnAfterDeserialize()
+ {
+ }
+
+ public void OnEnable()
+ {
+ if (m_Keys.Count == m_Vals.Count)
+ {
+ tracksViewModelData.Clear();
+ for (int i = 0; i < m_Keys.Count; i++)
+ {
+ if (m_Keys[i] != null) // if the asset is overwritten the tracks can be null
+ tracksViewModelData[m_Keys[i]] = m_Vals[i];
+ }
+ }
+
+ m_Keys.Clear();
+ m_Vals.Clear();
+ }
+ }
+}