summaryrefslogtreecommitdiff
path: root/src/candy_gear.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/candy_gear.cpp')
-rw-r--r--src/candy_gear.cpp28
1 files changed, 17 insertions, 11 deletions
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 <yaml-cpp/yaml.h>
-#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<std::shared_ptr<VK::View>> views;
+ std::vector<std::shared_ptr<VK::View2D>> views_2d;
+ std::vector<std::shared_ptr<VK::View3D>> 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<VK::View>*)DATA_PTR(array[i]);
- views.push_back(*v);
+ auto v = (std::shared_ptr<VK::View2D>*)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<VK::View3D>*)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;