From 80a67230fe192287503092a3d256aea3a494409c Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 14 Jan 2025 15:50:04 -0500 Subject: pke: camera can track a given target --- src/entities.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/entities.cpp') 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; -- cgit v1.2.3