private Vector3 EdgeHandle(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, Matrix4x4 transform) { Color color = Handles.color; bool flag = true; if (Camera.current) { Vector3 b = Handles.matrix.inverse.MultiplyPoint(Camera.current.transform.position); Vector3 normalized = (handlePos - b).normalized; Vector3 lhs = Vector3.Cross(slideDir1, slideDir2); float f = Vector3.Dot(lhs, normalized); if (Mathf.Acos(Mathf.Abs(f)) > 1.51843643f) { flag = false; } } float num = (!flag) ? 0f : 1f; this.AdjustEdgeHandleColor(handlePos, slideDir1, slideDir2, transform, num); int controlID = GUIUtility.GetControlID(this.m_ControlIdHint, FocusType.Keyboard); if (num > 0f) { handlePos = Slider2D.Do(controlID, handlePos, handleDir, slideDir1, slideDir2, HandleUtility.GetHandleSize(handlePos) * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), SnapSettings.scale, true); } Handles.color = color; return(handlePos); }
public static Vector3 Slider2DHandle(Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, bool selectLockingAxisOnClick = false, Vector3?snappingSteps = null) { var id = GUIUtility.GetControlID(s_Slider2DHash, FocusType.Keyboard); s_Slider2DPointArray[0] = handlePos; return(Slider2D.Do(id, s_Slider2DPointArray, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, false, snappingSteps)[0]); }
private Vector3 EdgeHandle(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, Matrix4x4 transform) { Color color = Handles.color; bool flag = true; if ((bool)((UnityEngine.Object)Camera.current)) { Vector3 vector3 = Handles.matrix.inverse.MultiplyPoint(Camera.current.transform.position); Vector3 normalized = (handlePos - vector3).normalized; if ((double)Mathf.Acos(Mathf.Abs(Vector3.Dot(Vector3.Cross(slideDir1, slideDir2), normalized))) > 1.51843643188477) { flag = false; } } float alphaFactor = !flag ? 0.0f : 1f; this.AdjustEdgeHandleColor(handlePos, slideDir1, slideDir2, transform, alphaFactor); int controlId = GUIUtility.GetControlID(this.m_ControlIdHint, FocusType.Keyboard); if ((double)alphaFactor > 0.0) { handlePos = Slider2D.Do(controlId, handlePos, handleDir, slideDir1, slideDir2, HandleUtility.GetHandleSize(handlePos) * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), SnapSettings.scale, true); } Handles.color = color; return(handlePos); }
public static Vector3 Slider2DHandleOffset(int id, Vector3 handlePos, Vector3 handleDir, float handleSize = 0, CapFunction capFunction = null, bool selectLockingAxisOnClick = false, Vector3? snappingSteps = null) { var grid = Grid.ActiveGrid; var normalAxis = grid.GetClosestAxis(handleDir); var axes = grid.GetTangentAxesForAxis(normalAxis, out Vector3 slideDir1, out Vector3 slideDir2); if (handleSize == 0) handleSize = UnityEditor.HandleUtility.GetHandleSize(handlePos) * 0.05f; return Slider2D.Do(id, new Vector3[] { handlePos }, handlePos, Vector3.zero, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, false, snappingSteps)[0] - handlePos; }
public static Vector3 Edge2DHandleOffset(int id, Vector3 from, Vector3 to, Vector3 position, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, Vector3?snappingSteps = null, bool setCursor = true, bool renderEdge = true) { DrawEdgeHandle(id, from, to, setCursor: setCursor, renderEdge: renderEdge); var points = new Vector3[] { from, to }; var result = Slider2D.Do(id, points, position, Vector3.zero, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, snappingSteps: snappingSteps); return(result[0] - from); }
public static Vector3 Edge2DHandleOffset(int id, Vector3 from, Vector3 to, Vector3 position, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, Vector3?snappingSteps = null) { var evt = Event.current; switch (evt.GetTypeForControl(id)) { case EventType.Layout: { if (Tools.current == Tool.View || Tools.current == Tool.None || evt.alt) { break; } UnityEditor.HandleUtility.AddControl(id, UnityEditor.HandleUtility.DistanceToLine(from, to) * 0.5f); break; } case EventType.Repaint: { var sceneView = SceneView.currentDrawingSceneView; if (sceneView && Tools.current != Tool.View && Tools.current != Tool.None && !evt.alt) { if (UnityEditor.HandleUtility.nearestControl == id || EditorGUIUtility.hotControl == id) { var rect = sceneView.position; rect.min = Vector2.zero; EditorGUIUtility.AddCursorRect(rect, SceneHandleUtility.GetCursorForEdge(from, to)); } } if (EditorGUIUtility.keyboardControl == id) { SceneHandles.DrawAAPolyLine(3.0f, from, to); } else { SceneHandles.DrawAAPolyLine(2.5f, from, to); } break; } } var points = new Vector3[] { from, to }; var result = Slider2D.Do(id, points, position, Vector3.zero, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, snappingSteps: snappingSteps); return(result[0] - from); }
public static Vector3 Slider2DHandleTangentOffset(int id, Vector3 from, Vector3 to, CapFunction capFunction = null, Vector3?snappingSteps = null) { var edgeDelta = from - to; var grid = Grid.ActiveGrid; var edgeAxis = grid.GetClosestAxis(edgeDelta); var axes = grid.GetTangentAxesForAxis(edgeAxis, out Vector3 slideDir1, out Vector3 slideDir2); var midPoint = (from + to) * 0.5f; var handleDir = Vector3.Cross(slideDir1, slideDir2); var points = new Vector3[] { from, to }; var result = Slider2D.Do(id, points, midPoint, Vector3.zero, handleDir, slideDir1, slideDir2, 0, capFunction, axes, snappingSteps: snappingSteps); return(result[0] - from); }
private static Vector3 DoSlider(int id, Vector3 position, Vector3 slide1, Vector3 slide2, float s, Handles.CapFunction cap) { return(Slider2D.Do(id, position, Vector3.zero, Vector3.Cross(slide1, slide2), slide1, slide2, s, cap, Vector2.zero, false)); }
public static Vector3 Slider2DHandle(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, bool selectLockingAxisOnClick = false, Vector3?snappingSteps = null) { return(Slider2D.Do(id, new Vector3[] { handlePos }, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, false, snappingSteps)[0]); }
public static Vector3 Slider2DHandle(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, bool selectLockingAxisOnClick = false, Vector3?snappingSteps = null, bool noSnapping = false) { s_Slider2DPointArray[0] = handlePos; return(Slider2D.Do(id, s_Slider2DPointArray, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, noSnapping, snappingSteps)[0]); }