Skip to content

Commit fb618d6

Browse files
IceDragon200Blaž Hrastnik
authored andcommitted
modules/audio-libsoundio: Stubbed Sound mruby wrapper
1 parent db6f300 commit fb618d6

1 file changed

Lines changed: 40 additions & 1 deletion

File tree

modules/audio-libsoundio/src/mrb_sound.cxx

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,47 @@
66
#include "moon/audio/libsoundio/sound.hxx"
77
#include "moon/api.h"
88
#include "moon/intern.h"
9+
#include "moon/mrb/helpers.hxx"
10+
11+
static void
12+
sound_free(mrb_state* mrb, void *p)
13+
{
14+
Moon::Sound *sound = static_cast<Moon::Sound*>(p);
15+
if (sound) {
16+
delete(sound);
17+
}
18+
}
19+
20+
MOON_C_API const struct mrb_data_type sound_data_type = { "Moon::Sound", sound_free };
21+
22+
static mrb_value
23+
sound_initialize(mrb_state* mrb, mrb_value self)
24+
{
25+
char* filename;
26+
mrb_get_args(mrb, "z", &filename);
27+
moon_data_cleanup(mrb, self);
28+
Moon::Sound* sound = new Moon::Sound(std::string(filename));
29+
mrb_data_init(self, sound, &sound_data_type);
30+
return self;
31+
}
32+
33+
static mrb_value
34+
sound_play(mrb_state* mrb, mrb_value self)
35+
{
36+
mrb_float gain = 1.0;
37+
mrb_float pitch = 1.0;
38+
mrb_float pan = 0.0;
39+
mrb_get_args(mrb, "|fff", &gain, &pitch, &pan);
40+
// TODO
41+
return self;
42+
}
943

1044
MOON_C_API void
11-
mmrb_sound_init(mrb_state *mrb, struct RClass *mod)
45+
mmrb_sound_init(mrb_state* mrb, struct RClass *mod)
1246
{
47+
struct RClass *sound_class = mrb_define_class_under(mrb, mod, "Sound", mrb->object_class);
48+
MRB_SET_INSTANCE_TT(sound_class, MRB_TT_DATA);
49+
50+
mrb_define_method(mrb, sound_class, "initialize", sound_initialize, MRB_ARGS_REQ(1));
51+
mrb_define_method(mrb, sound_class, "play", sound_play, MRB_ARGS_OPT(3));
1352
}

0 commit comments

Comments
 (0)