You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-13 13:31:48 +00:00
-Heavily improved editor startup and exit performance
This commit is contained in:
@@ -64,7 +64,7 @@ void SceneTree::node_removed(Node *p_node) {
|
||||
}
|
||||
|
||||
|
||||
void SceneTree::add_to_group(const StringName& p_group, Node *p_node) {
|
||||
SceneTree::Group *SceneTree::add_to_group(const StringName& p_group, Node *p_node) {
|
||||
|
||||
Map<StringName,Group>::Element *E=group_map.find(p_group);
|
||||
if (!E) {
|
||||
@@ -73,10 +73,12 @@ void SceneTree::add_to_group(const StringName& p_group, Node *p_node) {
|
||||
|
||||
if (E->get().nodes.find(p_node)!=-1) {
|
||||
ERR_EXPLAIN("Already in group: "+p_group);
|
||||
ERR_FAIL();
|
||||
ERR_FAIL_V(&E->get());
|
||||
}
|
||||
E->get().nodes.push_back(p_node);
|
||||
E->get().last_tree_version=0;
|
||||
//E->get().last_tree_version=0;
|
||||
E->get().changed=true;
|
||||
return &E->get();
|
||||
}
|
||||
|
||||
void SceneTree::remove_from_group(const StringName& p_group, Node *p_node) {
|
||||
@@ -125,7 +127,7 @@ void SceneTree::_flush_ugc() {
|
||||
|
||||
void SceneTree::_update_group_order(Group& g) {
|
||||
|
||||
if (g.last_tree_version==tree_version)
|
||||
if (!g.changed)
|
||||
return;
|
||||
if (g.nodes.empty())
|
||||
return;
|
||||
@@ -135,7 +137,8 @@ void SceneTree::_update_group_order(Group& g) {
|
||||
|
||||
SortArray<Node*,Node::Comparator> node_sort;
|
||||
node_sort.sort(nodes,node_count);
|
||||
g.last_tree_version=tree_version;
|
||||
g.changed=false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -148,8 +151,6 @@ void SceneTree::call_group(uint32_t p_call_flags,const StringName& p_group,const
|
||||
if (g.nodes.empty())
|
||||
return;
|
||||
|
||||
_update_group_order(g);
|
||||
|
||||
|
||||
if (p_call_flags&GROUP_CALL_UNIQUE && !(p_call_flags&GROUP_CALL_REALTIME)) {
|
||||
|
||||
@@ -175,6 +176,8 @@ void SceneTree::call_group(uint32_t p_call_flags,const StringName& p_group,const
|
||||
return;
|
||||
}
|
||||
|
||||
_update_group_order(g);
|
||||
|
||||
Vector<Node*> nodes_copy = g.nodes;
|
||||
Node **nodes = &nodes_copy[0];
|
||||
int node_count=nodes_copy.size();
|
||||
|
||||
Reference in New Issue
Block a user