summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities.cpp')
-rw-r--r--src/entities.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
index 8b37cbc..8b39cea 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -1412,18 +1412,21 @@ pk_bkt_arr *EntityType_GetEntityTypes() {
}
void EntityType_Teardown() {
- auto et_iter_cb = [](void *user_data, void *arr_obj_data) {
- (void)user_data;
- EntityType &et = *reinterpret_cast<EntityType *>(arr_obj_data);
- if (et.modelAssetKey[0] == '\0') return;
+ bool b;
+ pk_iter_t<EntityType> iter_ent_type{};
+ b = pk_bkt_arr_iter_end(&et_mstr.bc, &iter_ent_type);
+ while (b == true) {
+ if (iter_ent_type->modelAssetKey[0] == '\0') {
+ b = pk_bkt_arr_iter_decrement(&et_mstr.bc, &iter_ent_type);
+ continue;
+ }
CompGrBinds *grBindsArr[EntityTypeDetails_MAX] = {nullptr};
- for (long k = 0; k < et.detailsCount; ++k) {
- const EntityTypeDetails &etd = et.details[k];
- grBindsArr[k] = etd.grBinds;
+ for (long k = 0; k < iter_ent_type->detailsCount; ++k) {
+ grBindsArr[k] = iter_ent_type->details[k].grBinds;
}
- EntityType_Unload(et, grBindsArr);
- };
- pk_bkt_arr_iterate(&et_mstr.bc, et_iter_cb, NULL);
+ EntityType_Unload(*iter_ent_type, grBindsArr);
+ b = pk_bkt_arr_iter_decrement(&et_mstr.bc, &iter_ent_type);
+ }
pk_bkt_arr_teardown(&et_mstr.bc);
pk_arr_reset(&EntityTypesToTeardown);
pk_mem_bucket_destroy(et_mstr.bkt);