summaryrefslogtreecommitdiff
path: root/src/model.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/model.cpp')
-rw-r--r--src/model.cpp87
1 files changed, 0 insertions, 87 deletions
diff --git a/src/model.cpp b/src/model.cpp
deleted file mode 100644
index b5c4185..0000000
--- a/src/model.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2022 Frederico de Oliveira Linhares
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#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)
-{
- auto ptr = static_cast<std::shared_ptr<VK::Model>*>(obj);
-
- ptr->~shared_ptr();
- mrb_free(mrb, ptr);
-}
-
-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)
-{
- std::shared_ptr<VK::Mesh> *mesh;
- std::shared_ptr<VK::Texture> *texture;
- std::shared_ptr<VK::Model> *ptr;
-
- 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>));
-
- new(ptr)std::shared_ptr<VK::Model>(
- std::make_shared<VK::Model>(*mesh, *texture));
-
- 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);
- VK::ModelInstance instance;
- std::shared_ptr<glm::vec3> *position;
- std::shared_ptr<glm::vec3> *rotation;
-
- mrb_get_args(
- mrb, "dd", &position, &cg_vector_3d_type, &rotation, &cg_rotation_3d_type);
- instance.position = **position;
- instance.rotation = **rotation;
-
- auto &instances = cg_core.vk_renderer->models_to_draw[
- cg_core.vk_swapchain->current_frame][*ptr];
- instances.push_back(instance);
-
- return self;
-}
-
-void
-cg_model_init(mrb_state *mrb)
-{
- struct RClass *cg_m, *cg_cModel;
-
- cg_m = mrb_module_get(mrb, "CandyGear");
- cg_cModel = mrb_define_class_under(mrb, cg_m, "Model", mrb->object_class);
- MRB_SET_INSTANCE_TT(cg_cModel, MRB_TT_DATA);
- mrb_define_method(
- mrb, cg_cModel, "initialize", cg_cModel_initialize, MRB_ARGS_REQ(2));
- mrb_define_method(mrb, cg_cModel, "draw", cg_cModel_draw, MRB_ARGS_REQ(2));
-}