summaryrefslogtreecommitdiff
path: root/src/sprite.cpp
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2022-11-09 16:11:15 -0300
committerFrederico Linhares <fred@linhares.blue>2022-11-09 17:19:06 -0300
commitbde8c8bd073abeb314748d66d6402f951ecb2902 (patch)
tree69c91317baf62a0ad9e36d8e35969fd82a02e91d /src/sprite.cpp
parent7e9107cb1c5012fef900dfa03408e2179f1f9915 (diff)
feat create method Rectangle#draw
Diffstat (limited to 'src/sprite.cpp')
-rw-r--r--src/sprite.cpp21
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));
}