diff options
Diffstat (limited to 'src/sprite.cpp')
-rw-r--r-- | src/sprite.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
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<glm::vec4> *position; + auto ptr = (std::shared_ptr<VK::Sprite>*)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)); } |