diff options
Diffstat (limited to 'src/entities.cpp')
| -rw-r--r-- | src/entities.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/entities.cpp b/src/entities.cpp index 8b39cea..1f05b47 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -1267,19 +1267,20 @@ void EntityType_Unload(EntityType &et, CompGrBinds *grBindsArr[1]) { void EntityType_Tick(double delta) { (void)delta; - const uint32_t count = EntitiesToBeRemoved.next; - for (uint32_t i = 0; i < count; ++i) { - auto *entTypePtr = EntityType_FindByEntityHandle(EntitiesToBeRemoved[i]->handle); - if (entTypePtr != nullptr) { - auto &entType = *entTypePtr; - pk_arr_append_t(&EntityTypesToTeardown, {}); - auto &td = EntityTypesToTeardown[EntityTypesToTeardown.next-1]; - td.handle = EntitiesToBeRemoved[i]->handle; + pk_iter_t<EntityType> iter_ent_type; + bool b; + b = pk_bkt_arr_iter_begin(&et_mstr.bc, &iter_ent_type); + while (b == true) { + if (iter_ent_type->isMarkedForRemoval == true) { + EntToTeardown td{}; + td.handle = iter_ent_type->handle; td.ticksToWait = 1; - for (long k = 0; k < entType.detailsCount; ++k) { - td.grBinds[k] = entType.details[k].grBinds; + for (long k = 0; k < iter_ent_type->detailsCount; ++k) { + td.grBinds[k] = iter_ent_type->details[k].grBinds; } + pk_arr_append_t(&EntityTypesToTeardown, td); } + b = pk_bkt_arr_iter_increment(&et_mstr.bc, &iter_ent_type); } } |
