summaryrefslogtreecommitdiff
path: root/src/entities.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-09-07 22:44:12 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-09-07 22:44:12 -0400
commit9d6c681037eb4fb3c6d9eca6b1ff1d01d429614e (patch)
tree5d5b8070a4a67a1004458d8588cd103323cb6950 /src/entities.cpp
parent72c0e8e946c1d3e391986eeece474f3d2529f160 (diff)
entities and memory allocation checkpoint
Diffstat (limited to 'src/entities.cpp')
-rw-r--r--src/entities.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
new file mode 100644
index 0000000..fb2bc60
--- /dev/null
+++ b/src/entities.cpp
@@ -0,0 +1,41 @@
+
+#include "entities.hpp"
+#include "ecs.hpp"
+#include <vulkan/vulkan_core.h>
+
+void EntityType_Init() {}
+
+void EntityType_Load(EntityType &et) {
+ if (et.modelFile != nullptr && et.modelFile != CAFE_BABE(char)) {
+ assert(et.vkPipelineLayoutCreateInfo != nullptr && et.vkPipelineLayoutCreateInfo != CAFE_BABE(VkPipelineLayoutCreateInfo) && "EntityType with a defined model must also contain appropriate Vulkan CreateInfos");
+ AssetHandle assetHandle{AM_Register(et.modelFile)};
+ const Asset *asset = AM_Get(assetHandle);
+
+ CompGrBinds &grBinds = ECS_CreateGrBinds(et.entityHandle);
+ auto vkResult = vkCreatePipelineLayout(vkDevice, et.vkPipelineLayoutCreateInfo, vkAllocator, &grBinds.vkPipelineLayout);
+ assert(vkResult == VK_SUCCESS);
+ // TODO grBinds.vkDescriptorSet
+
+ cgltf_options options{};
+ cgltf_data *gltfData = nullptr;
+ cgltf_result result = cgltf_parse(&options, asset->ptr, asset->size, &gltfData);
+ assert(result == cgltf_result_success);
+ result = cgltf_validate(gltfData);
+ assert(result == cgltf_result_success);
+
+ // create buffers
+ // TODO
+
+ // create VkDeviceMemory
+ VkMemoryAllocateInfo vkMemoryAllocateInfo;
+ vkMemoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
+ vkMemoryAllocateInfo.pNext = nullptr;
+ vkMemoryAllocateInfo.allocationSize = gltfData->buffers[0].size;;
+ vkMemoryAllocateInfo.memoryTypeIndex = FindMemoryTypeIndex(0, 0); // TODO
+
+ vkAllocateMemory(vkDevice, &vkMemoryAllocateInfo, vkAllocator, &grBinds.deviceMemory);
+
+ // TODO bind buffers to memory
+ }
+
+}