public override void LoadFromData(TrackData data) { base.LoadFromData(data); foreach (TrackChunkData c in data.chunks) { AbstractTrackChunk <T> chunk = InstanceChunk(); chunk.InitializeFromSerializedData(timeline, this, timeline.GetTimelineRect(), c); chunk.UpdateTrackChunk(zoom, offset); this.chunks.Add(chunk); } }
public void OnPointerClick(PointerEventData eventData) { if (eventData.button == PointerEventData.InputButton.Middle) { return; } Vector2 position = timeline.ScreenToNormalizedPosition(eventData.position); position.x = (position.x / zoom) + offset; float width = .05f / zoom; if (CanPlaceTrackChunk(position.x, width)) { T lastData = GetDefaultData(); AbstractTrackChunk <T> chunk = InstanceChunk(); chunk.Initialize(timeline, this, lastData, timeline.GetTimelineRect(), position.x, width); if (chunks.Count > 0) { AbstractTrackChunk <T> lastClosest = chunks.FindLast(x => x.Position < position.x); if (lastClosest) { chunk.CopyFromChunk(lastClosest); } else { chunk.CopyFromChunk(chunks[chunks.Count - 1]); } } chunk.UpdateTrackChunk(zoom, offset); this.chunks.Add(chunk); } }