From 78db82c0dac8db90a3de1004e5428f225947b2b9 Mon Sep 17 00:00:00 2001 From: Frederico Linhares Date: Wed, 21 Sep 2022 13:57:31 -0300 Subject: feat Create View2D --- src/candy_gear.cpp | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src/candy_gear.cpp') diff --git a/src/candy_gear.cpp b/src/candy_gear.cpp index 8ba87cc..7ed1d13 100644 --- a/src/candy_gear.cpp +++ b/src/candy_gear.cpp @@ -22,9 +22,8 @@ #include -#include "rotation_3d.hpp" -#include "vector_3d.hpp" -#include "view.hpp" +#include "view_2d.hpp" +#include "view_3d.hpp" static mrb_value parse_node(mrb_state *mrb, const YAML::Node &node) @@ -75,30 +74,37 @@ cg_mCandyGear_load_yaml(mrb_state *mrb, mrb_value self) static mrb_value cg_mCandyGear_set_views(mrb_state *mrb, mrb_value self) { - struct RClass *cg_m, *cg_cView; + struct RClass *cg_m, *cg_cView2D, *cg_cView3D; mrb_value *array; mrb_int array_len; - std::vector> views; + std::vector> views_2d; + std::vector> views_3d; cg_m = mrb_module_get(mrb, "CandyGear"); - cg_cView = mrb_class_get_under(mrb, cg_m, "View"); + cg_cView2D = mrb_class_get_under(mrb, cg_m, "View2D"); + cg_cView3D = mrb_class_get_under(mrb, cg_m, "View3D"); mrb_get_args(mrb, "a", &array, &array_len); for(mrb_int i{0}; i < array_len; i++) { - if(mrb_obj_is_kind_of(mrb, array[i], cg_cView)) + if(mrb_obj_is_kind_of(mrb, array[i], cg_cView2D)) { - auto v = (std::shared_ptr*)DATA_PTR(array[i]); - views.push_back(*v); + auto v = (std::shared_ptr*)DATA_PTR(array[i]); + views_2d.push_back(*v); + } + else if(mrb_obj_is_kind_of(mrb, array[i], cg_cView3D)) + { + auto v = (std::shared_ptr*)DATA_PTR(array[i]); + views_3d.push_back(*v); } } // A Renderer need at least one view to work. - if(views.size() > 0) + if(views_2d.size() > 0 || views_3d.size() > 0) { delete cg_core.vk_renderer; - cg_core.vk_renderer = new VK::Renderer({views}); + cg_core.vk_renderer = new VK::Renderer({views_2d, views_3d}); } return self; -- cgit v1.2.3