summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/MarkerModifier.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/MarkerModifier.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/MarkerModifier.cs66
1 files changed, 66 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/MarkerModifier.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/MarkerModifier.cs
new file mode 100644
index 0000000..9da5277
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/MarkerModifier.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.Timeline;
+using Object = UnityEngine.Object;
+
+namespace UnityEditor.Timeline
+{
+ static class MarkerModifier
+ {
+ public static void DeleteMarker(IMarker marker)
+ {
+ var trackAsset = marker.parent;
+ if (trackAsset != null)
+ {
+ SelectionManager.Remove(marker);
+ trackAsset.DeleteMarker(marker);
+ }
+ }
+
+ public static IEnumerable<IMarker> CloneMarkersToParent(IEnumerable<IMarker> markers, TrackAsset parent)
+ {
+ if (!markers.Any()) return Enumerable.Empty<IMarker>();
+ var clonedMarkers = new List<IMarker>();
+ foreach (var marker in markers)
+ clonedMarkers.Add(CloneMarkerToParent(marker, parent));
+ return clonedMarkers;
+ }
+
+ public static IMarker CloneMarkerToParent(IMarker marker, TrackAsset parent)
+ {
+ var markerObject = marker as ScriptableObject;
+ if (markerObject == null) return null;
+
+ var newMarkerObject = Object.Instantiate(markerObject);
+ AddMarkerToParent(newMarkerObject, parent);
+
+ newMarkerObject.name = markerObject.name;
+ try
+ {
+ CustomTimelineEditorCache.GetMarkerEditor((IMarker)newMarkerObject).OnCreate((IMarker)newMarkerObject, marker);
+ }
+ catch (Exception e)
+ {
+ Debug.LogException(e);
+ }
+
+
+ return (IMarker)newMarkerObject;
+ }
+
+ static void AddMarkerToParent(ScriptableObject marker, TrackAsset parent)
+ {
+ TimelineCreateUtilities.SaveAssetIntoObject(marker, parent);
+ TimelineUndo.RegisterCreatedObjectUndo(marker, "Duplicate Marker");
+ TimelineUndo.PushUndo(parent, "Duplicate Marker");
+
+ if (parent != null)
+ {
+ parent.AddMarker(marker);
+ ((IMarker)marker).Initialize(parent);
+ }
+ }
+ }
+}