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.
Some 3D asset files are treated as scenes and may cause some errors when
importing.
When working through different scene tabs, we need to temporarily add
the scene root to the SceneTree to ensure that `editor_selection->add_node()`
can work smoothly. This avoids the error message: `ERROR: Condition
"!p_node->is_inside_tree()" is true.`
This also ensures that no other scenes are accidentally added to the
SceneTree causing the wrong display. When there is an inherited scene
tab open and it is not the current tab, the new root node is accidentally
added as a child node of `scene_root` during replacement.
Instantiate the scene early so caches in SceneState that are cleared
due to loading are rebuilt early. This avoids numerous error messages:
`This operation requires the node cache to have been built.`
* The reimported instance attempt to preserve ownerless nodes.
* A recursive function call to '_nodes_scene_reimported' so these can be recreated if required.
* Clears instance scene_state on new instantiated replacement nodes.
Restarting particle animation frequently is often done in the VFX
tweaking process.
This shortcut is available for both GPUParticles and CPUParticles,
in 2D and 3D.