Skip to content

Commit 0b877a9

Browse files
committed
Expose is_part_of_edited_scene()
1 parent 86bf835 commit 0b877a9

File tree

11 files changed

+25
-29
lines changed

11 files changed

+25
-29
lines changed

doc/classes/Node.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,12 @@
619619
[method request_ready] resets it back to [code]false[/code].
620620
</description>
621621
</method>
622+
<method name="is_part_of_edited_scene" qualifiers="const">
623+
<return type="bool" />
624+
<description>
625+
Returns [code]true[/code] if the node is part of the scene currently opened in the editor.
626+
</description>
627+
</method>
622628
<method name="is_physics_interpolated" qualifiers="const">
623629
<return type="bool" />
624630
<description>

scene/2d/audio_listener_2d.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ bool AudioListener2D::_set(const StringName &p_name, const Variant &p_value) {
4545

4646
bool AudioListener2D::_get(const StringName &p_name, Variant &r_ret) const {
4747
if (p_name == "current") {
48-
if (is_inside_tree() && get_tree()->is_node_being_edited(this)) {
48+
if (is_part_of_edited_scene()) {
4949
r_ret = current;
5050
} else {
5151
r_ret = is_current();
@@ -63,13 +63,13 @@ void AudioListener2D::_get_property_list(List<PropertyInfo> *p_list) const {
6363
void AudioListener2D::_notification(int p_what) {
6464
switch (p_what) {
6565
case NOTIFICATION_ENTER_TREE: {
66-
if (!get_tree()->is_node_being_edited(this) && current) {
66+
if (!is_part_of_edited_scene() && current) {
6767
make_current();
6868
}
6969
} break;
7070

7171
case NOTIFICATION_EXIT_TREE: {
72-
if (!get_tree()->is_node_being_edited(this)) {
72+
if (!is_part_of_edited_scene()) {
7373
if (is_current()) {
7474
clear_current();
7575
current = true; // Keep it true.
@@ -98,7 +98,7 @@ void AudioListener2D::clear_current() {
9898
}
9999

100100
bool AudioListener2D::is_current() const {
101-
if (is_inside_tree() && !get_tree()->is_node_being_edited(this)) {
101+
if (is_inside_tree() && !is_part_of_edited_scene()) {
102102
return get_viewport()->get_audio_listener_2d() == this;
103103
} else {
104104
return current;

scene/3d/audio_listener_3d.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ bool AudioListener3D::_set(const StringName &p_name, const Variant &p_value) {
5555

5656
bool AudioListener3D::_get(const StringName &p_name, Variant &r_ret) const {
5757
if (p_name == "current") {
58-
if (is_inside_tree() && get_tree()->is_node_being_edited(this)) {
58+
if (is_part_of_edited_scene()) {
5959
r_ret = current;
6060
} else {
6161
r_ret = is_current();
@@ -81,7 +81,7 @@ void AudioListener3D::_notification(int p_what) {
8181
switch (p_what) {
8282
case NOTIFICATION_ENTER_WORLD: {
8383
bool first_listener = get_viewport()->_audio_listener_3d_add(this);
84-
if (!get_tree()->is_node_being_edited(this) && (current || first_listener)) {
84+
if (!is_part_of_edited_scene() && (current || first_listener)) {
8585
make_current();
8686
}
8787
} break;
@@ -91,7 +91,7 @@ void AudioListener3D::_notification(int p_what) {
9191
} break;
9292

9393
case NOTIFICATION_EXIT_WORLD: {
94-
if (!get_tree()->is_node_being_edited(this)) {
94+
if (!is_part_of_edited_scene()) {
9595
if (is_current()) {
9696
clear_current();
9797
current = true; //keep it true
@@ -133,7 +133,7 @@ void AudioListener3D::clear_current() {
133133
}
134134

135135
bool AudioListener3D::is_current() const {
136-
if (is_inside_tree() && !get_tree()->is_node_being_edited(this)) {
136+
if (is_inside_tree() && !is_part_of_edited_scene()) {
137137
return get_viewport()->get_audio_listener_3d() == this;
138138
} else {
139139
return current;

scene/3d/camera_3d.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void Camera3D::_update_camera() {
9090

9191
RenderingServer::get_singleton()->camera_set_transform(camera, get_camera_transform());
9292

93-
if (get_tree()->is_node_being_edited(this) || !is_current()) {
93+
if (is_part_of_edited_scene() || !is_current()) {
9494
return;
9595
}
9696

@@ -126,7 +126,7 @@ void Camera3D::_notification(int p_what) {
126126
} break;
127127

128128
case NOTIFICATION_EXIT_WORLD: {
129-
if (!get_tree()->is_node_being_edited(this)) {
129+
if (!is_part_of_edited_scene()) {
130130
if (is_current()) {
131131
clear_current();
132132
current = true; //keep it true
@@ -286,7 +286,7 @@ void Camera3D::set_current(bool p_enabled) {
286286
}
287287

288288
bool Camera3D::is_current() const {
289-
if (is_inside_tree() && !get_tree()->is_node_being_edited(this)) {
289+
if (is_inside_tree() && !is_part_of_edited_scene()) {
290290
return get_viewport()->get_camera_3d() == this;
291291
} else {
292292
return current;

scene/3d/node_3d.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ void Node3D::_notification(int p_what) {
197197
}
198198

199199
#ifdef TOOLS_ENABLED
200-
if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) {
200+
if (is_part_of_edited_scene()) {
201201
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringNames::get_singleton()->_spatial_editor_group, SNAME("_request_gizmo_for_id"), get_instance_id());
202202
}
203203
#endif
@@ -582,7 +582,7 @@ void Node3D::set_subgizmo_selection(Ref<Node3DGizmo> p_gizmo, int p_id, Transfor
582582
return;
583583
}
584584

585-
if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) {
585+
if (is_part_of_edited_scene()) {
586586
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_set_subgizmo_selection, this, p_gizmo, p_id, p_transform);
587587
}
588588
#endif
@@ -599,7 +599,7 @@ void Node3D::clear_subgizmo_selection() {
599599
return;
600600
}
601601

602-
if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) {
602+
if (is_part_of_edited_scene()) {
603603
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_clear_subgizmo_selection, this);
604604
}
605605
#endif

scene/gui/file_dialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void FileDialog::_focus_file_text() {
5353
int lp = file->get_text().rfind(".");
5454
if (lp != -1) {
5555
file->select(0, lp);
56-
if (file->is_inside_tree() && !get_tree()->is_node_being_edited(file)) {
56+
if (file->is_inside_tree() && !is_part_of_edited_scene()) {
5757
file->grab_focus();
5858
}
5959
}

scene/gui/line_edit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ void LineEdit::_notification(int p_what) {
771771
switch (p_what) {
772772
#ifdef TOOLS_ENABLED
773773
case NOTIFICATION_ENTER_TREE: {
774-
if (Engine::get_singleton()->is_editor_hint() && !get_tree()->is_node_being_edited(this)) {
774+
if (Engine::get_singleton()->is_editor_hint() && !is_part_of_edited_scene()) {
775775
set_caret_blink_enabled(EDITOR_GET("text_editor/appearance/caret/caret_blink"));
776776
set_caret_blink_interval(EDITOR_GET("text_editor/appearance/caret/caret_blink_interval"));
777777

scene/main/node.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3520,6 +3520,7 @@ void Node::_bind_methods() {
35203520
ClassDB::bind_method(D_METHOD("get_node_and_resource", "path"), &Node::_get_node_and_resource);
35213521

35223522
ClassDB::bind_method(D_METHOD("is_inside_tree"), &Node::is_inside_tree);
3523+
ClassDB::bind_method(D_METHOD("is_part_of_edited_scene"), &Node::is_part_of_edited_scene);
35233524
ClassDB::bind_method(D_METHOD("is_ancestor_of", "node"), &Node::is_ancestor_of);
35243525
ClassDB::bind_method(D_METHOD("is_greater_than", "node"), &Node::is_greater_than);
35253526
ClassDB::bind_method(D_METHOD("get_path"), &Node::get_path);

scene/main/node.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,8 @@ class Node : public Object {
525525
bool is_property_pinned(const StringName &p_property) const;
526526
virtual StringName get_property_store_alias(const StringName &p_property) const;
527527
bool is_part_of_edited_scene() const;
528+
#else
529+
bool is_part_of_edited_scene() const { return false; }
528530
#endif
529531
void get_storable_properties(HashSet<StringName> &r_storable_properties) const;
530532

scene/main/scene_tree.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -729,13 +729,6 @@ void SceneTree::set_quit_on_go_back(bool p_enable) {
729729
quit_on_go_back = p_enable;
730730
}
731731

732-
#ifdef TOOLS_ENABLED
733-
734-
bool SceneTree::is_node_being_edited(const Node *p_node) const {
735-
return Engine::get_singleton()->is_editor_hint() && edited_scene_root && (edited_scene_root->is_ancestor_of(p_node) || edited_scene_root == p_node);
736-
}
737-
#endif
738-
739732
#ifdef DEBUG_ENABLED
740733
void SceneTree::set_debug_collisions_hint(bool p_enabled) {
741734
debug_collisions_hint = p_enabled;

0 commit comments

Comments
 (0)