static private DistanceToRectangleInternal ( Vector3 position, |
||
position | Vector3 | |
rotation | ||
size | Vector2 | |
Результат | float |
private static void HandleCap(int controlID, Vector3 position, GUIStyle guiStyle, EventType eventType) { if (eventType != EventType.Layout) { if (eventType == EventType.Repaint) { Handles.BeginGUI(); position = HandleUtility.WorldToGUIPoint(position); float fixedWidth = guiStyle.fixedWidth; float fixedHeight = guiStyle.fixedHeight; Rect position2 = new Rect(position.x - fixedWidth / 2f, position.y - fixedHeight / 2f, fixedWidth, fixedHeight); guiStyle.Draw(position2, GUIContent.none, controlID); Handles.EndGUI(); } } else { HandleUtility.AddControl(controlID, HandleUtility.DistanceToRectangleInternal(position, Quaternion.identity, Vector2.zero)); } }
static void HandleCap(int controlID, Vector3 position, GUIStyle guiStyle, EventType eventType) { switch (eventType) { case EventType.Layout: HandleUtility.AddControl(controlID, HandleUtility.DistanceToRectangleInternal(position, Quaternion.identity, Vector2.zero)); break; case EventType.Repaint: Handles.BeginGUI(); position = HandleUtility.WorldToGUIPoint(position); var w = guiStyle.fixedWidth; var h = guiStyle.fixedHeight; var r = new Rect(position.x - w / 2f, position.y - h / 2f, w, h); guiStyle.Draw(r, GUIContent.none, controlID); Handles.EndGUI(); break; } }
internal static void RectangleHandleCap(int controlID, Vector3 position, Quaternion rotation, Vector2 size, EventType eventType) { switch (eventType) { case (EventType.Layout): // TODO: Create DistanceToRectangle HandleUtility.AddControl(controlID, HandleUtility.DistanceToRectangleInternal(position, rotation, size)); break; case (EventType.Repaint): Vector3 sideways = rotation * new Vector3(size.x, 0, 0); Vector3 up = rotation * new Vector3(0, size.y, 0); s_RectangleHandlePointsCache[0] = position + sideways + up; s_RectangleHandlePointsCache[1] = position + sideways - up; s_RectangleHandlePointsCache[2] = position - sideways - up; s_RectangleHandlePointsCache[3] = position - sideways + up; s_RectangleHandlePointsCache[4] = position + sideways + up; Handles.DrawPolyLine(s_RectangleHandlePointsCache); break; } }
public static float DistanceToRectangle(Vector3 position, Quaternion rotation, float size) { return HandleUtility.DistanceToRectangleInternal(position, rotation, new Vector2(size, size)); }