summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities.cpp')
-rw-r--r--src/entities.cpp21
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);
}
}