#ifndef PKE_ENTITIES_HPP #define PKE_ENTITIES_HPP #include "vendor/cgltf-include.hpp" #include "vendor/stb_image_include.hpp" #include "ecs.hpp" #include "components.hpp" #include "asset-manager.hpp" #include "memory.hpp" #include "window.hpp" #include #include struct EntityType { AssetKey modelAssetKey; AssetKey textureAssetKey; const char *entityTypeCode = nullptr; EntityHandle entityHandle; GrBindsHandle grBindsHandle = GrBindsHandle_MAX; VkDeviceMemory deviceMemoryVert = VK_NULL_HANDLE; VkDeviceMemory deviceMemoryInst = VK_NULL_HANDLE; VkDeviceMemory deviceMemoryPhysVert = VK_NULL_HANDLE; VkDeviceMemory deviceMemoryTexture = VK_NULL_HANDLE; VkImage textureImage = VK_NULL_HANDLE; VkImageView textureImageView = VK_NULL_HANDLE; VkDescriptorPool vkDescriptorPool = VK_NULL_HANDLE; uint32_t startingInstanceCount = 1024; struct Importer_GLTF { int16_t AccessorIndexVertex = 0; int16_t AccessorIndexNormal = 1; int16_t AccessorIndexUV = 2; int16_t AccessorIndexIndex = 3; } Importer_GLTF; struct { btCollisionShape *shape = nullptr; btScalar startingMass = 1.f; PhysicsCollision startingCollisionLayer = PhysicsCollision{1}; PhysicsCollision startingCollisionMask = PhysicsCollision{1}; } bt; }; extern DynArray GlobalEntityTypes; void EntityType_Init(); int64_t EntityType_FindByTypeCode(const char *typeCode); int64_t EntityType_FindByEntityHandle(EntityHandle handle); void EntityType_Load(EntityType &et); void EntityType_Tick_Late(double delta); void EntityType_RolloverInstances(EntityType &et, CompGrBinds &grBinds); void EntityType_Teardown(); #endif /* PKE_ENTITIES_HPP */