summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineWindowViewPrefs.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineWindowViewPrefs.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineWindowViewPrefs.cs170
1 files changed, 170 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineWindowViewPrefs.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineWindowViewPrefs.cs
new file mode 100644
index 0000000..c1672c1
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/ViewModel/TimelineWindowViewPrefs.cs
@@ -0,0 +1,170 @@
+using UnityEngine;
+using UnityEngine.Timeline;
+using UnityObject = UnityEngine.Object;
+using ViewModelsMap = System.Collections.Generic.Dictionary<UnityEngine.Timeline.TimelineAsset, UnityEditor.Timeline.ScriptableObjectViewPrefs<UnityEditor.Timeline.TimelineAssetViewModel>>;
+using ViewModelsList = System.Collections.Generic.List<UnityEditor.Timeline.ScriptableObjectViewPrefs<UnityEditor.Timeline.TimelineAssetViewModel>>;
+
+namespace UnityEditor.Timeline
+{
+ static class TimelineWindowViewPrefs
+ {
+ public const string FilePath = "Library/Timeline";
+
+ static readonly ViewModelsMap k_ViewModelsMap = new ViewModelsMap();
+ static readonly ViewModelsList k_UnassociatedViewModels = new ViewModelsList();
+
+ public static int viewModelCount
+ {
+ get { return k_ViewModelsMap.Count + k_UnassociatedViewModels.Count; }
+ }
+
+ public static TimelineAssetViewModel GetOrCreateViewModel(TimelineAsset asset)
+ {
+ if (asset == null)
+ return CreateUnassociatedViewModel();
+
+ ScriptableObjectViewPrefs<TimelineAssetViewModel> vm;
+ if (k_ViewModelsMap.TryGetValue(asset, out vm))
+ return vm.viewModel;
+
+ return CreateViewModel(asset).viewModel;
+ }
+
+ public static TimelineAssetViewModel CreateUnassociatedViewModel()
+ {
+ var vm = new ScriptableObjectViewPrefs<TimelineAssetViewModel>(null, FilePath);
+ k_UnassociatedViewModels.Add(vm);
+ return vm.viewModel;
+ }
+
+ static ScriptableObjectViewPrefs<TimelineAssetViewModel> CreateViewModel(TimelineAsset asset)
+ {
+ var vm = new ScriptableObjectViewPrefs<TimelineAssetViewModel>(asset, FilePath);
+ k_ViewModelsMap.Add(asset, vm);
+ return vm;
+ }
+
+ public static void SaveViewModel(TimelineAsset asset)
+ {
+ if (asset == null)
+ return;
+
+ ScriptableObjectViewPrefs<TimelineAssetViewModel> vm;
+ if (!k_ViewModelsMap.TryGetValue(asset, out vm))
+ vm = CreateViewModel(asset);
+
+ vm.Save();
+ }
+
+ public static void SaveAll()
+ {
+ foreach (var kvp in k_ViewModelsMap)
+ kvp.Value.Save();
+ }
+
+ public static void UnloadViewModel(TimelineAsset asset)
+ {
+ ScriptableObjectViewPrefs<TimelineAssetViewModel> vm;
+ if (k_ViewModelsMap.TryGetValue(asset, out vm))
+ {
+ vm.Dispose();
+ k_ViewModelsMap.Remove(asset);
+ }
+ }
+
+ public static void UnloadAllViewModels()
+ {
+ foreach (var kvp in k_ViewModelsMap)
+ kvp.Value.Dispose();
+
+ foreach (var vm in k_UnassociatedViewModels)
+ vm.Dispose();
+
+ k_ViewModelsMap.Clear();
+ k_UnassociatedViewModels.Clear();
+ }
+
+ public static TrackViewModelData GetTrackViewModelData(TrackAsset track)
+ {
+ if (track == null)
+ return new TrackViewModelData();
+
+ if (track.timelineAsset == null)
+ return new TrackViewModelData();
+
+ var prefs = GetOrCreateViewModel(track.timelineAsset);
+
+ TrackViewModelData trackData;
+ if (prefs.tracksViewModelData.TryGetValue(track, out trackData))
+ {
+ return trackData;
+ }
+
+ trackData = new TrackViewModelData();
+ prefs.tracksViewModelData[track] = trackData;
+ return trackData;
+ }
+
+ public static bool IsTrackCollapsed(TrackAsset track)
+ {
+ if (track == null)
+ return true;
+
+ return GetTrackViewModelData(track).collapsed;
+ }
+
+ public static void SetTrackCollapsed(TrackAsset track, bool collapsed)
+ {
+ if (track == null)
+ return;
+
+ GetTrackViewModelData(track).collapsed = collapsed;
+ }
+
+ public static bool IsShowMarkers(TrackAsset track)
+ {
+ if (track == null)
+ return true;
+
+ return GetTrackViewModelData(track).showMarkers;
+ }
+
+ public static void SetTrackShowMarkers(TrackAsset track, bool collapsed)
+ {
+ if (track == null)
+ return;
+
+ GetTrackViewModelData(track).showMarkers = collapsed;
+ }
+
+ public static bool GetShowInlineCurves(TrackAsset track)
+ {
+ if (track == null)
+ return false;
+
+ return GetTrackViewModelData(track).showInlineCurves;
+ }
+
+ public static void SetShowInlineCurves(TrackAsset track, bool inlineOn)
+ {
+ if (track == null)
+ return;
+
+ GetTrackViewModelData(track).showInlineCurves = inlineOn;
+ }
+
+ public static float GetInlineCurveHeight(TrackAsset asset)
+ {
+ if (asset == null)
+ return TrackViewModelData.DefaultinlineAnimationCurveHeight;
+
+ return GetTrackViewModelData(asset).inlineAnimationCurveHeight;
+ }
+
+ public static void SetInlineCurveHeight(TrackAsset asset, float height)
+ {
+ if (asset != null)
+ GetTrackViewModelData(asset).inlineAnimationCurveHeight = height;
+ }
+ }
+}