public void SetData(TimelineData data) { Data = data; int maxActionIndex = 0; foreach (var track in data.Tracks) { foreach (var action in track.Actions) { if (action.Index > maxActionIndex) { maxActionIndex = action.Index; } } } setting.MaxActionIndex = maxActionIndex; trackDrawers.Clear(); selectedTrackIndex = -1; for (int i = 0; i < data.Tracks.Count; ++i) { TracklineDrawer tracklineDrawer = new TracklineDrawer(this); tracklineDrawer.SetData(data.Tracks[i]); trackDrawers.Add(tracklineDrawer); } }
internal void OnTrackAdded(TracklineData tracklineData, int insertIndex = -1) { if (insertIndex < 0) { insertIndex = trackDrawers.Count; } TracklineDrawer tracklineDrawer = new TracklineDrawer(this); tracklineDrawer.SetData(tracklineData); Data.Tracks.Insert(insertIndex, tracklineData); trackDrawers.Insert(insertIndex, tracklineDrawer); }
internal void OnTrackSelected(TracklineDrawer tracklineDrawer) { if (tracklineDrawer == null) { selectedTrackIndex = -1; } else { int newSelectedTrackIndex = trackDrawers.IndexOf(tracklineDrawer); if (newSelectedTrackIndex != selectedTrackIndex) { if (selectedTrackIndex >= 0 && selectedTrackIndex < trackDrawers.Count) { trackDrawers[selectedTrackIndex].IsSelected = false; } selectedTrackIndex = newSelectedTrackIndex; } } Window.Repaint(); }
public ActionDrawer(TracklineDrawer drawer) { ParentDrawer = drawer; }