private void HandleDragging() { if (hasSelected && !MouseOnTopOfInspector()) { Rect textureBounds = new Rect(0, 0, textureActualWidth, textureActualHeight); EditorGUI.BeginChangeCheck(); Rect oldRect = selectedSpriteRect; Rect newRect = SpriteEditorUtility.ClampedRect(SpriteEditorUtility.RoundedRect(SpriteEditorHandles.SliderRect(oldRect)), textureBounds, true); if (EditorGUI.EndChangeCheck()) { selectedSpriteRect = newRect; } } }
protected static Rect ClampSpriteRect(Rect rect, float maxX, float maxY) { // Clamp rect to width height rect = FlipNegativeRect(rect); Rect newRect = new Rect(); newRect.xMin = Mathf.Clamp(rect.xMin, 0, maxX - 1); newRect.yMin = Mathf.Clamp(rect.yMin, 0, maxY - 1); newRect.xMax = Mathf.Clamp(rect.xMax, 1, maxX); newRect.yMax = Mathf.Clamp(rect.yMax, 1, maxY); // Prevent width and height to be 0 value after clamping. if (Mathf.RoundToInt(newRect.width) == 0) { newRect.width = 1; } if (Mathf.RoundToInt(newRect.height) == 0) { newRect.height = 1; } return(SpriteEditorUtility.RoundedRect(newRect)); }