From 1d18b076dea3aeec994cb17d333f74360f1787ba Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Mon, 8 Apr 2024 17:44:23 +0800 Subject: [PATCH] Add Node.is_node_ready --- doc/classes/Node.xml | 7 +++++++ scene/main/node.cpp | 5 +++++ scene/main/node.h | 1 + 3 files changed, 13 insertions(+) diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 9140da2f8..508fbe446 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -444,6 +444,13 @@ + + + + Returns [code]true[/code] if the node is ready, i.e. it's inside scene tree and all its children are initialized. + [method request_ready] resets it back to [code]false[/code]. + + diff --git a/scene/main/node.cpp b/scene/main/node.cpp index dd9455333..db070a615 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -3487,6 +3487,10 @@ bool Node::is_displayed_folded() const { return data.display_folded; } +bool Node::is_node_ready() const { + return !data.ready_first; +} + void Node::request_ready() { data.ready_first = true; } @@ -3602,6 +3606,7 @@ void Node::_bind_methods() { ClassDB::bind_method(D_METHOD("queue_free"), &Node::queue_delete); ClassDB::bind_method(D_METHOD("request_ready"), &Node::request_ready); + ClassDB::bind_method(D_METHOD("is_node_ready"), &Node::is_node_ready); ClassDB::bind_method(D_METHOD("set_network_master", "id", "recursive"), &Node::set_network_master, DEFVAL(true)); ClassDB::bind_method(D_METHOD("get_network_master"), &Node::get_network_master); diff --git a/scene/main/node.h b/scene/main/node.h index e5c14c4b3..1e780ae48 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -547,6 +547,7 @@ public: } void reset_physics_interpolation(); + bool is_node_ready() const; void request_ready(); static void print_stray_nodes();