From 600c153076f192e467472895fe77bcc726595c86 Mon Sep 17 00:00:00 2001 From: Nikhil Kumar Date: Tue, 16 Jul 2019 01:20:00 +0530 Subject: [PATCH] Fixed Make 3D viewport locked nodes unselectable as in 2D viewport #29903 --- editor/plugins/spatial_editor_plugin.cpp | 11 ++++++++--- editor/plugins/spatial_editor_plugin.h | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 9fd694ee0d5..a593a92b97e 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -283,7 +283,8 @@ void SpatialEditorViewport::_select_clicked(bool p_append, bool p_single) { node = node->get_parent(); } - _select(selected, clicked_wants_append, true); + if (!_is_node_locked(selected)) + _select(selected, clicked_wants_append, true); } void SpatialEditorViewport::_select(Node *p_node, bool p_append, bool p_single) { @@ -513,7 +514,7 @@ void SpatialEditorViewport::_select_region() { for (int i = 0; i < instances.size(); i++) { Spatial *sp = Object::cast_to(ObjectDB::get_instance(instances[i])); - if (!sp) + if (!sp && _is_node_locked(sp)) continue; Node *item = Object::cast_to(sp); @@ -536,6 +537,8 @@ void SpatialEditorViewport::_select_region() { if (selected.find(item) != -1) continue; + if (_is_node_locked(Object::cast_to(item))) continue; + Ref seg = sp->get_gizmo(); if (!seg.is_valid()) @@ -833,7 +836,9 @@ void SpatialEditorViewport::_surface_focus_exit() { view_menu->set_disable_shortcuts(true); } - +bool SpatialEditorViewport ::_is_node_locked(const Node *p_node) { + return p_node->has_meta("_edit_lock_") && p_node->get_meta("_edit_lock_"); +} void SpatialEditorViewport::_list_select(Ref b) { _find_items_at_pos(b->get_position(), clicked_includes_current, selection_results, b->get_shift()); diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index b4e2f028d2b..1a32d6e0476 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -364,7 +364,7 @@ private: Camera *preview; bool previewing_cinema; - + bool _is_node_locked(const Node *p_node); void _preview_exited_scene(); void _toggle_camera_preview(bool); void _toggle_cinema_preview(bool);