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); } }
private void ProcessDuplicateToSequence(IUSHierarchyItem item, USSequencer sequence) { var affectedObject = default(Transform); var timelineContainer = item as USTimelineContainerHierarchyItem; var timeline = item as IUSTimelineHierarchyItem; if (timelineContainer != null) { affectedObject = timelineContainer.TimelineContainer.AffectedObject; } if (timeline != null) { affectedObject = timeline.BaseTimeline.AffectedObject; } if (timelineContainer && USRuntimeUtility.HasTimelineContainerWithAffectedObject(sequence, affectedObject)) { EditorUtility.DisplayDialog("Cannot continue", string.Format("The sequence {0} already has timelines for the object {1}", sequence.name, affectedObject.name), "Ok"); return; } if (timelineContainer) { var newTimelineContainer = USEditor.DuplicateTimelineContainer(timelineContainer.TimelineContainer, sequence); USUndoManager.RegisterCreatedObjectUndo(newTimelineContainer.gameObject, "Duplicate Timeline"); } if (timeline) { var newTimelineContainer = sequence.GetTimelineContainerFor(timeline.BaseTimeline.AffectedObject); if (newTimelineContainer == null) { newTimelineContainer = sequence.CreateNewTimelineContainer(timeline.BaseTimeline.AffectedObject); USUndoManager.RegisterCreatedObjectUndo(newTimelineContainer.gameObject, "Duplicate Timeline"); } var newTimeline = USEditor.DuplicateTimeline(timeline.BaseTimeline, newTimelineContainer); USUndoManager.RegisterCreatedObjectUndo(newTimeline.gameObject, "Duplicate Timeline"); } }