summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities.cpp')
-rw-r--r--src/entities.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
index e955578..0fa5cf2 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -102,7 +102,7 @@ EntityType *EntityType_FindByTypeCode(const char *typeCode) {
return nullptr;
}
-EntityType *EntityType_FindByEntityHandle(EntityHandle handle) {
+EntityType *EntityType_FindByEntityHandle_Inner(EntityHandle handle) {
if (handle == EntityHandle_MAX) return nullptr;
for (pk_handle_bucket_index_T b = 0; b <= EntityType_BC.pkeHandle.bucketIndex; ++b) {
auto &bkt = EntityType_BC.buckets[b];
@@ -116,6 +116,20 @@ EntityType *EntityType_FindByEntityHandle(EntityHandle handle) {
}
return nullptr;
}
+EntityType *EntityType_FindByEntityHandle(EntityHandle handle) {
+ Entity_Base *base_entity;
+ EntityType *ret = nullptr;
+ EntityHandle h = handle;
+ while (ret == nullptr) {
+ ret = EntityType_FindByEntityHandle_Inner(h);
+ if (ret != nullptr) return ret;
+ base_entity = ECS_GetEntity(h);
+ if (base_entity == nullptr) break;
+ h = base_entity->parentHandle;
+ if (h == EntityHandle_MAX) break;
+ }
+ return nullptr;
+}
void CalculateCombinedMemReqs(uint64_t memReqsCount, VkMemoryRequirements *memReqs, VkMemoryRequirements &combinedMemReqs) {
combinedMemReqs.size = 0;