summaryrefslogtreecommitdiff
path: root/src/candy_gear/candy_gear.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/candy_gear/candy_gear.cpp')
-rw-r--r--src/candy_gear/candy_gear.cpp41
1 files changed, 14 insertions, 27 deletions
diff --git a/src/candy_gear/candy_gear.cpp b/src/candy_gear/candy_gear.cpp
index b1758a4..7b5a9d9 100644
--- a/src/candy_gear/candy_gear.cpp
+++ b/src/candy_gear/candy_gear.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2024 Frederico de Oliveira Linhares
+ * Copyright 2022-2025 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.
@@ -21,8 +21,7 @@
#include <mruby/string.h>
#include "core.hpp"
-#include "view_2d.hpp"
-#include "view_3d.hpp"
+#include "view.hpp"
static mrb_value
cg_mCandyGear_set_game_name(mrb_state *mrb, mrb_value self)
@@ -36,40 +35,28 @@ cg_mCandyGear_set_game_name(mrb_state *mrb, mrb_value self)
}
static mrb_value
-cg_mCandyGear_set_views(mrb_state *mrb, mrb_value self)
+cg_mCandyGear_change_views(mrb_state *mrb, mrb_value self)
{
- struct RClass *cg_m, *cg_cView2D, *cg_cView3D;
+ struct RClass *cg_m, *cg_cView;
mrb_value *array;
mrb_int array_len;
+ mrb_float width, height;
- std::vector<std::shared_ptr<BluCat::GRA::View2D>> views_2d;
- std::vector<std::shared_ptr<BluCat::GRA::View3D>> views_3d;
+ std::vector<std::shared_ptr<BluCat::GRA::View>> views;
cg_m = mrb_module_get(mrb, "CandyGear");
- cg_cView2D = mrb_class_get_under(mrb, cg_m, "View2D");
- cg_cView3D = mrb_class_get_under(mrb, cg_m, "View3D");
+ cg_cView = mrb_class_get_under(mrb, cg_m, "View");
- mrb_get_args(mrb, "a", &array, &array_len);
+ mrb_get_args(mrb, "aff", &array, &array_len, &width, &height);
for(mrb_int i{0}; i < array_len; i++)
{
- if(mrb_obj_is_kind_of(mrb, array[i], cg_cView2D))
- {
- auto v = (std::shared_ptr<BluCat::GRA::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<BluCat::GRA::View3D>*)DATA_PTR(array[i]);
- views_3d.push_back(*v);
- }
+ auto v = (std::shared_ptr<BluCat::GRA::View>*)DATA_PTR(array[i]);
+ views.push_back(*v);
}
- // A Renderer need at least one view to work.
- if(views_2d.size() > 0 || views_3d.size() > 0)
- {
- delete BluCat::INT::core.vk_renderer;
- BluCat::INT::core.vk_renderer = new BluCat::GRA::Renderer({views_2d, views_3d});
- }
+ delete BluCat::INT::core.vk_renderer;
+ BluCat::INT::core.vk_renderer = new BluCat::GRA::Renderer(
+ {views, static_cast<F32>(width), static_cast<F32>(height)});
return self;
}
@@ -138,7 +125,7 @@ cg_candy_gear_init(mrb_state *mrb)
cg_m = mrb_module_get(mrb, "CandyGear");
mrb_define_class_method(
- mrb, cg_m, "views=", cg_mCandyGear_set_views, MRB_ARGS_REQ(1));
+ mrb, cg_m, "change_views", cg_mCandyGear_change_views, MRB_ARGS_REQ(3));
mrb_define_class_method(
mrb, cg_m, "log", cg_mCandyGear_log, MRB_ARGS_REQ(2));
mrb_define_class_method(