summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2022-08-22 17:26:43 -0300
committerFrederico Linhares <fred@linhares.blue>2022-08-22 17:50:58 -0300
commit42e03ddc3b28c41b81fb5410feb72750530ffa13 (patch)
tree3d13318c57d45eb93348edb63122258a61531eef /src/model
parent67b78f24a9ec8c823bbb8ff091ccd6bb4144a435 (diff)
feat Make camera and model instance more abstract
* src/camera.cpp src/camera.hpp: Remove the camera as Vector3D and Rotation3D are going to replace it. * src/model.cpp: Add draw command as instances do not exist anymore. * src/model/instance.cpp src/model/instance.hpp: Remove the instance as Vector3D and Rotation3D are going to replace it.
Diffstat (limited to 'src/model')
-rw-r--r--src/model/instance.cpp98
-rw-r--r--src/model/instance.hpp25
2 files changed, 0 insertions, 123 deletions
diff --git a/src/model/instance.cpp b/src/model/instance.cpp
deleted file mode 100644
index 83a93c2..0000000
--- a/src/model/instance.cpp
+++ /dev/null
@@ -1,98 +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 "instance.hpp"
-
-#include "../model.hpp"
-#include "../vk/model_instance.hpp"
-
-// This variable works as a constant
-static mrb_sym id_at_model;
-
-void
-cg_free_model_instance(mrb_state *mrb, void* obj)
-{
- auto ptr = static_cast<VK::ModelInstance*>(obj);
-
- mrb_free(mrb, ptr);
-}
-
-const struct mrb_data_type cg_model_instance_type = {
- "CG_Model_Instance", cg_free_model_instance };
-
-static mrb_value
-cg_cModel_cInstance_initialize(mrb_state *mrb, mrb_value self)
-{
- mrb_float position_x, position_y, position_z,
- rotation_x, rotation_y, rotation_z;
- mrb_value model;
- VK::ModelInstance *ptr;
-
- mrb_get_args(
- mrb, "offffff",
- &model,
- &position_x, &position_y, &position_z,
- &rotation_x, &rotation_y, &rotation_z);
- ptr = (VK::ModelInstance*)DATA_PTR(self);
- if(ptr) mrb_free(mrb, ptr);
- ptr = (VK::ModelInstance*)mrb_malloc(mrb, sizeof(VK::ModelInstance));
-
- mrb_iv_set(mrb, self, id_at_model, model);
- ptr->position = glm::vec3(position_x, position_y, position_z);
- ptr->rotation = glm::vec3(rotation_x, rotation_y, rotation_z);
-
- mrb_data_init(self, ptr, &cg_model_instance_type);
- return self;
-}
-
-static mrb_value
-cg_cModel_cInstance_draw(mrb_state *mrb, mrb_value self)
-{
- mrb_value model_v;
-
- VK::ModelInstance *ptr;
- std::shared_ptr<VK::Model> *model_ptr;
-
- model_v = mrb_iv_get(mrb, self, id_at_model);
- ptr = (VK::ModelInstance*)DATA_PTR(self);
- model_ptr = (std::shared_ptr<VK::Model>*) DATA_PTR(model_v);
-
- auto &instances =
- cg_core.vk_graphics_pipeline->models_to_draw[
- cg_core.vk_graphics_pipeline->current_frame][*model_ptr];
- instances.push_back(*ptr);
-
- return self;
-}
-
-void
-cg_model_instance_init(mrb_state *mrb)
-{
- struct RClass *cg_m, *cg_cModel, *cg_cInstance;
-
- id_at_model = mrb_intern_cstr(mrb, "@model");
-
- cg_m = mrb_module_get(mrb, "CandyGear");
- cg_cModel = mrb_class_get_under(mrb, cg_m, "Model");
- cg_cInstance = mrb_define_class_under(
- mrb, cg_cModel, "Instance", mrb->object_class);
- MRB_SET_INSTANCE_TT(cg_cInstance, MRB_TT_DATA);
- mrb_define_method(
- mrb, cg_cInstance, "initialize", cg_cModel_cInstance_initialize,
- MRB_ARGS_REQ(7));
- mrb_define_method(
- mrb, cg_cInstance, "draw", cg_cModel_cInstance_draw, MRB_ARGS_NONE());
-}
diff --git a/src/model/instance.hpp b/src/model/instance.hpp
deleted file mode 100644
index f84003c..0000000
--- a/src/model/instance.hpp
+++ /dev/null
@@ -1,25 +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.
- */
-
-#ifndef CANDY_GEAR_MODEL_INSTANCE_H
-#define CANDY_GEAR_MODEL_INSTANCE_H 1
-
-#include "../core.hpp"
-
-void
-cg_model_instance_init(mrb_state *mrb);
-
-#endif /* CANDY_GEAR_MODEL_INSTANCE_H */