Made print_tree_pretty() function which displays scene tree graphically
(cherry picked from commit 8362ce4769
)
This commit is contained in:
parent
710b57d493
commit
5d7b7f798a
|
@ -438,7 +438,30 @@
|
||||||
<return type="void">
|
<return type="void">
|
||||||
</return>
|
</return>
|
||||||
<description>
|
<description>
|
||||||
Prints the scene to stdout. Used mainly for debugging purposes.
|
Prints the tree to stdout. Used mainly for debugging purposes. This version displays the path relative to the current node, and is good for copy/pasting into the [method get_node] function. Example output:
|
||||||
|
[codeblock]
|
||||||
|
TheGame
|
||||||
|
TheGame/Menu
|
||||||
|
TheGame/Menu/Label
|
||||||
|
TheGame/Menu/Camera2D
|
||||||
|
TheGame/SplashScreen
|
||||||
|
TheGame/SplashScreen/Camera2D
|
||||||
|
[/codeblock]
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
|
<method name="print_tree_pretty">
|
||||||
|
<return type="void">
|
||||||
|
</return>
|
||||||
|
<description>
|
||||||
|
Similar to [method print_tree], this prints the tree to stdout. This version displays a more graphical representation similar to what is displayed in the scene inspector. It is useful for inspecting larger trees. Example output:
|
||||||
|
[codeblock]
|
||||||
|
┖╴TheGame
|
||||||
|
┠╴Menu
|
||||||
|
┃ ┠╴Label
|
||||||
|
┃ ┖╴Camera2D
|
||||||
|
┖-SplashScreen
|
||||||
|
┖╴Camera2D
|
||||||
|
[/codeblock]
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="propagate_call">
|
<method name="propagate_call">
|
||||||
|
|
|
@ -1868,11 +1868,18 @@ bool Node::has_persistent_groups() const {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
void Node::_print_tree(const Node *p_node) {
|
void Node::_print_tree_pretty(const String prefix, const bool last) {
|
||||||
|
|
||||||
print_line(String(p_node->get_path_to(this)));
|
String new_prefix = last ? String::utf8(" ┖╴") : String::utf8(" ┠╴");
|
||||||
for (int i = 0; i < data.children.size(); i++)
|
print_line(prefix + new_prefix + String(get_name()));
|
||||||
data.children[i]->_print_tree(p_node);
|
for (int i = 0; i < data.children.size(); i++) {
|
||||||
|
new_prefix = last ? String::utf8(" ") : String::utf8(" ┃ ");
|
||||||
|
data.children[i]->_print_tree_pretty(prefix + new_prefix, i == data.children.size() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::print_tree_pretty() {
|
||||||
|
_print_tree_pretty("", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Node::print_tree() {
|
void Node::print_tree() {
|
||||||
|
@ -1880,6 +1887,12 @@ void Node::print_tree() {
|
||||||
_print_tree(this);
|
_print_tree(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Node::_print_tree(const Node *p_node) {
|
||||||
|
print_line(String(p_node->get_path_to(this)));
|
||||||
|
for (int i = 0; i < data.children.size(); i++)
|
||||||
|
data.children[i]->_print_tree(p_node);
|
||||||
|
}
|
||||||
|
|
||||||
void Node::_propagate_reverse_notification(int p_notification) {
|
void Node::_propagate_reverse_notification(int p_notification) {
|
||||||
|
|
||||||
data.blocked++;
|
data.blocked++;
|
||||||
|
@ -2837,6 +2850,7 @@ void Node::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("remove_and_skip"), &Node::remove_and_skip);
|
ClassDB::bind_method(D_METHOD("remove_and_skip"), &Node::remove_and_skip);
|
||||||
ClassDB::bind_method(D_METHOD("get_index"), &Node::get_index);
|
ClassDB::bind_method(D_METHOD("get_index"), &Node::get_index);
|
||||||
ClassDB::bind_method(D_METHOD("print_tree"), &Node::print_tree);
|
ClassDB::bind_method(D_METHOD("print_tree"), &Node::print_tree);
|
||||||
|
ClassDB::bind_method(D_METHOD("print_tree_pretty"), &Node::print_tree_pretty);
|
||||||
ClassDB::bind_method(D_METHOD("set_filename", "filename"), &Node::set_filename);
|
ClassDB::bind_method(D_METHOD("set_filename", "filename"), &Node::set_filename);
|
||||||
ClassDB::bind_method(D_METHOD("get_filename"), &Node::get_filename);
|
ClassDB::bind_method(D_METHOD("get_filename"), &Node::get_filename);
|
||||||
ClassDB::bind_method(D_METHOD("propagate_notification", "what"), &Node::propagate_notification);
|
ClassDB::bind_method(D_METHOD("propagate_notification", "what"), &Node::propagate_notification);
|
||||||
|
|
|
@ -151,6 +151,7 @@ private:
|
||||||
NAME_CASING_SNAKE_CASE
|
NAME_CASING_SNAKE_CASE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void _print_tree_pretty(const String prefix, const bool last);
|
||||||
void _print_tree(const Node *p_node);
|
void _print_tree(const Node *p_node);
|
||||||
|
|
||||||
Node *_get_node(const NodePath &p_path) const;
|
Node *_get_node(const NodePath &p_path) const;
|
||||||
|
@ -287,6 +288,7 @@ public:
|
||||||
int get_index() const;
|
int get_index() const;
|
||||||
|
|
||||||
void print_tree();
|
void print_tree();
|
||||||
|
void print_tree_pretty();
|
||||||
|
|
||||||
void set_filename(const String &p_filename);
|
void set_filename(const String &p_filename);
|
||||||
String get_filename() const;
|
String get_filename() const;
|
||||||
|
|
Loading…
Reference in New Issue