Optimize buildings
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user