summaryrefslogtreecommitdiff
path: root/src/entities.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-01-10 19:24:12 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-01-10 19:24:12 -0500
commitf07294ca65143fac8b1b426d1854212403721226 (patch)
tree2edeb8f2c9beea1cbb065f69910d53957ebda0ce /src/entities.hpp
parent294c85f91ac5b2ff9e4ad3d99588ed0d1a72e6b7 (diff)
checkpoint - handle breaking ECS changes - compiles
Diffstat (limited to 'src/entities.hpp')
-rw-r--r--src/entities.hpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/entities.hpp b/src/entities.hpp
index cbb8e15..ce680e0 100644
--- a/src/entities.hpp
+++ b/src/entities.hpp
@@ -1,6 +1,7 @@
#ifndef PKE_ENTITIES_HPP
#define PKE_ENTITIES_HPP
+#include "memory-type-defs.hpp"
#include "vendor/cgltf-include.hpp"
#include "vendor/stb_image_include.hpp"
#include "ecs.hpp"
@@ -12,10 +13,10 @@
#include <BulletCollision/CollisionShapes/btCollisionShape.h>
#include <vulkan/vulkan_core.h>
+const size_t EntityTypeDetails_MAX = 1;
struct EntityTypeDetails {
AssetKey textureAssetKey;
- EntityHandle entityHandle = EntityHandle_MAX;
- GrBindsHandle grBindsHandle = GrBindsHandle_MAX;
+ CompGrBinds *grBinds = nullptr;
VkImage textureImage = VK_NULL_HANDLE;
VkImageView textureImageView = VK_NULL_HANDLE;
VkDescriptorPool vkDescriptorPool = VK_NULL_HANDLE;
@@ -27,26 +28,33 @@ struct EntityTypeDetails {
} bt;
uint32_t startingInstanceCount = 1024;
};
-struct EntityType {
+struct EntityType : public Entity_Base {
AssetKey modelAssetKey;
const char *entityTypeCode = nullptr;
- EntityHandle entityHandle = EntityHandle_MAX;
VkDeviceMemory deviceMemoryVert = VK_NULL_HANDLE;
VkDeviceMemory deviceMemoryInst = VK_NULL_HANDLE;
VkDeviceMemory deviceMemoryPhysVert = VK_NULL_HANDLE;
VkDeviceMemory deviceMemoryTexture = VK_NULL_HANDLE;
- int64_t detailsCount = 1;
- EntityTypeDetails details[1];
+ int64_t detailsCount = 0;
+ EntityTypeDetails details[EntityTypeDetails_MAX];
+ PkeCallback createInstanceCallback;
+ // PkeCallback serializeInstanceCallback; // TODO
+ // PkeCallback parseInstanceCallback; // TODO
};
-extern DynArray<EntityType> GlobalEntityTypes;
+struct EntityTypeHandle : PkeHandle {};
+constexpr EntityTypeHandle EntityTypeHandle_MAX = EntityTypeHandle{};
void EntityType_Init();
-int64_t EntityType_FindByTypeCode(const char *typeCode);
-int64_t EntityType_FindByEntityHandle(EntityHandle handle, int64_t &detailIndex);
+EntityType *EntityType_FindByTypeCode(const char *typeCode);
+EntityType *EntityType_FindByEntityHandle(EntityHandle handle);
+EntityType *EntityType_Create();
+Entity_Base *EntityType_CreateGenericInstance(EntityType *et, CompInstance *srcInstance = nullptr);
void EntityType_Load(EntityType &et);
void EntityType_Tick(double delta);
void EntityType_Tick_Late(double delta);
void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds);
+PkeHandleBucketIndex_T EntityType_GetBucketCount();
+EntityType *EntityType_GetEntityTypes(PkeHandleBucketIndex_T bucketIndex, PkeHandleItemIndex_T &itemCount);
void EntityType_Teardown();
#endif /* PKE_ENTITIES_HPP */