コード例 #1
0
 public void OverwriteAllChunks(AbstractTrackChunk <T> chunk)
 {
     foreach (AbstractTrackChunk <T> c in chunks)
     {
         c.CopyFromChunk(chunk);
     }
 }
コード例 #2
0
 public void Initialize(AbstractDataTrack <T> track, AbstractTrackChunk <T> chunk)
 {
     this.Track = track;
     this.Chunk = chunk;
     this.Show();
     OnInitialize();
 }
コード例 #3
0
 public void CopyFromChunk(AbstractTrackChunk <T> other)
 {
     this.Snap = other.Snap;
     this.HarmonySequenceNumber = other.HarmonySequenceNumber;
     this.IsVariation           = other.IsVariation;
     this.IntensityCurveType    = other.IntensityCurveType;
     this.Data = track.CopyData(other.Data);
 }
コード例 #4
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);
        }
    }
コード例 #5
0
    public bool CanPlaceTrackChunk(float position, float width, AbstractTrackChunk <T> ignore = null)
    {
        if (position + width > 1f)
        {
            return(false);
        }

        foreach (AbstractTrackChunk <T> c in chunks)
        {
            if (c != ignore)
            {
                if ((position + width > c.Position && position + width < c.Position + c.Width) ||
                    (position > c.Position && position < c.Position + c.Width))
                {
                    return(false);
                }
            }
        }

        return(true);
    }
コード例 #6
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);
        }
    }
コード例 #7
0
 public void RemoveChunk(AbstractTrackChunk <T> chunk)
 {
     chunks.Remove(chunk);
     GameObject.Destroy(chunk.gameObject);
 }
コード例 #8
0
 private void OnCopyChunk()
 {
     ClipboardChunk = Chunk;
 }