using System.Collections.Generic; using UnityEngine; namespace UnityEditor.Timeline { class MoveItemModeReplace : IMoveItemMode, IMoveItemDrawer { public void OnTrackDetach(IEnumerable itemsGroups) { // Nothing } public void HandleTrackSwitch(IEnumerable itemsGroups) { // Nothing } public bool AllowTrackSwitch() { return true; } public double AdjustStartTime(WindowState state, ItemsPerTrack itemsGroup, double time) { return time; } public void OnModeClutchEnter(IEnumerable itemsGroups) { // TODO } public void OnModeClutchExit(IEnumerable itemsGroups) { // TODO } public void BeginMove(IEnumerable itemsGroups) { foreach (var itemsGroup in itemsGroups) { EditModeUtils.SetParentTrack(itemsGroup.items, null); } } public void UpdateMove(IEnumerable itemsGroups) { // Nothing } public void FinishMove(IEnumerable itemsGroups) { EditModeReplaceUtils.Insert(itemsGroups); } public bool ValidateMove(ItemsPerTrack itemsGroup) { return true; } public void DrawGUI(WindowState state, IEnumerable movingItems, Color color) { var operationWillReplace = false; foreach (var itemsPerTrack in movingItems) { var bounds = itemsPerTrack.onTrackItemsBounds; var counter = 0; foreach (var item in itemsPerTrack.items) { if (EditModeUtils.GetFirstIntersectedItem(itemsPerTrack.items, item.start) != null) { EditModeGUIUtils.DrawBoundsEdge(bounds[counter], color, TrimEdge.Start); operationWillReplace = true; } if (EditModeUtils.GetFirstIntersectedItem(itemsPerTrack.items, item.end) != null) { EditModeGUIUtils.DrawBoundsEdge(bounds[counter], color, TrimEdge.End); operationWillReplace = true; } counter++; // TODO Display swallowed clips? } } if (operationWillReplace) { TimelineCursors.SetCursor(TimelineCursors.CursorType.Replace); } else { TimelineCursors.ClearCursor(); } } } }