A game about forced loneliness, made by TACStudios
at master 66 lines 2.1 kB view raw
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}