public void OnBeginDrag(PointerEventData eventData) { VerticalClamp = false; HorizontalClamp = false; if (hoverOverObject) { hoverOverObject.isOccupied = false; } oldHoverOverObject = hoverOverObject; // Only allow dragging if certain conditions are met if (MayDrag(eventData) == true) { var vector = default(Vector2); var target = TargetTransform; // Is this pointer inside this rect transform? if (RectTransformUtility.ScreenPointToLocalPointInRectangle(target, eventData.position, eventData.pressEventCamera, out vector) == true) { dragging = true; currentPosition = new Vector2(target.anchoredPosition.x, target.anchoredPosition.y); initialPosition = currentPosition; if (beginTransitions != null) { beginTransitions.Begin(); } if (onBegin != null) { onBegin.Invoke(); } } } }
private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("DragBox")) { if (!other.gameObject.GetComponent <LeanDragToTarget>().isOccupied) { hoverOverObject = other.gameObject.GetComponent <LeanDragToTarget>(); } } }
private void OnTriggerExit2D(Collider2D other) { if (other.gameObject.CompareTag("DragBox")) { var hover = other.gameObject; if (hover != null && hover.GetComponent <LeanDragToTarget>() == hoverOverObject) { hoverOverObject = null; } } }
public void OnEndDrag(PointerEventData eventData) { dragging = false; if (hoverOverObject == null && oldHoverOverObject != null) { hoverOverObject = oldHoverOverObject; } if (hoverOverObject == null) { VerticalMin = initialPosition.y; VerticalMax = initialPosition.y; HorizontalMin = initialPosition.x; HorizontalMax = initialPosition.x; if (hoverOverObject && hoverOverObject.canOnlyHoldOne) { hoverOverObject.isOccupied = true; } } else { VerticalMin = hoverOverObject.y; VerticalMax = hoverOverObject.y; HorizontalMin = hoverOverObject.x; HorizontalMax = hoverOverObject.x; if (hoverOverObject.canOnlyHoldOne) { hoverOverObject.isOccupied = true; } } VerticalClamp = true; HorizontalClamp = true; horizontalMagnet = 10f; verticalMagnet = 10f; if (endTransitions != null) { endTransitions.Begin(); } if (onEnd != null) { onEnd.Invoke(); } }