Example #1
0
    public void OnDrag(PointerEventData eventData)
    {
        if (eventData.button == PointerEventData.InputButton.Middle)
        {
            timeline.OnTimelineDrag(eventData);
            return;
        }

        if (resizing)
        {
            float nextWidth = Mathf.Clamp01(this.Width + ScreenToNormalizedPosition(eventData.delta, true).x / zoom);
            float minWidth  = .001f;

            if (Snap)
            {
                int   bpm            = timeline.CurrentBPM;
                float secondsPerBeat = (60f / (float)bpm) * GetSnappingResolution();
                minWidth = secondsPerBeat / timeline.Duration; // One beat minimum if it is snapped
            }

            // Min size is 1/1000th
            if (nextWidth > minWidth && track.CanPlaceTrackChunk(Position, nextWidth, this))
            {
                this.Width = nextWidth;
            }
        }
        else
        {
            float nextPosition = Mathf.Clamp01(this.Position + ScreenToNormalizedPosition(eventData.delta, true).x / zoom);

            if (track.CanPlaceTrackChunk(nextPosition, Width, this))
            {
                this.Position = nextPosition;
            }
        }
    }
 public void OnDrag(PointerEventData eventData)
 {
     timeline.OnTimelineDrag(eventData);
 }