public ClipsLayer(Layer layerOrder, IRowGUI parent) : base(layerOrder) { var track = parent.asset; track.SortClips(); TimelineClipGUI previousClipGUI = null; foreach (var clip in track.clips) { var oldClipGUI = ItemToItemGui.GetGuiForClip(clip); var isInvalid = oldClipGUI != null && oldClipGUI.isInvalid; // HACK Make sure to carry invalidy state when refereshing the cache. var currentClipGUI = new TimelineClipGUI(clip, parent, this) { isInvalid = isInvalid }; if (previousClipGUI != null) { previousClipGUI.nextClip = currentClipGUI; } currentClipGUI.previousClip = previousClipGUI; AddItem(currentClipGUI); previousClipGUI = currentClipGUI; } }
public static CurveDataSource Create(IRowGUI trackGUI) { if (trackGUI.asset is AnimationTrack) { return(new InfiniteClipCurveDataSource(trackGUI)); } return(new TrackParametersCurveDataSource(trackGUI)); }
void BuildGUICache(IRowGUI parent) { m_ClipsLayer = new ClipsLayer(0, parent); m_Layers = new List <ItemsLayer> { m_ClipsLayer, new MarkersLayer(1, parent) }; }
void BuildGUICache(IRowGUI parent) { m_ClipsLayer = new ClipsLayer(Layer.Clips, parent); m_Layers = new List <ILayer> { m_ClipsLayer, new MarkersLayer(Layer.Markers, parent) }; }
public TimelineMarkerClusterGUI(List <TimelineMarkerGUI> guis, IRowGUI parent, IZOrderProvider zOrderProvider, LayerZOrder layerZOrder) : base(parent) { m_MarkerGUIs = guis; m_ZOrderProvider = zOrderProvider; zOrder = layerZOrder; SortMarkers(); topMarker.onStartDrag += OnDragTopMarker; }
void CreateLists(IRowGUI parent) { var markerCount = parent.asset.GetMarkerCount(); if (markerCount == 0) { return; } var accumulator = new List <IMarker>(); var sortedMarkers = new List <IMarker>(parent.asset.GetMarkers()); var vm = TimelineWindowViewPrefs.GetTrackViewModelData(parent.asset); sortedMarkers.Sort((lhs, rhs) => { // Sort by time first var timeComparison = lhs.time.CompareTo(rhs.time); if (timeComparison != 0) { return(timeComparison); } // If there's a collision, sort by edit timestamp var lhsObject = lhs as object; var rhsObject = rhs as object; if (lhsObject.Equals(null) || rhsObject.Equals(null)) { return(0); } var lhsHash = lhsObject.GetHashCode(); var rhsHash = rhsObject.GetHashCode(); if (vm.markerTimeStamps.ContainsKey(lhsHash) && vm.markerTimeStamps.ContainsKey(rhsHash)) { return(vm.markerTimeStamps[lhsHash].CompareTo(vm.markerTimeStamps[rhsHash])); } return(0); }); foreach (var current in sortedMarkers) { // TODO: Take zoom factor into account? if (accumulator.Count > 0 && Math.Abs(current.time - accumulator[accumulator.Count - 1].time) > TimeUtility.kTimeEpsilon) { ProcessAccumulator(accumulator, parent); } accumulator.Add(current); } ProcessAccumulator(accumulator, parent); }
public TimelineClipGUI(TimelineClip clip, IRowGUI parent, IZOrderProvider provider) : base(parent) { zOrderProvider = provider; zOrder = provider.Next(); m_EditorItem = EditorClipFactory.GetEditorClip(clip); m_ClipEditor = CustomTimelineEditorCache.GetClipEditor(clip); supportResize = true; leftHandle = new TimelineClipHandle(this, TrimEdge.Start); rightHandle = new TimelineClipHandle(this, TrimEdge.End); ItemToItemGui.Add(clip, this); }
public TimelineClipGUI(TimelineClip clip, IRowGUI parent, IZOrderProvider provider) : base(parent) { zOrderProvider = provider; zOrder = provider.Next(); m_EditorItem = EditorClipFactory.GetEditorClip(clip); clip.dirtyHash = 0; supportResize = true; m_LeftHandle = new TimelineClipHandle(this, TrimEdge.Start); m_RightHandle = new TimelineClipHandle(this, TrimEdge.End); ItemToItemGui.Add(clip, this); }
public TimelineMarkerGUI(IMarker theMarker, IRowGUI parent, IZOrderProvider provider) : base(parent) { marker = theMarker; m_Selectable = marker.GetType().IsSubclassOf(typeof(UnityObject)); m_MarkerHash = 0; var o = marker as object; if (!o.Equals(null)) { m_MarkerHash = o.GetHashCode(); } zOrderProvider = provider; zOrder = zOrderProvider.Next(); ItemToItemGui.Add(marker, this); }
void ProcessAccumulator(List <IMarker> accumulator, IRowGUI parent) { if (accumulator.Count == 0) { return; } if (accumulator.Count == 1) { AddItem(new TimelineMarkerGUI(accumulator[0], parent, this)); } else { // Ensure that the cluster is always considered *below* the markers it contains. var clusterZOrder = Next(); AddItem( new TimelineMarkerClusterGUI( accumulator.Select(m => new TimelineMarkerGUI(m, parent, this)).ToList(), parent, this, clusterZOrder)); } accumulator.Clear(); }
public InfiniteClipCurveDataSource(IRowGUI trackGui) : base(trackGui) { m_AnimationTrack = trackGui.asset as AnimationTrack; }
public TrackItemsDrawer(IRowGUI parent) { m_Layers = null; m_ClipsLayer = null; BuildGUICache(parent); }
public MarkersLayer(Layer layerOrder, IRowGUI parent) : base(layerOrder) { CreateLists(parent); }
protected TimelineItemGUI(IRowGUI parent) { this.parent = parent; m_Styles = DirectorStyles.Instance; }
public TrackParametersCurveDataSource(IRowGUI trackGui) : base(trackGui) { m_CurvesProxy = new CurvesProxy(trackGui.asset); }
public TrackItemsDrawer(IRowGUI parent) { BuildGUICache(parent); }
protected CurveDataSource(IRowGUI trackGUI) { m_TrackGUI = trackGUI; }