Optimize buildings

This commit is contained in:
2025-03-16 23:59:00 +03:00
parent 7eceed3ee5
commit 8e140fb878
130 changed files with 5338 additions and 5222 deletions

View File

@@ -1514,6 +1514,7 @@ class RoadMeshProcessing {
}
};
HashMap<String, struct mesh_data> road_meshes;
MergeGroup *road_mgroup;
std::vector<MeshInstance *> nodes_mi;
public:
@@ -2188,12 +2189,20 @@ public:
for (i = 0; i < (int)nodes_mi.size(); i++)
nodes_mi[i]->queue_delete();
nodes_mi.clear();
if (road_mgroup) {
road_mgroup->queue_delete();
road_mgroup = nullptr;
}
}
void create_road_meshes(Node *base)
{
int i;
RoadLinesProcessing *r = RoadLinesProcessing::get_singleton();
clear_road_meshes();
road_mgroup = memnew(MergeGroup);
road_mgroup->set_param(MergeGroup::PARAM_GROUP_SIZE, 16);
road_mgroup->set_param(MergeGroup::PARAM_SPLITS_HORIZONTAL, 2);
base->call_deferred("add_child", road_mgroup);
for (i = 0; i < (int)r->nodes.size(); i++) {
Ref<ArrayMesh> mesh = build_road(
r->wedges[i], "common/center", "common/mid",
@@ -2202,7 +2211,7 @@ public:
mi->hide();
mi->set_mesh(mesh);
Transform xform(Basis(), r->nodes[i]);
base->call_deferred("add_child", mi);
road_mgroup->call_deferred("add_child", mi);
mi->set_transform(xform);
mi->call_deferred("show");
nodes_mi.push_back(mi);
@@ -2216,6 +2225,7 @@ public:
return singleton;
}
RoadMeshProcessing()
: road_mgroup(nullptr)
{
singleton = this;
}