summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities.cpp')
-rw-r--r--src/entities.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
index 496874a..91c94d8 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -38,15 +38,16 @@ int64_t EntityType_FindByTypeCode(const char *typeCode) {
return -1;
}
-int64_t EntityType_FindByEntityHandle(EntityHandle handle, int64_t &detailIndex) {
+int64_t EntityType_FindByEntity(Entity_Base *entity, int64_t &detailIndex) {
+ assert(entity != nullptr);
for (int64_t i = 0; i < GlobalEntityTypes.Count(); ++i) {
for (int64_t k = 0; k < GlobalEntityTypes[i].detailsCount; ++k) {
- if (GlobalEntityTypes[i].details[k].entityHandle == handle) {
+ if (GlobalEntityTypes[i].details[k].entityHandle == entity->handle) {
detailIndex = k;
return i;
}
}
- if (GlobalEntityTypes[i].entityHandle == handle) {
+ if (GlobalEntityTypes[i].entityHandle == entity->handle) {
detailIndex = -1;
return i;
}
@@ -1152,10 +1153,11 @@ void EntityType_Tick(double delta) {
const auto count = EntitiesToBeRemoved.Count();
int64_t detailIndex = -1;
for (long i = 0; i < count; ++i) {
- if (auto index = EntityType_FindByEntityHandle(EntitiesToBeRemoved[i], detailIndex); index > -1) {
- if (auto *grBinds = ECS_GetGrBinds(EntitiesToBeRemoved[i]); grBinds != nullptr) {
+ if (auto index = EntityType_FindByEntity(EntitiesToBeRemoved[i], detailIndex); index > -1) {
+ auto &entType = GlobalEntityTypes[index];
+ if (auto *grBinds = ECS_GetGrBinds(entType.details[detailIndex].grBindsHandle); grBinds != nullptr) {
auto &td = EntityTypesToTeardown.Push();
- td.handle = EntitiesToBeRemoved[i];
+ td.handle = EntitiesToBeRemoved[i]->handle;
td.ticksToWait = 1;
for (long k = 0; k < GlobalEntityTypes[index].detailsCount; ++k) {
td.grBinds[k] = grBinds;
@@ -1167,13 +1169,13 @@ void EntityType_Tick(double delta) {
void EntityType_Tick_Late(double delta) {
while (EntitiesWithExcessInstances.Count() != 0) {
- auto entHandle = EntitiesWithExcessInstances.Pop();
+ auto *entity = EntitiesWithExcessInstances.Pop();
int64_t detailIndex = 0;
- auto index = EntityType_FindByEntityHandle(entHandle, detailIndex);
+ auto index = EntityType_FindByEntity(entity, detailIndex);
auto &et = GlobalEntityTypes[index];
auto &etd = GlobalEntityTypes[index].details[detailIndex];
- auto &grBinds = *ECS_GetGrBinds(etd.entityHandle);
- EntityType_RolloverInstances(et, grBinds);
+ auto *grBinds = ECS_GetGrBinds(etd.grBindsHandle);
+ EntityType_RolloverInstances(et, *grBinds);
}
for (int64_t i = EntityTypesToTeardown.Count() - 1; i >= 0; --i) {
auto &td = EntityTypesToTeardown[i];