rebuilding roads done, closes #20

This commit is contained in:
2024-09-14 17:00:08 +03:00
parent c95976016e
commit 01c69a4ae9
7 changed files with 51 additions and 18 deletions

View File

@@ -56,6 +56,7 @@ struct RoadLinesProcessing {
int i;
List<String> keys;
RoadLinesData *rld = RoadLinesData::get_singleton();
edges.clear();
rld->get_road_lines_key_list(&keys);
List<String>::Element *e = keys.front();
while (e) {
@@ -184,7 +185,7 @@ struct RoadLinesProcessing {
singleton = nullptr;
}
}
void road_setup(Node *base)
void road_setup()
{
RoadLinesData *rld = RoadLinesData::get_singleton();
std::vector<Vector3> road_lines_nodes;
@@ -195,6 +196,7 @@ struct RoadLinesProcessing {
rld->process_lines(road_lines_nodes_hash, road_lines_nodes);
create_nodes(road_lines_nodes);
create_edges();
wedges.clear();
build_wedges(wedges);
print_line("ROAD SETUP DONE");
}
@@ -581,13 +583,18 @@ public:
new_mesh->surface_set_name(0, "main");
return new_mesh;
}
void clear_road_meshes()
{
int i;
for (i = 0; i < (int)nodes_mi.size(); i++)
nodes_mi[i]->queue_delete();
nodes_mi.clear();
}
void create_road_meshes(Node *base)
{
int i;
RoadLinesProcessing *r = RoadLinesProcessing::get_singleton();
for (i = 0; i < (int)nodes_mi.size(); i++)
nodes_mi[i]->queue_delete();
nodes_mi.clear();
clear_road_meshes();
for (i = 0; i < (int)r->nodes.size(); i++) {
Ref<ArrayMesh> mesh =
build_road(r->wedges[i], "common/center",
@@ -625,10 +632,15 @@ RoadMeshProcessing *RoadMeshProcessing::singleton;
void RoadProcessing::road_setup(Node *target)
{
RoadLinesProcessing::get_singleton()->road_setup(target);
RoadLinesProcessing::get_singleton()->road_setup();
RoadMeshProcessing::get_singleton()->create_road_meshes(target);
}
void RoadProcessing::remove_road_meshes(Node *target)
{
RoadMeshProcessing::get_singleton()->clear_road_meshes();
}
void RoadProcessing::load_data()
{
/* Not needed but still */