Пример #1
0
        /// <summary>
        /// When dragging is occurring this will be called every time the cursor is moved.
        /// </summary>
        /// <param name="eventData">Current event data.</param>
        public virtual void OnDrag(PointerEventData eventData)
        {
            if (!IsDragged)
            {
                return;
            }

            oldTarget = currentTarget;

            currentTarget = FindTarget(eventData);
            if ((oldTarget != null) && (currentTarget != oldTarget))
            {
                oldTarget.DropCanceled(Data, eventData);
            }

            if (currentTarget != null)
            {
                // set cursor can drop
                Cursor.SetCursor(AllowDropCursor, AllowDropCursorHotSpot, Compatibility.GetCursorMode());
            }
            else
            {
                // set cursor fail drop
                Cursor.SetCursor(DeniedDropCursor, DeniedDropCursorHotSpot, Compatibility.GetCursorMode());
            }

            Vector2 point;

            if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(CanvasTransform as RectTransform, Input.mousePosition, eventData.pressEventCamera, out point))
            {
                return;
            }

            DragPoint.localPosition = point;
        }
Пример #2
0
        /// <summary>
        /// Find current target.
        /// </summary>
        /// <param name="eventData">Event data.</param>
        protected virtual void FindCurrentTarget(PointerEventData eventData)
        {
            var new_target = FindTarget(eventData);

            if (new_target != CurrentTarget)
            {
                if (CurrentTarget != null)
                {
                    CurrentTarget.DropCanceled(Data, eventData);
                }

                OnTargetChanged(CurrentTarget, new_target);
            }

            if (new_target != null)
            {
                // set cursor can drop
                Cursor.SetCursor(AllowDropCursor, AllowDropCursorHotSpot, Compatibility.GetCursorMode());
            }
            else
            {
                // set cursor fail drop
                Cursor.SetCursor(DeniedDropCursor, DeniedDropCursorHotSpot, Compatibility.GetCursorMode());
            }

            CurrentTarget = new_target;
        }
Пример #3
0
        /// <summary>
        /// Check if target can receive drop.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="eventData">Event data.</param>
        /// <returns>true if target can receive drop; otherwise false.</returns>
        protected override bool CheckTarget(IDropSupport <TData> target, PointerEventData eventData)
        {
            var track_bg = CurrentTarget as TrackBackgroundBase <TData, TPoint>;

            if (track_bg != null)
            {
                track_bg.DragPositionPadding = DragPositionPadding;
            }

            return(base.CheckTarget(target, eventData));
        }
Пример #4
0
 /// <summary>
 /// Check if target can receive drop.
 /// </summary>
 /// <param name="target">Target.</param>
 /// <param name="eventData">Event data.</param>
 /// <returns>true if target can receive drop; otherwise false.</returns>
 protected virtual bool CheckTarget(IDropSupport <T> target, PointerEventData eventData)
 {
     return(target.CanReceiveDrop(Data, eventData));
 }
Пример #5
0
 /// <summary>
 /// Process current drop target changed event.
 /// </summary>
 /// <param name="old">Previous drop target.</param>
 /// <param name="current">Current drop target.</param>
 protected virtual void OnTargetChanged(IDropSupport <T> old, IDropSupport <T> current)
 {
 }
Пример #6
0
 /// <summary>
 /// Process OnInitializePotentialDrag event.
 /// </summary>
 /// <param name="eventData">Current event data.</param>
 protected virtual void OnInitializePotentialDrag(PointerEventData eventData)
 {
     CurrentTarget = null;
 }