private void ProcessDuplicate(IUSHierarchyItem item) { var timelineContainer = item as USTimelineContainerHierarchyItem; if (timelineContainer != null) { var newTimelineContainer = USEditor.DuplicateTimelineContainer(timelineContainer.TimelineContainer, CurrentSequence); USUndoManager.RegisterCreatedObjectUndo(newTimelineContainer.gameObject, "Duplicate Timeline"); AddNewTimelineContainer(newTimelineContainer); } var timeline = item as IUSTimelineHierarchyItem; if (timeline != null) { USUndoManager.RegisterCompleteObjectUndo(this, "Duplicate Timeline"); USUndoManager.RegisterCompleteObjectUndo(USHierarchy, "Duplicate Timeline"); var newTimeline = USEditor.DuplicateTimeline(timeline.BaseTimeline, timeline.BaseTimeline.TimelineContainer); USUndoManager.RegisterCreatedObjectUndo(newTimeline.gameObject, "Duplicate Timeline"); var parent = USHierarchy.GetParentOf(item) as USTimelineContainerHierarchyItem; USUndoManager.RegisterCompleteObjectUndo(parent, "Duplicate Timeline"); parent.AddTimeline(newTimeline); } }
public void ProcessDelete(IUSHierarchyItem item) { var timelineContainerItem = item as USTimelineContainerHierarchyItem; var timelineHierarchyItem = item as IUSTimelineHierarchyItem; if (timelineContainerItem) { foreach (var child in timelineContainerItem.Children.ToList()) { ProcessDelete(child); } USUndoManager.RegisterCompleteObjectUndo(this, "Remove Timeline Container"); USUndoManager.RegisterCompleteObjectUndo(USHierarchy, "Remove Timeline Container"); USHierarchy.RootItems.Remove(timelineContainerItem); var gameObjectToDestroy = timelineContainerItem.TimelineContainer.gameObject; USUndoManager.DestroyImmediate(timelineContainerItem); USUndoManager.DestroyImmediate(gameObjectToDestroy); } else if (timelineHierarchyItem) { var parent = USHierarchy.GetParentOf(timelineHierarchyItem); timelineHierarchyItem.RestoreBaseState(); USUndoManager.RegisterCompleteObjectUndo(parent, "Remove Timeline"); parent.RemoveChild(timelineHierarchyItem); var gameObjectToDestroy = timelineHierarchyItem.TimelineToDestroy().gameObject; USUndoManager.DestroyImmediate(timelineHierarchyItem); USUndoManager.DestroyImmediate(gameObjectToDestroy); } }