public void DeleteObjectById(string deletedObjectId) { if (AutomatineGUIWindow.IsTackId(deletedObjectId)) { foreach (var timelineTrack in timelineTracks) { timelineTrack.DeleteTackById(deletedObjectId); } return; } timelineTracks.Remove(timelineTracks.Where(tl => tl.timelineId == deletedObjectId).FirstOrDefault()); }
public void SelectPreviousTackOfTimelines(string currentActiveObjectId) { /* * if current active id is tack, select previous one. * and if active tack is the head of timeline, select timeline itself. */ if (AutomatineGUIWindow.IsTackId(currentActiveObjectId)) { foreach (var timelineTrack in timelineTracks) { timelineTrack.SelectPreviousTackOf(currentActiveObjectId); } } }
public void SelectAboveObjectById(string currentActiveObjectId) { if (AutomatineGUIWindow.IsTimelineId(currentActiveObjectId)) { var candidateTimelines = timelineTracks.OrderBy(timeline => timeline.GetIndex()).ToList(); var currentTimelineIndex = candidateTimelines.FindIndex(timeline => timeline.timelineId == currentActiveObjectId); if (0 < currentTimelineIndex) { var targetTimeline = timelineTracks[currentTimelineIndex - 1]; Emit(new OnAutomatineEvent(OnAutomatineEvent.EventType.EVENT_OBJECT_SELECTED, targetTimeline.timelineId)); return; } return; } if (AutomatineGUIWindow.IsTackId(currentActiveObjectId)) { /* * select another timeline's same position tack. */ var currentActiveTack = TackById(currentActiveObjectId); if (currentActiveTack == null) { return; } var currentActiveTackStart = currentActiveTack.start; var currentTimelineId = currentActiveTack.parentTimelineId; var aboveTimeline = AboveTimeline(currentTimelineId); if (aboveTimeline != null) { var nextActiveTack = aboveTimeline.TackByStart(currentActiveTackStart); if (nextActiveTack != null) { Emit(new OnAutomatineEvent(OnAutomatineEvent.EventType.EVENT_OBJECT_SELECTED, nextActiveTack.tackId)); } else { // no tack found, select timeline itself. Emit(new OnAutomatineEvent(OnAutomatineEvent.EventType.EVENT_OBJECT_SELECTED, aboveTimeline.timelineId)); } } return; } }
public void SelectBelowObjectById(string currentActiveObjectId) { if (AutomatineGUIWindow.IsTimelineId(currentActiveObjectId)) { var cursoredTimelineIndex = timelineTracks.FindIndex(timeline => timeline.timelineId == currentActiveObjectId); if (cursoredTimelineIndex < timelineTracks.Count - 1) { var targetTimelineIndex = cursoredTimelineIndex + 1; var targetTimeline = timelineTracks[targetTimelineIndex]; Emit(new OnAutomatineEvent(OnAutomatineEvent.EventType.EVENT_OBJECT_SELECTED, targetTimeline.timelineId)); } return; } if (AutomatineGUIWindow.IsTackId(currentActiveObjectId)) { /* * select another timeline's same position tack. */ var currentActiveTack = TackById(currentActiveObjectId); if (currentActiveTack == null) { return; } var currentActiveTackStart = currentActiveTack.start; var currentTimelineId = currentActiveTack.parentTimelineId; var belowTimeline = BelowTimeline(currentTimelineId); if (belowTimeline != null) { var nextActiveTack = belowTimeline.TackByStart(currentActiveTackStart); if (nextActiveTack != null) { Emit(new OnAutomatineEvent(OnAutomatineEvent.EventType.EVENT_OBJECT_SELECTED, nextActiveTack.tackId)); } else { // no tack found, select timeline itself. Emit(new OnAutomatineEvent(OnAutomatineEvent.EventType.EVENT_OBJECT_SELECTED, belowTimeline.timelineId)); } } return; } }
public int GetStartFrameById(string objectId) { if (AutomatineGUIWindow.IsTimelineId(objectId)) { return(-1); } if (AutomatineGUIWindow.IsTackId(objectId)) { var targetContainedTimelineIndex = GetTackContainedTimelineIndex(objectId); if (0 <= targetContainedTimelineIndex) { var foundStartFrame = timelineTracks[targetContainedTimelineIndex].GetStartFrameById(objectId); if (0 <= foundStartFrame) { return(foundStartFrame); } } } return(-1); }
public void SelectNextTackOfTimelines(string currentActiveObjectId) { // if current active id is timeline, select first tack of that. if (AutomatineGUIWindow.IsTimelineId(currentActiveObjectId)) { foreach (var timelineTrack in timelineTracks) { if (timelineTrack.timelineId == currentActiveObjectId) { timelineTrack.SelectDefaultTackOrSelectTimeline(); } } return; } // if current active id is tack, select next one. if (AutomatineGUIWindow.IsTackId(currentActiveObjectId)) { foreach (var timelineTrack in timelineTracks) { timelineTrack.SelectNextTackOf(currentActiveObjectId); } } }