コード例 #1
0
    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);
        }
    }
コード例 #2
0
    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);
        }
    }