/// <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; }
/// <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; }
/// <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)); }
/// <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)); }
/// <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) { }
/// <summary> /// Process OnInitializePotentialDrag event. /// </summary> /// <param name="eventData">Current event data.</param> protected virtual void OnInitializePotentialDrag(PointerEventData eventData) { CurrentTarget = null; }