diff options
author | Frederico Linhares <fred@linhares.blue> | 2022-09-27 17:38:20 -0300 |
---|---|---|
committer | Frederico Linhares <fred@linhares.blue> | 2022-09-29 11:37:05 -0300 |
commit | d7d79214a93bc96b38ac018aad4c8d5ee88d51ca (patch) | |
tree | 25528c9bd91556f3d1d5d35a5d2c52d3d7d8a5a8 /src/model.cpp | |
parent | 28de1fe8713aba2c4bb23fc8640adb2747373b66 (diff) |
feat Allow multiple textures to be used with the same mesh
Diffstat (limited to 'src/model.cpp')
-rw-r--r-- | src/model.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/model.cpp b/src/model.cpp index 6a6e470..b5c4185 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -16,13 +16,14 @@ #include "model.hpp" +#include "mesh.hpp" #include "rotation_3d.hpp" #include "texture.hpp" #include "vector_3d.hpp" #include "vk/model_instance.hpp" void -cg_free_model(mrb_state *mrb, void* obj) +cg_free_model(mrb_state *mrb, void *obj) { auto ptr = static_cast<std::shared_ptr<VK::Model>*>(obj); @@ -35,32 +36,27 @@ const struct mrb_data_type cg_model_type = { "CG_Model", cg_free_model }; static mrb_value cg_cModel_initialize(mrb_state *mrb, mrb_value self) { - const char *file_path; - - mrb_sym id_at_texture; - mrb_value texture_v; - + std::shared_ptr<VK::Mesh> *mesh; std::shared_ptr<VK::Texture> *texture; std::shared_ptr<VK::Model> *ptr; - mrb_get_args(mrb, "zd", &file_path, &texture, &cg_texture_type); + mrb_get_args(mrb, "dd", &mesh, &cg_mesh_type, &texture, &cg_texture_type); ptr = (std::shared_ptr<VK::Model>*)DATA_PTR(self); if(ptr) mrb_free(mrb, ptr); ptr = (std::shared_ptr<VK::Model>*)mrb_malloc( mrb, sizeof(std::shared_ptr<VK::Model>)); - std::string path{file_path}; new(ptr)std::shared_ptr<VK::Model>( - std::make_shared<VK::Model>(path, *texture)); + std::make_shared<VK::Model>(*mesh, *texture)); - mrb_data_init(self, ptr, &cg_model_type); + mrb_data_init(self, ptr, &cg_mesh_type); return self; } static mrb_value cg_cModel_draw(mrb_state *mrb, mrb_value self) { - auto *ptr = (std::shared_ptr<VK::Model>*)DATA_PTR(self); + auto ptr = (std::shared_ptr<VK::Model>*)DATA_PTR(self); VK::ModelInstance instance; std::shared_ptr<glm::vec3> *position; std::shared_ptr<glm::vec3> *rotation; |