private float HandleBorderScaleSlider(float x, float y, float width, float height, bool isHorizontal) { if (styles == null) { return(0f); } float fixedWidth = styles.dragBorderdot.fixedWidth; Vector2 pos = Handles.matrix.MultiplyPoint(new Vector2(x, y)); EditorGUI.BeginChangeCheck(); float result = 0f; if (isHorizontal) { Rect cursorRect = new Rect(pos.x - fixedWidth * 0.5f, pos.y, fixedWidth, height); result = SVGEditorHandles.ScaleSlider(pos, MouseCursor.ResizeHorizontal, cursorRect).x; } else { Rect cursorRect2 = new Rect(pos.x, pos.y - fixedWidth * 0.5f, width, fixedWidth); result = SVGEditorHandles.ScaleSlider(pos, MouseCursor.ResizeVertical, cursorRect2).y; } if (EditorGUI.EndChangeCheck()) { return(result); } return((!isHorizontal) ? y : x); }
private void HandleBorderPointSlider(ref float x, ref float y, MouseCursor mouseCursor, bool isHidden, GUIStyle dragDot, GUIStyle dragDotActive, Color color) { Color color2 = GUI.color; GUI.color = color; Vector2 vector = SVGEditorHandles.PointSlider(new Vector2(x, y), mouseCursor, dragDot, dragDotActive); x = vector.x; y = vector.y; GUI.color = color2; }
protected void DoTextureGUIExtras() { HandleBorderCornerScalingHandles(); HandleBorderSidePointScalingSliders(); HandleBorderSideScalingHandles(); HandlePivotHandle(); if (Event.current.type == EventType.Repaint) { Vector4 border = svgAsset.border; Rect rect = new Rect(-textureOrigRect.size.x * 0.5f, -textureOrigRect.size.y * 0.5f, textureOrigRect.size.x, textureOrigRect.size.y); Rect drawRect = new Rect( rect.x + rect.size.x * border.x, rect.y + rect.size.y * border.w, rect.size.x * Mathf.Abs(border.z - (1f - border.x)), rect.size.y * Mathf.Abs(border.y - (1f - border.w)) ); SVGEditorHandles.BeginLines(Color.green * 1.5f); SVGEditorHandles.DrawLine( new Vector2(-position.width, drawRect.min.y), new Vector2(position.width, drawRect.min.y) ); SVGEditorHandles.DrawLine( new Vector2(-position.width, drawRect.max.y), new Vector2(position.width, drawRect.max.y) ); SVGEditorHandles.DrawLine( new Vector2(drawRect.min.x, -position.height), new Vector2(drawRect.min.x, position.height) ); SVGEditorHandles.DrawLine( new Vector2(drawRect.max.x, -position.height), new Vector2(drawRect.max.x, position.height) ); //SVGEditorHandles.DrawBox(drawRect); SVGEditorHandles.EndLines(); } }
public static Vector2 PointSlider(Vector2 pos, UnityEditor.MouseCursor cursor, GUIStyle dragDot, GUIStyle dragDotActive) { int controlID = GUIUtility.GetControlID("Slider1D".GetHashCode(), FocusType.Keyboard); Vector2 vector = Handles.matrix.MultiplyPoint(pos); Rect rect = new Rect(vector.x - dragDot.fixedWidth * 0.5f, vector.y - dragDot.fixedHeight * 0.5f, dragDot.fixedWidth, dragDot.fixedHeight); Event current = Event.current; EventType typeForControl = current.GetTypeForControl(controlID); if (typeForControl == EventType.Repaint) { if (GUIUtility.hotControl == controlID) { dragDotActive.Draw(rect, GUIContent.none, controlID); } else { dragDot.Draw(rect, GUIContent.none, controlID); } } return(SVGEditorHandles.ScaleSlider(pos, cursor, rect)); }
public static Rect SliderRect(Rect pos) { int controlID = GUIUtility.GetControlID("SliderRect".GetHashCode(), FocusType.Keyboard); Event current = Event.current; if (SVGEditorHandles.s_OneClickDragStarted && current.type == EventType.Repaint) { SVGEditorHandles.HandleSliderRectMouseDown(controlID, current, pos); SVGEditorHandles.s_OneClickDragStarted = false; } switch (current.GetTypeForControl(controlID)) { case EventType.MouseDown: if (current.button == 0 && pos.Contains(Handles.inverseMatrix.MultiplyPoint(Event.current.mousePosition)) && !current.alt) { SVGEditorHandles.HandleSliderRectMouseDown(controlID, current, pos); current.Use(); } break; case EventType.MouseUp: if (GUIUtility.hotControl == controlID && (current.button == 0 || current.button == 2)) { GUIUtility.hotControl = 0; current.Use(); EditorGUIUtility.SetWantsMouseJumping(0); } break; case EventType.MouseDrag: if (GUIUtility.hotControl == controlID) { SVGEditorHandles.s_CurrentMousePosition += current.delta; Vector2 center = pos.center; pos.center = Handles.inverseMatrix.MultiplyPoint(SVGEditorHandles.s_CurrentMousePosition - SVGEditorHandles.s_DragScreenOffset); if (!Mathf.Approximately((center - pos.center).magnitude, 0f)) { GUI.changed = true; } current.Use(); } break; case EventType.KeyDown: if (GUIUtility.hotControl == controlID && current.keyCode == KeyCode.Escape) { pos.center = Handles.inverseMatrix.MultiplyPoint(SVGEditorHandles.s_DragStartScreenPosition - SVGEditorHandles.s_DragScreenOffset); GUIUtility.hotControl = 0; GUI.changed = true; current.Use(); } break; case EventType.Repaint: { Vector2 vector = Handles.inverseMatrix.MultiplyPoint(new Vector2(pos.xMin, pos.yMin)); Vector2 vector2 = Handles.inverseMatrix.MultiplyPoint(new Vector2(pos.xMax, pos.yMax)); EditorGUIUtility.AddCursorRect(new Rect(vector.x, vector.y, vector2.x - vector.x, vector2.y - vector.y), UnityEditor.MouseCursor.Arrow, controlID); break; } } return(pos); }
public static Vector2 ScaleSlider(Vector2 pos, UnityEditor.MouseCursor cursor, Rect cursorRect) { int controlID = GUIUtility.GetControlID("Slider1D".GetHashCode(), FocusType.Keyboard); return(SVGEditorHandles.ScaleSlider(controlID, pos, cursor, cursorRect)); }
public static Rect RectCreator(float textureWidth, float textureHeight, GUIStyle rectStyle) { Event current = Event.current; Vector2 mousePosition = current.mousePosition; int num = SVGEditorHandles.s_RectSelectionID; Rect result = default(Rect); switch (current.GetTypeForControl(num)) { case EventType.MouseDown: if (current.button == 0) { GUIUtility.hotControl = num; Rect rect = new Rect(0f, 0f, textureWidth, textureHeight); Vector2 v = Handles.inverseMatrix.MultiplyPoint(mousePosition); v.x = Mathf.Min(Mathf.Max(v.x, rect.xMin), rect.xMax); v.y = Mathf.Min(Mathf.Max(v.y, rect.yMin), rect.yMax); SVGEditorHandles.s_DragStartScreenPosition = Handles.matrix.MultiplyPoint(v); SVGEditorHandles.s_CurrentMousePosition = mousePosition; current.Use(); } break; case EventType.MouseUp: if (GUIUtility.hotControl == num && current.button == 0) { if (SVGEditorHandles.ValidRect(SVGEditorHandles.s_DragStartScreenPosition, SVGEditorHandles.s_CurrentMousePosition)) { result = SVGEditorHandles.GetCurrentRect(false, textureWidth, textureHeight, SVGEditorHandles.s_DragStartScreenPosition, SVGEditorHandles.s_CurrentMousePosition); GUI.changed = true; current.Use(); } GUIUtility.hotControl = 0; } break; case EventType.MouseDrag: if (GUIUtility.hotControl == num) { SVGEditorHandles.s_CurrentMousePosition = new Vector2(mousePosition.x, mousePosition.y); current.Use(); } break; case EventType.KeyDown: if (GUIUtility.hotControl == num && current.keyCode == KeyCode.Escape) { GUIUtility.hotControl = 0; GUI.changed = true; current.Use(); } break; case EventType.Repaint: if (GUIUtility.hotControl == num && SVGEditorHandles.ValidRect(SVGEditorHandles.s_DragStartScreenPosition, SVGEditorHandles.s_CurrentMousePosition)) { BeginLines(Color.green * 1.5f); DrawBox(SVGEditorHandles.GetCurrentRect(false, textureWidth, textureHeight, SVGEditorHandles.s_DragStartScreenPosition, SVGEditorHandles.s_CurrentMousePosition)); EndLines(); } break; } return(result); }