From 965ff9cc09401ae61c15aca0232d59fac17bfce3 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Tue, 27 Sep 2022 13:35:49 -0400 Subject: async chunk meshing --- engine/xe_engine.cpp | 6 +++--- engine/xe_engine.hpp | 5 +++-- engine/xe_game_object.hpp | 3 +-- engine/xe_model.cpp | 4 ++-- engine/xe_model.hpp | 2 +- engine/xe_render_system.cpp | 2 ++ 6 files changed, 12 insertions(+), 10 deletions(-) (limited to 'engine') diff --git a/engine/xe_engine.cpp b/engine/xe_engine.cpp index 44e5a4e..6392d78 100644 --- a/engine/xe_engine.cpp +++ b/engine/xe_engine.cpp @@ -32,18 +32,18 @@ void Engine::loadDescriptorPool() { .build(); } -std::shared_ptr Engine::loadModelFromFile(const std::string &filename) { +Model* Engine::loadModelFromFile(const std::string &filename) { return Model::createModelFromFile(xeDevice, filename); } -std::shared_ptr Engine::loadModelFromData(std::vector vertexData, uint32_t vertexSize, std::vector indices) { +Model* Engine::loadModelFromData(std::vector vertexData, uint32_t vertexSize, std::vector indices) { Model::Builder builder{}; builder.vertexData.data = vertexData; builder.vertexSize = vertexSize; if(indices.size() > 0) { builder.indices = indices; } - return std::make_shared(xeDevice, builder); + return new Model(xeDevice, builder); } Image* Engine::loadImageFromFile(const std::string &filename, bool anisotropic) { diff --git a/engine/xe_engine.hpp b/engine/xe_engine.hpp index 1a208d6..eff2d13 100644 --- a/engine/xe_engine.hpp +++ b/engine/xe_engine.hpp @@ -7,6 +7,7 @@ #include "xe_image.hpp" #include "xe_input.hpp" #include "xe_sound.hpp" +#include "xe_model.hpp" #include #include @@ -31,8 +32,8 @@ class Engine { Camera& getCamera() {return xeCamera;} Device& getDevice() {return xeDevice;} - std::shared_ptr loadModelFromFile(const std::string &filename); - std::shared_ptr loadModelFromData(std::vector vertexData, uint32_t vertexSize, std::vector indices); + Model* loadModelFromFile(const std::string &filename); + Model* loadModelFromData(std::vector vertexData, uint32_t vertexSize, std::vector indices); Image* loadImageFromFile(const std::string &filename, bool anisotropic = true); bool beginFrame() { return xeRenderer.beginFrame(); } diff --git a/engine/xe_game_object.hpp b/engine/xe_game_object.hpp index 7c4149e..7d7e698 100644 --- a/engine/xe_game_object.hpp +++ b/engine/xe_game_object.hpp @@ -37,8 +37,7 @@ class GameObject { id_t getId() { return id; } - std::shared_ptr model{}; - // glm::vec3 color{}; + Model* model{}; TransformComponent transform; private: diff --git a/engine/xe_model.cpp b/engine/xe_model.cpp index fd97f44..ff0d630 100644 --- a/engine/xe_model.cpp +++ b/engine/xe_model.cpp @@ -20,10 +20,10 @@ Model::Model(Device &device, const Model::Builder &builder) : xeDevice{device} { Model::~Model() {} -std::unique_ptr Model::createModelFromFile(Device &device, const std::string &filepath) { +Model* Model::createModelFromFile(Device &device, const std::string &filepath) { Builder builder{}; builder.loadModel(filepath); - return std::make_unique(device, builder); + return new Model(device, builder); } void Model::createVertexBuffers(const std::vector &vertexData, uint32_t vertexSize) { diff --git a/engine/xe_model.hpp b/engine/xe_model.hpp index 41dccd5..1886657 100644 --- a/engine/xe_model.hpp +++ b/engine/xe_model.hpp @@ -40,7 +40,7 @@ class Model { Model(const Model &) = delete; Model operator=(const Model &) = delete; - static std::unique_ptr createModelFromFile(Device &device, const std::string &filepath); + static Model* createModelFromFile(Device &device, const std::string &filepath); void bind(VkCommandBuffer commandBuffer); void draw(VkCommandBuffer commandBuffer); diff --git a/engine/xe_render_system.cpp b/engine/xe_render_system.cpp index f2f0e43..1ceff78 100644 --- a/engine/xe_render_system.cpp +++ b/engine/xe_render_system.cpp @@ -208,6 +208,8 @@ void RenderSystem::loadTextureArray(uint32_t binding, std::vector& image void RenderSystem::render(GameObject &gameObject) { + if(gameObject.model == nullptr) return; + gameObject.model->bind(xeRenderer.getCurrentCommandBuffer()); gameObject.model->draw(xeRenderer.getCurrentCommandBuffer()); -- cgit v1.2.3-freya