From f07294ca65143fac8b1b426d1854212403721226 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 10 Jan 2024 19:24:12 -0500 Subject: checkpoint - handle breaking ECS changes - compiles --- src/entities.hpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'src/entities.hpp') 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 #include +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 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 */ -- cgit v1.2.3