From 3c55528b3e0e6e52e416535d9884254a0f21d07e Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 5 Sep 2023 12:10:04 -0400 Subject: instancing checkpoint --- src/components.hpp | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'src/components.hpp') diff --git a/src/components.hpp b/src/components.hpp index f0a46a9..8f0d3a5 100644 --- a/src/components.hpp +++ b/src/components.hpp @@ -1,36 +1,65 @@ #ifndef PKE_COMPONENTS_HPP #define PKE_COMPONENTS_HPP -#include"macros.hpp" +#include "macros.hpp" +#include "dynamic-array.hpp" + +#include +#include #include const uint64_t ECS_UNSET_VAL = 0xFFFFFFFFFFFFFFFF; TypeSafeInt_H(EntityHandle, uint64_t, UINT64_MAX); TypeSafeInt_H(GrBindsHandle, uint64_t, UINT64_MAX); +TypeSafeInt_H(InstanceHandle, uint64_t, UINT64_MAX); struct Entity { EntityHandle handle = EntityHandle{EntityHandle_T{ECS_UNSET_VAL}}; EntityHandle parentHandle = EntityHandle{EntityHandle_T{ECS_UNSET_VAL}}; - bool isMarkedForRemoval = false; GrBindsHandle grBindsHandle = GrBindsHandle{GrBindsHandle_T{ECS_UNSET_VAL}}; + InstanceHandle instanceHandle = InstanceHandle{InstanceHandle_T{ECS_UNSET_VAL}}; + bool isMarkedForRemoval = false; }; -struct GrBindsComp { +struct Vert { + glm::vec3 pos; + glm::vec2 tex; +}; + +struct InstPos { + glm::vec3 pos; + glm::vec3 rot; + glm::vec3 scale; +}; + +struct CompGrBinds { + GrBindsHandle grBindsHandle = GrBindsHandle{GrBindsHandle_T{ECS_UNSET_VAL}}; + VkDeviceMemory deviceMemory = VK_NULL_HANDLE; VkBuffer vertexBuffer = VK_NULL_HANDLE; uint32_t vertexFirstBinding = 0; uint32_t vertexCount = 0; VkDeviceSize vertexOffsets = 0; + DynArray vertexes{0}; VkBuffer indexBuffer = VK_NULL_HANDLE; uint32_t indexFirstBinding = 0; uint32_t indexCount = 0; VkDeviceSize indexOffsets = 0; + DynArray indexes{0}; VkBuffer instanceBuffer = VK_NULL_HANDLE; uint32_t instanceFirstBinding = 0; uint32_t instanceCount = 0; VkDeviceSize instanceOffsets = 0; + DynArray instances{0}; VkPipelineLayout vkPipelineLayout = VK_NULL_HANDLE; VkDescriptorSet vkDescriptorSet = VK_NULL_HANDLE; }; +struct CompInstance { + GrBindsHandle grBindsHandle = GrBindsHandle{GrBindsHandle_T{ECS_UNSET_VAL}}; + InstanceHandle instanceHandle = InstanceHandle{InstanceHandle_T{ECS_UNSET_VAL}}; + uint64_t index = ECS_UNSET_VAL; + InstPos *ptr = nullptr; +}; + #endif /* PKE_COMPONENTS_HPP */ -- cgit v1.2.3