Also:
- Fix holding down keys repeatedly committing instant transformations, and disallow starting instant during non-instant
- Fix echoed inputs starting new instant transformations after clicking to confirm, and disallow left mouse release committing instant transformations
When selecting 3d nodes with a single click, the node closest to the
camera is selected. If the closest node was locked, it would block the
selection, even when there was unlocked nodes behind the locked node.
This PR replaces the `_select_ray` method call used to find the closest
node with the similar `_find_items_at_pos` method, which can skip any
locked nodes.
Fixes#84764
The issue was that Node3DEditorViewport was using the render server's BVH to filter out nodes,
which is not correct for gizmos that have no renderable components,
or have collision triangles that exceed the bounds of their renderable components.
This commit adds 3 new editor settings for orbit, pan, and zoom mouse buttons, and 6 new shortcuts which act as modifiers for the navigation controls. These new shortcuts replace the old orbit, pan, and zoom modifier settings.
The `navigation_scheme` setting now acts as a preset which changes the new options added above, and the new settings are what drives 3D navigation instead. A new struct is used for ordering the navigation logic so that actions with fewer shortcuts are checked first. When the editor starts, the preset detection will run to automatically update user settings from old Godot versions. When the setting is changed, the hint values for the mouse buttons are dynamically updated to show the user the corresponding shortcut values.
The new doc fields have been generated and the description for the new settings are filled out. The `navigation_scheme` entry now has more consistent styling and added control descriptions that were missing before.
The new shortcut is Ctrl + Alt + Numpad 0 and is the one listed
in the 3D viewport's Perspective menu (since PopupMenu accelerators
display the first shortcut only). This shortcut matches Blender
and avoids conflicts with the GeForce Experience overlay, which
defaults to Ctrl + Alt + M.
Ctrl + Alt + M is still defined as an alternative default,
so that existing workflows are not impacted.