Skip to content

Commit

Permalink
Allow VisibleOnScreenNotifier2D/3D to have empty enable_node_path
Browse files Browse the repository at this point in the history
  • Loading branch information
Mickeon committed Feb 16, 2024
1 parent a9bb850 commit 445b1e9
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion doc/classes/VisibleOnScreenEnabler2D.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
Determines how the target node is enabled. Corresponds to [enum Node.ProcessMode]. When the node is disabled, it always uses [constant Node.PROCESS_MODE_DISABLED].
</member>
<member name="enable_node_path" type="NodePath" setter="set_enable_node_path" getter="get_enable_node_path" default="NodePath(&quot;..&quot;)">
The path to the target node, relative to the [VisibleOnScreenEnabler2D]. The target node is cached; it's only assigned when setting this property (if the [VisibleOnScreenEnabler2D] is inside the scene tree) and every time the [VisibleOnScreenEnabler2D] enters the scene tree. If the path is invalid, an error will be printed in the editor and no node will be affected.
The path to the target node, relative to the [VisibleOnScreenEnabler2D]. The target node is cached; it's only assigned when setting this property (if the [VisibleOnScreenEnabler2D] is inside the scene tree) and every time the [VisibleOnScreenEnabler2D] enters the scene tree. If the path is empty, no node will be affected. If the path is invalid, an error is also generated.
</member>
</members>
<constants>
Expand Down
2 changes: 1 addition & 1 deletion doc/classes/VisibleOnScreenEnabler3D.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
Determines how the target node is enabled. Corresponds to [enum Node.ProcessMode]. When the node is disabled, it always uses [constant Node.PROCESS_MODE_DISABLED].
</member>
<member name="enable_node_path" type="NodePath" setter="set_enable_node_path" getter="get_enable_node_path" default="NodePath(&quot;..&quot;)">
The path to the target node, relative to the [VisibleOnScreenEnabler3D]. The target node is cached; it's only assigned when setting this property (if the [VisibleOnScreenEnabler3D] is inside the scene tree) and every time the [VisibleOnScreenEnabler3D] enters the scene tree. If the path is invalid, an error will be printed in the editor and no node will be affected.
The path to the target node, relative to the [VisibleOnScreenEnabler3D]. The target node is cached; it's only assigned when setting this property (if the [VisibleOnScreenEnabler3D] is inside the scene tree) and every time the [VisibleOnScreenEnabler3D] enters the scene tree. If the path is empty, no node will be affected. If the path is invalid, an error is also generated.
</member>
</members>
<constants>
Expand Down
9 changes: 8 additions & 1 deletion scene/2d/visible_on_screen_notifier_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,10 @@ void VisibleOnScreenEnabler2D::set_enable_node_path(NodePath p_path) {
return;
}
enable_node_path = p_path;
if (enable_node_path.is_empty()) {
node_id = ObjectID();
return;
}
if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint()) {
node_id = ObjectID();
Node *node = get_node(enable_node_path);
Expand Down Expand Up @@ -177,8 +181,11 @@ void VisibleOnScreenEnabler2D::_notification(int p_what) {
if (Engine::get_singleton()->is_editor_hint()) {
return;
}

node_id = ObjectID();
if (enable_node_path.is_empty()) {
return;
}

Node *node = get_node(enable_node_path);
if (node) {
node_id = node->get_instance_id();
Expand Down
9 changes: 8 additions & 1 deletion scene/3d/visible_on_screen_notifier_3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,10 @@ void VisibleOnScreenEnabler3D::set_enable_node_path(NodePath p_path) {
return;
}
enable_node_path = p_path;
if (enable_node_path.is_empty()) {
node_id = ObjectID();
return;
}
if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint()) {
node_id = ObjectID();
Node *node = get_node(enable_node_path);
Expand Down Expand Up @@ -177,8 +181,11 @@ void VisibleOnScreenEnabler3D::_notification(int p_what) {
if (Engine::get_singleton()->is_editor_hint()) {
return;
}

node_id = ObjectID();
if (enable_node_path.is_empty()) {
return;
}

Node *node = get_node(enable_node_path);
if (node) {
node_id = node->get_instance_id();
Expand Down

0 comments on commit 445b1e9

Please sign in to comment.