Mesh Generation GDSCript

This concludes the mesh generation of walls. We can now put holes into
walls deterministically.
This commit is contained in:
2025-11-02 15:55:00 -05:00
parent 41647dda49
commit 35a1706e58
60 changed files with 435 additions and 4137 deletions

Binary file not shown.

View File

@@ -6,6 +6,7 @@
#include "godot_cpp/variant/packed_int32_array.hpp"
#include "godot_cpp/variant/packed_vector2_array.hpp"
#include "godot_cpp/variant/string.hpp"
#include "godot_cpp/variant/typed_array.hpp"
#include "godot_cpp/variant/utility_functions.hpp"
#include "godot_cpp/variant/vector2.hpp"
#include <array>
@@ -33,12 +34,17 @@ _convert_to_std_vec(const godot::PackedVector2Array &packed_array) {
return std_vec;
}
PackedInt32Array Triangulization::triangulate_with_holes(Polygon2D *outer,
Polygon2D *inner) {
PackedInt32Array
Triangulization::triangulate_with_holes(const Polygon2D *outer,
const TypedArray<Polygon2D> &inner) {
std::vector<std::vector<std::array<double, 2>>> p;
p.push_back(_convert_to_std_vec(outer->get_polygon()));
p.push_back(_convert_to_std_vec(inner->get_polygon()));
for (int i = 0; i < inner.size(); i++) {
Polygon2D *polygon = Object::cast_to<Polygon2D>(inner[i]);
p.push_back(_convert_to_std_vec(polygon->get_polygon()));
}
// for (int i = 0; i < p.size(); i++) {
// for (int j = 0; j < p[i].size(); j++) {
@@ -49,11 +55,9 @@ PackedInt32Array Triangulization::triangulate_with_holes(Polygon2D *outer,
// }
std::vector<uint32_t> indices = mapbox::earcut<uint32_t>(p);
// reverse to counter clockwise creating of triangles
std::reverse(indices.begin(), indices.end());
PackedInt32Array return_values;
for (int i = 0; i < indices.size(); i++) {
for (int i = indices.size() - 1; i >= 0; i--) {
return_values.push_back(indices[i]);
}

View File

@@ -16,6 +16,6 @@ protected:
public:
Triangulization();
PackedInt32Array triangulate_with_holes(godot::Polygon2D *inner,
godot::Polygon2D *outer);
PackedInt32Array triangulate_with_holes(const Polygon2D *inner,
const TypedArray<Polygon2D> &outer);
};

Binary file not shown.