Block Grouping, Selection and Placement Revamp
1. Reorganize groups to contain less groups with more blocks.
- All Armor or All 1x1 armor and all 2x1 in another group
- All Power
- All Hand Welders
- All Hand Grinders
2. The G-Menu operates the same, but with less clutter except a block group can be added multiple times to the same toolbar.
3. A key is added to effectively disconnect the mouse from the entity controller (ALT). This allows interaction with HUD elements but not the game world until toggled off. (This could be expanded to add settings to other HUD elements) opening the terminal window, g-menu, and hitting escape does this already, so it can be done on the cheap with a transparent dummy terminal instance for block options.
4. Once a block is added to the toolbar, right clicking the block in the toolbar (Outside of the G-Menu) opens a panel allowing you to select the specific block in that slot from the group. That block is bound to that slot when the mouse mode is released and can be selected from the toolbar and used. Since the toolbar can have duplicate groups in the same toolbar, a small subset of block groups can be bound and changed at will. While this might be more slots occupied it is less than a single block ungrouped toolbar.
5. Resurrect the grid size key as a three state toggle. press the key to loop through all allowed states.
- Auto (default) works as it does now.
- Large keeps the large block on the gizmo regardless of what the mouse is pointed at,
- Small keeps the small block on the gizmo regardless of what the mouse is pointed at,
6a. Since the toolbar slot will need to record the current bound block variant, the last orientation can be saved with it. Hitting the slot number key when it is already selected can return the block to its default state.
6b. A better option would be to auto align the block to the same orientation as the block the mouse is pointed at if it is the same as the block currently on the gizmo. If it is not possible (because a cube's orientation doesn't matter), it would try to align to blocks that would be adjacent to it when placed. This would auto rotate the 1x1 corner to the inverted corner properly. If there is no block the block would be oriented so that the smallest face is "up" and the largest is "down" (placing in voxels). if the face of the targeted block is not 1x1, the block would rotate to a face with matching geometry, if possible, the face with the smallest footprint.
7. Scrolling would go back to working as a distance setting between the min and max range of the entity with the placement gizmo, removing the CTRL modifier.