private void DrawBrushSetup()
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label("Brush: ", EditorStyles.whiteBoldLabel);
        GUILayout.BeginVertical();
        GUILayout.BeginHorizontal();
        string folder = viewModel.CurrentPrefabFolder;
        string substr = folder != null && folder.Length > 24 ? folder.Substring(folder.Length - 24) : folder;

        EditorGUILayout.TextField(folder != null ? substr : "NONE");
        Object newPrefab;

        if (viewModel.CurrentPrefab != (newPrefab = EditorGUILayout.ObjectField(viewModel.CurrentPrefab, typeof(GameObject), false)) && newPrefab != null)
        {
            viewModel.SelectPrefab((GameObject)newPrefab);
        }
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Rx: " + viewModel.PrefabOrientation.x.ToString("000")))
        {
            viewModel.OrientPrefab(Vector3.right, true);
        }
        if (GUILayout.Button("Ry: " + viewModel.PrefabOrientation.y.ToString("000")))
        {
            viewModel.OrientPrefab(Vector3.up, true);
        }
        if (GUILayout.Button("Rz: " + viewModel.PrefabOrientation.z.ToString("000")))
        {
            viewModel.OrientPrefab(Vector3.forward, true);
        }
        if (GUILayout.Button("Fx: " + viewModel.PrefabFlip.x.ToString("0")))
        {
            viewModel.FlipPrefab(Vector3.right);
        }
        if (GUILayout.Button("Fy: " + viewModel.PrefabFlip.y.ToString("0")))
        {
            viewModel.FlipPrefab(Vector3.up);
        }
        if (GUILayout.Button("Fz: " + viewModel.PrefabFlip.z.ToString("0")))
        {
            viewModel.FlipPrefab(Vector3.forward);
        }
        // Editor
        // EditorGUILayout.Vector3Field("Rot", Vector3.zero);
        // EditorGUILayout.Vector3Field("Scale", Vector3.zero);
        GUILayout.EndHorizontal();
        GUILayout.EndVertical();
        GUILayout.EndHorizontal();
    }
    public bool KeyStateChanged(bool pressed, Event e)
    {
        if (!pressed)
        {
            if (!m_bWheelScrolledSinceLastKeyPress && IsKeyDown(e.keyCode))
            {
                if (viewModel.CurrentTool == GNBlockMapEditorVM.Tool.PAINT)
                {
                    if (e.keyCode == KeyCode.J)
                    {
                        m_aKeysDown[e.keyCode] = false;
                        viewModel.FlipPrefab(Vector3.right);
                        return(true);
                    }
                    if (e.keyCode == KeyCode.K)
                    {
                        m_aKeysDown[e.keyCode] = false;
                        viewModel.FlipPrefab(Vector3.up);
                        return(true);
                    }
                    if (e.keyCode == KeyCode.L)
                    {
                        m_aKeysDown[e.keyCode] = false;
                        viewModel.FlipPrefab(Vector3.forward);
                        return(true);
                    }
                    if (e.keyCode == KeyCode.M)
                    {
                        m_aKeysDown[e.keyCode] = false;
                        viewModel.SetPrefabFlip(Vector3.one);
                        viewModel.OrientPrefab(Vector3.zero);
                        return(true);
                    }
                }
                if (e.keyCode == KeyCode.Z || e.keyCode == KeyCode.Y)
                {
                    m_aKeysDown[e.keyCode] = false;
                    viewModel.BrowseLayerMode();
                    return(true);
                }
            }
            m_bWheelScrolledSinceLastKeyPress = false;
        }


        switch (e.keyCode)
        {
        // case KeyCode.B:
        case KeyCode.G:     // Browse Cell Size / Move Grid
        case KeyCode.Z:     // Browse Layer / Layer Modes
        case KeyCode.Y:     // Browse Layer / Layer Modes
        case KeyCode.N:     // Clear Objects
        case KeyCode.M:     // Clear Prefab Orentation
        case KeyCode.U:     // Browse Brush Folders
        case KeyCode.I:     // Browse Brush in Folder
        case KeyCode.O:     // Pick prefab under mouse
        case KeyCode.J:     // Browse X-Rotation / X-Flip
        case KeyCode.K:     // Browse Y-Rotation / Y-Flip
        case KeyCode.L:     // Browse Z-Rotation / Z-Flip

            if (e.command || e.control)
            {
                return(false);
            }
            m_aKeysDown[e.keyCode] = pressed;

            if (IsKeyDown(KeyCode.O))
            {
                viewModel.PickCurrentCellPrefab();
            }
            return(true);

        case KeyCode.A:
            if (viewModel.CurrentTool == GNBlockMapEditorVM.Tool.BOX)
            {
                if (e.alt)
                {
                    if (e.shift)
                    {
                        viewModel.SelectBoxFullMap();
                    }
                    else
                    {
                        viewModel.SelectBoxFullLayer();
                    }
                    return(true);
                }
            }
            return(false);
        }
        return(false);
    }