private void HandleDisplacementDrag(Rect rect) { if (selectedPattern.properties.dynamicTiling && Mouse.IsOver(rect)) { if (!mouseOver) { mouseOver = true; Cursor.SetCursor(AssetBundleDatabase.MouseHandOpen, new Vector2(3, 3), CursorMode.Auto); } if (Input.GetMouseButtonDown(0) && !draggingDisplacement) { draggingDisplacement = true; initialDragDifferenceX = Mathf.InverseLerp(0f, rect.width, Event.current.mousePosition.x - rect.x) * 2 - 1 - displacementX; initialDragDifferenceY = Mathf.InverseLerp(rect.height, 0f, Event.current.mousePosition.y - rect.y) * 2 - 1 - displacementY; Cursor.SetCursor(AssetBundleDatabase.MouseHandClosed, new Vector2(3, 3), CursorMode.Auto); } if (draggingDisplacement && Event.current.isMouse) { displacementX = (Mathf.InverseLerp(0f, rect.width, Event.current.mousePosition.x - rect.x) * 2 - 1 - initialDragDifferenceX).Clamp(-1.5f, 1.5f); displacementY = (Mathf.InverseLerp(rect.height, 0f, Event.current.mousePosition.y - rect.y) * 2 - 1 - initialDragDifferenceY).Clamp(-1.5f, 1.5f); } if (Input.GetMouseButtonUp(0)) { draggingDisplacement = false; Cursor.SetCursor(AssetBundleDatabase.MouseHandOpen, new Vector2(3, 3), CursorMode.Auto); } } else { if (mouseOver) { mouseOver = false; draggingDisplacement = false; CustomCursor.Activate(); } } }