private static void MouseSelectObject() { Event e = Event.current; if (e.button == 0 && e.type == EventType.MouseDown) { if (StateMachineBGGUI.controlWindowRange.Contains(e.mousePosition)) { bool isSelect = false; foreach (var item in MachineStateGUIDataControl.allMachineStateGUI) { if (StateMachineUtils.MachineGridRectContainsMousePos(e.mousePosition, item.GUIRect)) { isSelect = true; SelectObjectController.SelectItemObject(item); break; } } if (!isSelect) { StateTransitionArrowLine line = StateTransitionArrowLineDataControl.FindClosestStateTransitionArrowLine(e.mousePosition); if (line) { isSelect = true; SelectObjectController.SelectItemObject(line); } } if (isSelect == false) { SelectObjectController.SelectObjectCancel(); } e.Use(); } } }
public static void OnMachineStateMouseRightClickMenu() { if (StateTransitionGUI.startNewTranstion) { return; } Event e = Event.current; if (e.button == 1 && e.type == EventType.ContextClick) { foreach (var item in MachineStateGUIDataControl.allMachineStateGUI) { if (StateMachineUtils.MachineGridRectContainsMousePos(e.mousePosition, item.GUIRect)) { if (!SelectObjectController.IsSelectThis(item)) { SelectObjectController.SelectItemObject(item); } else { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("New Transition"), false, NewTransitionStart, item.state); menu.AddItem(new GUIContent("Delete"), false, SelectObjectController.DeleteSelectObjet); menu.AddSeparator(""); menu.ShowAsContext(); } e.Use(); break; } } } }
private static void OnEndNewTransitionEvent() { if (StateTransitionGUI.startNewTranstion) { Event e = Event.current; if (e.type == EventType.MouseMove) { StateTransitionGUI.toPosition = StateMachineUtils.MousePos2MachineGridPos(e.mousePosition); e.Use(); } if (e.isMouse) { if (e.button == 0) { foreach (var item in MachineStateGUIDataControl.allMachineStateGUI) { if (StateMachineUtils.MachineGridRectContainsMousePos(e.mousePosition, item.GUIRect)) { MachineDataController.AddNewTransitionGUI(StateTransitionGUI.startPositionMs, item.state); break; } } StateTransitionGUI.startNewTranstion = false; e.Use(); StateMachineEditorWindow.Instance.wantsMouseMove = false; } else if (e.button == 1) { StateTransitionGUI.startNewTranstion = false; e.Use(); StateMachineEditorWindow.Instance.wantsMouseMove = false; } } } }
/// <summary> /// 鼠标右键空白区域 /// </summary> public static void MouseBGEmptyRightClikEvent() { Event e = Event.current; if (e.button == 1 && e.type == EventType.ContextClick) { if (StateMachineBGGUI.controlWindowRange.Contains(e.mousePosition)) { bool isInUIPart = false; foreach (var item in MachineStateGUIDataControl.allMachineStateGUI) { if (StateMachineUtils.MachineGridRectContainsMousePos(e.mousePosition, item.GUIRect)) { isInUIPart = true; break; } } if (!isInUIPart) { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("New State"), false, AddNewMachineStateGUIOnMouseMenu, e.mousePosition); menu.AddSeparator(""); menu.ShowAsContext(); e.Use(); } } } }
public static StateTransitionArrowLine FindClosestStateTransitionArrowLine(Vector2 mousePosition) { Vector2 v2 = StateMachineUtils.MousePos2MachineGridPos(mousePosition); StateTransitionArrowLine result = null; float lenth = float.PositiveInfinity; foreach (var item in allStateTransitionArrowLineList) { float temoLenth; if (item.IsLineSelf) { temoLenth = Vector2.Distance(item.LineSelfOneTrianglePoints[3], v2); } else { temoLenth = HandleUtility.DistancePointLine(v2, item.UseFormLinePosition, item.UseToLinePosition); } if (temoLenth < lenth && temoLenth < 10) { lenth = temoLenth; result = item; } } return(result); }
private static void AddNewMachineStateGUIOnMouseMenu(object mousePos) { Vector2 mPos = (Vector2)mousePos; mPos = StateMachineUtils.MousePos2MachineGridPos(mPos); MachineDataController.AddNewMachineStateGUI(mPos); Debug.Log("AddNewMachineStateGUIOnMouseMenu :" + mPos); }
void DrawRightToolAreaGUI() { rightToolAreaRect = new Rect(Screen.width - RightToolAreaWith, 0, RightToolAreaWith, Screen.height); GUILayout.BeginArea(rightToolAreaRect, Styles.graphBackground); if (SelectObjectController.SelectObject != null) { Type editorType = StateMachineUtils.GetSelectObjectInspectorType(SelectObjectController.SelectObject.GetType()); if (editorObject == null || editorObject.GetType() != editorType || editorObject.target != SelectObjectController.SelectObject) { editorObject = (SelectObjectInspectorBase)ReflectionUtils.CreateDefultInstance(editorType); } editorObject.target = SelectObjectController.SelectObject; editorObject.DrawHeaderGUI(); editorObject.DrawInspectorGUI(); } GUILayout.EndArea(); }
private static void OnEndDragStateMachine() { if (isDragingStateItem) { Event e = Event.current; if (e.button == 0 && e.type == EventType.mouseDrag) { Vector2 pos = StateMachineUtils.MousePos2MachineGridPos(e.mousePosition); pos = pos - MachineStateGUI.size / 2f; dragItem.position = pos; e.Use(); } else { isDragingStateItem = false; dragItem = null; StateMachineEditorWindow.Instance.wantsMouseMove = false; } } }
private static void OnBeginDragStateMachine() { if (isDragingStateItem) { return; } Event e = Event.current; if (e.button == 0 && e.type == EventType.mouseDrag) { foreach (var item in MachineStateGUIDataControl.allMachineStateGUI) { if (StateMachineUtils.MachineGridRectContainsMousePos(e.mousePosition, item.GUIRect)) { dragItem = item; isDragingStateItem = true; StateMachineEditorWindow.Instance.wantsMouseMove = true; break; } } } }