summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-01-14 15:50:04 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-01-14 15:50:04 -0500
commit80a67230fe192287503092a3d256aea3a494409c (patch)
tree187f2e7a41e0cd206d9969284a3abce4028d89f5 /src/entities.cpp
parent46d814de510d0a7753c3e49eed3b3440d1c7c681 (diff)
pke: camera can track a given target
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;