public void InsertItemsAtTime(IEnumerable <ItemsPerTrack> itemsGroups, double requestedTime) { ItemsUtils.SetItemsStartTime(itemsGroups, requestedTime); EditModeMixUtils.PrepareItemsForInsertion(itemsGroups); if (!EditModeMixUtils.CanInsert(itemsGroups)) { var validTime = itemsGroups.Select(c => c.targetTrack).Max(parent => parent.end); ItemsUtils.SetItemsStartTime(itemsGroups, validTime); } }
public bool ValidateMove(ItemsPerTrack itemsGroup) { var track = itemsGroup.targetTrack; var items = itemsGroup.items; if (EditModeUtils.IsInfiniteTrack(track)) { double startTime; double stopTime; EditModeUtils.GetInfiniteClipBoundaries(track, out startTime, out stopTime); return(items.All(item => !EditModeUtils.IsItemWithinRange(item, startTime, stopTime) && !EditModeUtils.IsRangeWithinItem(startTime, stopTime, item))); } var siblings = ItemsUtils.GetItemsExcept(itemsGroup.targetTrack, items); return(items.All(item => EditModeMixUtils.GetPlacementValidity(item, siblings) == PlacementValidity.Valid)); }