From bde8c8bd073abeb314748d66d6402f951ecb2902 Mon Sep 17 00:00:00 2001 From: Frederico Linhares Date: Wed, 9 Nov 2022 16:11:15 -0300 Subject: feat create method Rectangle#draw --- src/view_2d.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src/view_2d.cpp') diff --git a/src/view_2d.cpp b/src/view_2d.cpp index c84cbee..3f4325d 100644 --- a/src/view_2d.cpp +++ b/src/view_2d.cpp @@ -18,6 +18,7 @@ #include "sprite.hpp" #include "vector_4d.hpp" +#include "view_3d.hpp" #include "vk/sprite.hpp" #include "vk/view_2d.hpp" @@ -51,20 +52,26 @@ cg_cView2D_initialize(mrb_state *mrb, mrb_value self) return self; } -static mrb_value -cg_cView2D_draw(mrb_state *mrb, mrb_value self) +VK::View2D* +cg_cView_to_view_2d(mrb_state *mrb, mrb_value view_value) { - std::shared_ptr *sprite; - std::shared_ptr *position; - auto *ptr = (std::shared_ptr*)DATA_PTR(self); + VK::View2D* view_2d; + const mrb_data_type *type = DATA_TYPE(view_value); - mrb_get_args(mrb, "dd", &sprite, &cg_sprite_type, - &position, &cg_vector_4d_type); - auto &positions = (*ptr)->sprites_to_draw[ - cg_core.vk_swapchain->current_frame][*sprite]; - positions.push_back(*position->get()); + if(type == &cg_view_2d_type) + view_2d = static_cast*>( + DATA_PTR(view_value))->get(); + else if (type == &cg_view_3d_type) + view_2d = static_cast( + static_cast*>( + DATA_PTR(view_value))->get()); + else + mrb_raisef( + mrb, E_TYPE_ERROR, "wrong argument type %s (expected %s or %s)", + type->struct_name, cg_view_2d_type.struct_name, + cg_view_3d_type.struct_name); - return self; + return view_2d; } void @@ -77,5 +84,4 @@ cg_view_2d_init(mrb_state *mrb) MRB_SET_INSTANCE_TT(cg_cView2D, MRB_TT_DATA); mrb_define_method( mrb, cg_cView2D, "initialize", cg_cView2D_initialize, MRB_ARGS_REQ(1)); - mrb_define_method(mrb, cg_cView2D, "draw", cg_cView2D_draw, MRB_ARGS_REQ(2)); } -- cgit v1.2.3