diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-10 19:24:12 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-10 19:24:12 -0500 |
| commit | f07294ca65143fac8b1b426d1854212403721226 (patch) | |
| tree | 2edeb8f2c9beea1cbb065f69910d53957ebda0ce /src/entities.hpp | |
| parent | 294c85f91ac5b2ff9e4ad3d99588ed0d1a72e6b7 (diff) | |
checkpoint - handle breaking ECS changes - compiles
Diffstat (limited to 'src/entities.hpp')
| -rw-r--r-- | src/entities.hpp | 26 |
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 */ |
