コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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;
                    }
                }
            }
        }
コード例 #3
0
 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;
             }
         }
     }
 }
コード例 #4
0
        /// <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();
                    }
                }
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        private static void AddNewMachineStateGUIOnMouseMenu(object mousePos)
        {
            Vector2 mPos = (Vector2)mousePos;

            mPos = StateMachineUtils.MousePos2MachineGridPos(mPos);
            MachineDataController.AddNewMachineStateGUI(mPos);
            Debug.Log("AddNewMachineStateGUIOnMouseMenu :" + mPos);
        }
コード例 #7
0
        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();
        }
コード例 #8
0
        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;
                }
            }
        }
コード例 #9
0
        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;
                    }
                }
            }
        }