private void Border_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { // Determine which side of the border is being dragged if (!isDraggingBorder) { var relMousePos = e.GetPosition(Border); // Calculate which edge is being dragged var topEdgeOffset = Math.Abs(relMousePos.Y); var bottomEdgeOffset = Math.Abs(Border.ActualHeight - relMousePos.Y); var leftEdgeOffset = Math.Abs(relMousePos.X); var rightEdgeOffset = Math.Abs(Border.ActualWidth - relMousePos.X); if (leftEdgeOffset < DRAG_RADIUS && topEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.TOP_LEFT; } else if (rightEdgeOffset < DRAG_RADIUS && topEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.TOP_RIGHT; } else if (rightEdgeOffset < DRAG_RADIUS && bottomEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.BOTTOM_RIGHT; } else if (leftEdgeOffset < DRAG_RADIUS && bottomEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.BOTTOM_LEFT; } else if (topEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.TOP_EDGE; } else if (rightEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.RIGHT_EDGE; } // Bottom edge else if (bottomEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.BOTTOM_EDGE; } // Left edge else if (leftEdgeOffset < DRAG_RADIUS) { BorderDragZone = DragZone.LEFT_EDGE; } else { return; } isDraggingBorder = true; Canvas.MouseMove += CanvasControl_MouseMove; return; } } }
public void snapTo(Vector3 newPos, DragZone dragZone) { this.transform.position = new Vector3(newPos.x, newPos.y, this.transform.position.z); if (dragZone != currentDragZone || currentDragZone == null) { if (currentDragZone != null) { currentDragZone.setDraggable(null); } currentDragZone = dragZone; lastGoodPos = dragZone.transform.position; dragZone.setDraggable(this); } }
public void OnDrop(PointerEventData eventData) { DragZone d = eventData.pointerDrag.GetComponent <DragZone>(); if (d != null) { Debug.Log("On Drop to" + gameObject.name); d.parentToReturnTo = this.transform; level = level + 1; } if (level == 1) { SceneManager.LoadScene(17); } }