feat: deleting primitives at runtime

This commit is contained in:
Sara Gerretsen 2025-12-15 12:34:46 +01:00
parent 5f7e0853b1
commit 5953ff49a1
3 changed files with 24 additions and 0 deletions

View file

@ -24,6 +24,9 @@ void TerrainMeshGenerator::_bind_methods() {
ADD_SIGNAL(MethodInfo(sig_primitives_changed));
ADD_SIGNAL(MethodInfo(sig_primitive_list_changed, PropertyInfo(Variant::ARRAY, "array", PROPERTY_HINT_ARRAY_TYPE, vformat("%s/%s:TerrainPrimitive", Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE))));
ClassDB::bind_method(D_METHOD("push_task", "area", "out_mesh", "side_points"), &self_type::push_task);
ClassDB::bind_method(D_METHOD("add_primitive", "primitive"), &self_type::add_primitive);
ClassDB::bind_method(D_METHOD("insert_primitive", "primitive", "idx"), &self_type::insert_primitive);
ClassDB::bind_method(D_METHOD("remove_primitive", "primitive"), &self_type::remove_primitive);
}
void TerrainMeshGenerator::enter_tree() {
@ -263,6 +266,12 @@ void TerrainMeshGenerator::add_primitive(Ref<TerrainPrimitive> primitive) {
set_primitives(list);
}
void TerrainMeshGenerator::insert_primitive(Ref<TerrainPrimitive> primitive, int idx) {
Array list = get_primitives();
list.insert(idx, primitive);
set_primitives(list);
}
void TerrainMeshGenerator::remove_primitive(Ref<TerrainPrimitive> primitive) {
Array list = get_primitives();
int idx{ list.find(primitive) };