Mesh Generation GDSCript
This concludes the mesh generation of walls. We can now put holes into walls deterministically.
This commit is contained in:
Binary file not shown.
@@ -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]);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
Reference in New Issue
Block a user