コード例 #1
0
ファイル: GridEditor.cs プロジェクト: sensyup/Peach-Blossom
    void UpdateDragBox()
    {
        int ID = GUIUtility.GetControlID(hash, FocusType.Passive);

        switch (Event.current.GetTypeForControl(ID))
        {
        case EventType.Layout:
            HandleUtility.AddDefaultControl(ID);
            break;

        case EventType.MouseDown:
            if (Event.current.button == 0 && HandleUtility.nearestControl == ID)
            {
                GridEditorUtility.MousePos0   = Camera.current.ScreenToViewportPoint(Event.current.mousePosition);
                GridEditorUtility.MousePos0.y = 1f - GridEditorUtility.MousePos0.y;

                GridEditorUtility.IsMouseDown = true;

                GUIUtility.hotControl = ID;
                Event.current.Use();
                EditorGUIUtility.SetWantsMouseJumping(1);
            }
            break;

        case EventType.MouseDrag:
            if (Event.current.button == 0)
            {
                GUI.changed = true;
                Event.current.Use();
            }
            break;

        case EventType.MouseUp:
            if (Event.current.button == 0)
            {
                GridEditorUtility.MousePosF   = Camera.current.ScreenToViewportPoint(Event.current.mousePosition);
                GridEditorUtility.MousePosF.y = 1f - GridEditorUtility.MousePosF.y;

                GridEditorUtility.DragSelecting(target);

                GridEditorUtility.IsMouseDown = false;

                if (GUIUtility.hotControl == ID)
                {
                    GUIUtility.hotControl = 0;
                    Event.current.Use();
                    EditorGUIUtility.SetWantsMouseJumping(0);
                }
            }
            break;

        case EventType.Repaint:
            if (GridEditorUtility.IsMouseDown)
            {
                DrawDragBox();
            }
            break;
        }
    }