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();
                }
            }
        }
 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 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 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;
                    }
                }
            }
        }