Ignore locked nodes when click selecting in 3d editor

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
This commit is contained in:
oeelis 2023-11-13 07:53:30 +02:00 committed by Rémi Verschelde
parent a07f20b3e5
commit bf9fdc5b96
No known key found for this signature in database
GPG Key ID: C3336907360768E1

View File

@ -1918,12 +1918,17 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
}
if (after != EditorPlugin::AFTER_GUI_INPUT_CUSTOM) {
//clicking is always deferred to either move or release
clicked = _select_ray(b->get_position());
// Single item selection.
Vector<_RayResult> selection;
_find_items_at_pos(b->get_position(), selection, false);
if (!selection.is_empty()) {
clicked = selection[0].item->get_instance_id();
}
selection_in_progress = true;
if (clicked.is_null()) {
//default to regionselect
// Default to region select.
cursor.region_select = true;
cursor.region_begin = b->get_position();
cursor.region_end = b->get_position();