diff options
Diffstat (limited to 'src/entities.cpp')
| -rw-r--r-- | src/entities.cpp | 23 |
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); |
