A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using UnityEngine;
5using UnityEngine.Timeline;
6using Object = UnityEngine.Object;
7
8namespace UnityEditor.Timeline
9{
10 static class MarkerModifier
11 {
12 public static void DeleteMarker(IMarker marker)
13 {
14 var trackAsset = marker.parent;
15 if (trackAsset != null)
16 {
17 SelectionManager.Remove(marker);
18 trackAsset.DeleteMarker(marker);
19 }
20 }
21
22 public static IEnumerable<IMarker> CloneMarkersToParent(IEnumerable<IMarker> markers, TrackAsset parent)
23 {
24 if (!markers.Any()) return Enumerable.Empty<IMarker>();
25 var clonedMarkers = new List<IMarker>();
26 foreach (var marker in markers)
27 clonedMarkers.Add(CloneMarkerToParent(marker, parent));
28 return clonedMarkers;
29 }
30
31 public static IMarker CloneMarkerToParent(IMarker marker, TrackAsset parent)
32 {
33 var markerObject = marker as ScriptableObject;
34 if (markerObject == null) return null;
35
36 var newMarkerObject = Object.Instantiate(markerObject);
37 AddMarkerToParent(newMarkerObject, parent);
38
39 newMarkerObject.name = markerObject.name;
40 try
41 {
42 CustomTimelineEditorCache.GetMarkerEditor((IMarker)newMarkerObject).OnCreate((IMarker)newMarkerObject, marker);
43 }
44 catch (Exception e)
45 {
46 Debug.LogException(e);
47 }
48
49
50 return (IMarker)newMarkerObject;
51 }
52
53 static void AddMarkerToParent(ScriptableObject marker, TrackAsset parent)
54 {
55 TimelineCreateUtilities.SaveAssetIntoObject(marker, parent);
56 TimelineUndo.RegisterCreatedObjectUndo(marker, L10n.Tr("Duplicate Marker"));
57 UndoExtensions.RegisterTrack(parent, L10n.Tr("Duplicate Marker"));
58
59 if (parent != null)
60 {
61 parent.AddMarker(marker);
62 ((IMarker)marker).Initialize(parent);
63 }
64 }
65 }
66}