public static DistanceToRectangle ( Vector3 position, |
||
position | Vector3 | |
rotation | ||
size | float | |
return | float |
// Draw a camera-facing dot. Pass this into handle functions. public static void DotHandleCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType) { switch (eventType) { case (EventType.Layout): HandleUtility.AddControl(controlID, HandleUtility.DistanceToRectangle(position, rotation, size)); break; case (EventType.Repaint): // Only apply matrix to the position because DotCap is camera facing position = matrix.MultiplyPoint(position); Vector3 sideways = Camera.current.transform.right * size; Vector3 up = Camera.current.transform.up * size; Color col = color * new Color(1, 1, 1, 0.99f); HandleUtility.ApplyWireMaterial(); GL.Begin(GL.QUADS); GL.Color(col); GL.Vertex(position + sideways + up); GL.Vertex(position + sideways - up); GL.Vertex(position - sideways - up); GL.Vertex(position - sideways + up); GL.End(); break; } }
private float MouseDistanceToPoint(int index) { switch (GetTangentMode(index)) { case TangentMode.Broken: return(HandleUtility.DistanceToDiamond(GetPointPosition(index), Quaternion.identity, GetHandleSizeForPoint(index))); case TangentMode.Linear: return(HandleUtility.DistanceToRectangle(GetPointPosition(index), Quaternion.identity, GetHandleSizeForPoint(index))); case TangentMode.Continuous: return(HandleUtility.DistanceToCircle(GetPointPosition(index), GetHandleSizeForPoint(index))); } return(float.MaxValue); }
// Draw a camera-facing Circle. Pass this into handle functions. public static void CircleHandleCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType) { switch (eventType) { case (EventType.Layout): HandleUtility.AddControl(controlID, HandleUtility.DistanceToRectangle(position, rotation, size)); break; case (EventType.Repaint): StartCapDraw(position, rotation, size); Vector3 forward = rotation * new Vector3(0, 0, 1); Handles.DrawWireDisc(position, forward, size); break; } }
private float MouseDistanceToClosestTangent() { if (activePoint < 0) { return(float.MaxValue); } var lt = GetPointLTangent(activePoint); var rt = GetPointRTangent(activePoint); if (lt.sqrMagnitude == 0f && rt.sqrMagnitude == 0f) { return(float.MaxValue); } var p = GetPointPosition(activePoint); var tangentSize = GetTangentSizeForPoint(activePoint); return(Mathf.Min( HandleUtility.DistanceToRectangle(p + lt, Quaternion.identity, tangentSize), HandleUtility.DistanceToRectangle(p + rt, Quaternion.identity, tangentSize) )); }