public void DeleteObjectById(string deletedObjectId) { foreach (var timelineTrack in timelineTracks) { if (TimeFlowShikiGUIWindow.IsTimelineId(deletedObjectId)) { if (timelineTrack.timelineId == deletedObjectId) { timelineTrack.Deleted(); } } if (TimeFlowShikiGUIWindow.IsTackId(deletedObjectId)) { timelineTrack.DeleteTackById(deletedObjectId); } } }
public void SelectAboveObjectById(string currentActiveObjectId) { if (TimeFlowShikiGUIWindow.IsTimelineId(currentActiveObjectId)) { var candidateTimelines = timelineTracks.Where(timeline => timeline.IsExistTimeline).OrderBy(timeline => timeline.GetIndex()).ToList(); var currentTimelineIndex = candidateTimelines.FindIndex(timeline => timeline.timelineId == currentActiveObjectId); if (0 < currentTimelineIndex) { var targetTimeline = timelineTracks[currentTimelineIndex - 1]; Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_OBJECT_SELECTED, targetTimeline.timelineId)); return; } return; } if (TimeFlowShikiGUIWindow.IsTackId(currentActiveObjectId)) { /* * select another timeline's same position tack. */ var currentActiveTack = TackById(currentActiveObjectId); var currentActiveTackStart = currentActiveTack.start; var currentTimelineId = currentActiveTack.parentTimelineId; var aboveTimeline = AboveTimeline(currentTimelineId); if (aboveTimeline != null) { var nextActiveTacks = aboveTimeline.TacksByStart(currentActiveTackStart); if (nextActiveTacks.Any()) { var targetTack = nextActiveTacks[0]; Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_OBJECT_SELECTED, targetTack.tackId)); } else { // no tack found, select timeline itself. Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_OBJECT_SELECTED, aboveTimeline.timelineId)); } } return; } }
public void SelectBelowObjectById(string currentActiveObjectId) { if (TimeFlowShikiGUIWindow.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 OnTrackEvent(OnTrackEvent.EventType.EVENT_OBJECT_SELECTED, targetTimeline.timelineId)); } return; } if (TimeFlowShikiGUIWindow.IsTackId(currentActiveObjectId)) { /* * select another timeline's same position tack. */ var currentActiveTack = TackById(currentActiveObjectId); var currentActiveTackStart = currentActiveTack.start; var currentTimelineId = currentActiveTack.parentTimelineId; var belowTimeline = BelowTimeline(currentTimelineId); if (belowTimeline != null) { var nextActiveTacks = belowTimeline.TacksByStart(currentActiveTackStart); if (nextActiveTacks.Any()) { var targetTack = nextActiveTacks[0]; Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_OBJECT_SELECTED, targetTack.tackId)); } else { // no tack found, select timeline itself. Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_OBJECT_SELECTED, belowTimeline.timelineId)); } } return; } }
public int GetStartFrameById(string objectId) { if (TimeFlowShikiGUIWindow.IsTimelineId(objectId)) { return(-1); } if (TimeFlowShikiGUIWindow.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 (TimeFlowShikiGUIWindow.IsTimelineId(currentActiveObjectId)) { foreach (var timelineTrack in timelineTracks) { if (timelineTrack.timelineId == currentActiveObjectId) { timelineTrack.SelectDefaultTackOrSelectTimeline(); } } return; } // if current active id is tack, select next one. if (TimeFlowShikiGUIWindow.IsTackId(currentActiveObjectId)) { foreach (var timelineTrack in timelineTracks) { timelineTrack.SelectNextTackOf(currentActiveObjectId); } } }