public virtual void OnPointerDown(PointerEventData e) { if (flags == CursorFlag.None) { return; } grip = flags; OnDrag(e); }
public virtual void OnPointerUp(PointerEventData e) { grip = CursorFlag.None; if (!onUI) { flags = CursorFlag.None; Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); } }
public virtual void OnPointerExit(PointerEventData e) { onUI = false; if (grip != CursorFlag.None) { return; } flags = CursorFlag.None; Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); }
protected virtual void Update() { if (!onUI || grip != CursorFlag.None) { return; } var r = rect.rect; var v2 = rect.InverseTransformPoint(Input.mousePosition); if (v2.x <= r.x + edgeWidth) { flags |= CursorFlag.Left; } else { flags &= ~CursorFlag.Left; } if (v2.y <= r.y + edgeWidth) { flags |= CursorFlag.Bottom; } else { flags &= ~CursorFlag.Bottom; } if (v2.x >= r.x + r.width - edgeWidth) { flags |= CursorFlag.Right; } else { flags &= ~CursorFlag.Right; } if (v2.y >= r.y + r.height - edgeWidth) { flags |= CursorFlag.Top; } else { flags &= ~CursorFlag.Top; } if ((flags & CursorFlag.TL) == CursorFlag.TL || (flags & CursorFlag.BR) == CursorFlag.BR) { Cursor.SetCursor(NWSE_Cursor, new Vector2(16, 16), CursorMode.Auto); } else if ((flags & CursorFlag.TR) == CursorFlag.TR || (flags & CursorFlag.BL) == CursorFlag.BL) { Cursor.SetCursor(NESW_Cursor, new Vector2(16, 16), CursorMode.Auto); } else if ((flags & CursorFlag.Top) == CursorFlag.Top || (flags & CursorFlag.Bottom) == CursorFlag.Bottom) { Cursor.SetCursor(NS_Cursor, new Vector2(16, 16), CursorMode.Auto); } else if ((flags & CursorFlag.Left) == CursorFlag.Left || (flags & CursorFlag.Right) == CursorFlag.Right) { Cursor.SetCursor(WE_Cursor, new Vector2(16, 16), CursorMode.Auto); } else { Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); } }
protected virtual void OnEnable() { onUI = false; flags = grip = CursorFlag.None; }