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/sprite.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/sprite.cpp') diff --git a/src/sprite.cpp b/src/sprite.cpp index 5f815f6..fa5e22f 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -18,6 +18,7 @@ #include "texture.hpp" #include "vector_4d.hpp" +#include "view_2d.hpp" #include "vk/sprite.hpp" void @@ -52,6 +53,25 @@ cg_cSprite_initialize(mrb_state *mrb, mrb_value self) return self; } +static mrb_value +cg_cSprite_draw(mrb_state *mrb, mrb_value self) +{ + mrb_value view_value; + VK::View2D *view_2d; + std::shared_ptr *position; + auto ptr = (std::shared_ptr*)DATA_PTR(self); + + mrb_get_args(mrb, "od", &view_value, &position, &cg_vector_4d_type); + + view_2d = cg_cView_to_view_2d(mrb, view_value); + + auto &positions = view_2d->sprites_to_draw[ + cg_core.vk_swapchain->current_frame][*ptr]; + positions.push_back(*position->get()); + + return self; +} + void cg_sprite_init(mrb_state *mrb) { @@ -62,4 +82,5 @@ cg_sprite_init(mrb_state *mrb) MRB_SET_INSTANCE_TT(cg_cSprite, MRB_TT_DATA); mrb_define_method( mrb, cg_cSprite, "initialize", cg_cSprite_initialize, MRB_ARGS_REQ(2)); + mrb_define_method(mrb, cg_cSprite, "draw", cg_cSprite_draw, MRB_ARGS_REQ(2)); } -- cgit v1.2.3