/// <summary> /// 마우스가 핸들을 눌렀는지 검사합니다. /// </summary> void MouseCheck() { Event currentEvent = Event.current; switch (currentEvent.rawType) { case EventType.MouseDown: if (nowFocus != CameraLimit.RectEnum.None && currentEvent.button == 0) { Undo.RecordObject(target, "Fix Limit Range" + myScript.transform.name); editInfo = nowFocus; GUIUtility.hotControl = 0; currentEvent.Use(); } break; case EventType.MouseUp: if (editInfo != CameraLimit.RectEnum.None && currentEvent.button == 0) { editInfo = CameraLimit.RectEnum.None; GUIUtility.hotControl = 0; currentEvent.Use(); } break; } }
/// <summary> /// 핸들을 그립니다. /// </summary> static void DrawHandle() { float heightMid = myScript.limitRect.height * 0.5f; float widthMid = myScript.limitRect.width * 0.5f; // 점들을 찍어줍니다. Handles.CubeHandleCap(0, new Vector2(myScript.limitRect.left, heightMid), Quaternion.identity, Camera.current.orthographicSize * 0.02f, EventType.Repaint); Handles.CubeHandleCap(0, new Vector2(myScript.limitRect.right, heightMid), Quaternion.identity, Camera.current.orthographicSize * 0.02f, EventType.Repaint); Handles.CubeHandleCap(0, new Vector2(widthMid, myScript.limitRect.top), Quaternion.identity, Camera.current.orthographicSize * 0.02f, EventType.Repaint); Handles.CubeHandleCap(0, new Vector2(widthMid, myScript.limitRect.bottom), Quaternion.identity, Camera.current.orthographicSize * 0.02f, EventType.Repaint); // 마우스와 가까이 있는 점에는 빨간 점을 찍어줍니다. Handles.color = Color.red; Vector2 minPoint = myScript.FindMinPosition(MouseInfo.Position, out nowFocus); if (HandleUtility.DistanceToRectangle(minPoint, Quaternion.identity, Camera.current.orthographicSize * 0.02f * 0.5f) < 50) { Handles.CubeHandleCap(0, minPoint, Quaternion.identity, Camera.current.orthographicSize * 0.02f, EventType.Repaint); } else { nowFocus = CameraLimit.RectEnum.None; } Handles.color = Color.white; // 씬을 다시 그려줍니다. SceneView.lastActiveSceneView.Repaint(); }