reflexion 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/application.cpp +5 -1
- data/.doc/ext/reflex/arc_shape.cpp +89 -0
- data/.doc/ext/reflex/body.cpp +91 -12
- data/.doc/ext/reflex/contact_event.cpp +90 -0
- data/.doc/ext/reflex/ellipse_shape.cpp +89 -0
- data/.doc/ext/reflex/image_view.cpp +0 -16
- data/.doc/ext/reflex/native.cpp +18 -6
- data/.doc/ext/reflex/rect_shape.cpp +83 -0
- data/.doc/ext/reflex/shape_view.cpp +153 -0
- data/.doc/ext/reflex/view.cpp +63 -26
- data/.doc/ext/reflex/window.cpp +5 -1
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +6 -2
- data/ext/reflex/arc_shape.cpp +94 -0
- data/ext/reflex/body.cpp +101 -13
- data/ext/reflex/contact_event.cpp +95 -0
- data/ext/reflex/ellipse_shape.cpp +94 -0
- data/ext/reflex/image_view.cpp +0 -18
- data/ext/reflex/native.cpp +18 -6
- data/ext/reflex/rect_shape.cpp +86 -0
- data/ext/reflex/shape_view.cpp +161 -0
- data/ext/reflex/view.cpp +71 -30
- data/ext/reflex/window.cpp +5 -1
- data/include/reflex/body.h +42 -12
- data/include/reflex/event.h +27 -1
- data/include/reflex/fixture.h +6 -5
- data/include/reflex/image_view.h +5 -5
- data/include/reflex/ruby/application.h +27 -6
- data/include/reflex/ruby/event.h +11 -0
- data/include/reflex/ruby/shape_view.h +96 -0
- data/include/reflex/ruby/view.h +60 -5
- data/include/reflex/ruby/window.h +12 -3
- data/include/reflex/shape_view.h +146 -0
- data/include/reflex/view.h +17 -5
- data/lib/reflex/application.rb +9 -9
- data/lib/reflex/body.rb +2 -0
- data/lib/reflex/contact_event.rb +38 -0
- data/lib/reflex/image_view.rb +1 -1
- data/lib/reflex/shape_view.rb +25 -0
- data/lib/reflex/view.rb +19 -9
- data/lib/reflex/window.rb +11 -10
- data/lib/reflex.rb +15 -13
- data/lib/reflexion.rb +25 -18
- data/samples/osx/hello/hello/main.cpp +6 -0
- data/samples/physics.rb +22 -12
- data/samples/reflexion/breakout.rb +52 -0
- data/samples/reflexion/hello.rb +5 -7
- data/samples/reflexion/paint.rb +10 -11
- data/samples/reflexion/physics.rb +28 -0
- data/samples/reflexion/pulse.rb +10 -8
- data/samples/shapes.rb +2 -2
- data/src/body.cpp +241 -40
- data/src/event.cpp +32 -2
- data/src/shape_view.cpp +306 -0
- data/src/view.cpp +232 -66
- data/src/world.cpp +110 -30
- data/src/world.h +61 -14
- metadata +24 -7
- data/lib/reflex/arc_shape.rb +0 -20
- data/lib/reflex/ellipse_shape.rb +0 -20
- data/lib/reflex/line_shape.rb +0 -20
- data/lib/reflex/rect_shape.rb +0 -20
- data/lib/reflex/shape.rb +0 -34
@@ -0,0 +1,153 @@
|
|
1
|
+
#include "reflex/ruby/shape_view.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include <rays/ruby/color.h>
|
6
|
+
#include "reflex/ruby/view.h"
|
7
|
+
|
8
|
+
|
9
|
+
using namespace Rucy;
|
10
|
+
|
11
|
+
using Reflex::coord;
|
12
|
+
|
13
|
+
|
14
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::ShapeView)
|
15
|
+
|
16
|
+
#define THIS to<Reflex::ShapeView*>(self)
|
17
|
+
|
18
|
+
#define CHECK RUCY_CHECK_OBJECT(Reflex::ShapeView, self)
|
19
|
+
|
20
|
+
#define CALL(fun) RUCY_WRAPPER_CALL(Reflex::ShapeView, THIS, fun)
|
21
|
+
|
22
|
+
|
23
|
+
static
|
24
|
+
VALUE alloc(VALUE klass)
|
25
|
+
{
|
26
|
+
return value(new Reflex::RubyShapeView<Reflex::ShapeView>, klass);
|
27
|
+
}
|
28
|
+
|
29
|
+
static
|
30
|
+
VALUE set_fill(VALUE self)
|
31
|
+
{
|
32
|
+
CHECK;
|
33
|
+
check_arg_count(__FILE__, __LINE__, "ShapeView#set_fill", argc, 1, 2, 3, 4);
|
34
|
+
|
35
|
+
if (argc == 1 && argv[0].is_kind_of(Rays::color_class()))
|
36
|
+
THIS->set_fill(to<Rays::Color&>(argv[0]));
|
37
|
+
else if (argc == 1 || argc == 2)
|
38
|
+
{
|
39
|
+
float v = to<float>(argv[0]);
|
40
|
+
float a = (argc >= 2) ? to<float>(argv[1]) : 1;
|
41
|
+
THIS->set_fill(v, v, v, a);
|
42
|
+
}
|
43
|
+
else
|
44
|
+
{
|
45
|
+
float r = to<float>(argv[0]);
|
46
|
+
float g = to<float>(argv[1]);
|
47
|
+
float b = to<float>(argv[2]);
|
48
|
+
float a = (argc == 4) ? to<float>(argv[3]) : 1;
|
49
|
+
THIS->set_fill(r, g, b, a);
|
50
|
+
}
|
51
|
+
|
52
|
+
return self;
|
53
|
+
}
|
54
|
+
|
55
|
+
static
|
56
|
+
VALUE no_fill(VALUE self)
|
57
|
+
{
|
58
|
+
CHECK;
|
59
|
+
THIS->no_fill();
|
60
|
+
return self;
|
61
|
+
}
|
62
|
+
|
63
|
+
static
|
64
|
+
VALUE get_fill(VALUE self)
|
65
|
+
{
|
66
|
+
CHECK;
|
67
|
+
return value(THIS->fill());
|
68
|
+
}
|
69
|
+
|
70
|
+
static
|
71
|
+
VALUE set_stroke(VALUE self)
|
72
|
+
{
|
73
|
+
CHECK;
|
74
|
+
check_arg_count(__FILE__, __LINE__, "ShapeView#set_stroke", argc, 1, 2, 3, 4);
|
75
|
+
|
76
|
+
if (argc == 1 && argv[0].is_kind_of(Rays::color_class()))
|
77
|
+
THIS->set_stroke(to<Rays::Color&>(argv[0]));
|
78
|
+
else if (argc == 1 || argc == 2)
|
79
|
+
{
|
80
|
+
float v = to<float>(argv[0]);
|
81
|
+
float a = (argc >= 2) ? to<float>(argv[1]) : 1;
|
82
|
+
THIS->set_stroke(v, v, v, a);
|
83
|
+
}
|
84
|
+
else
|
85
|
+
{
|
86
|
+
float r = to<float>(argv[0]);
|
87
|
+
float g = to<float>(argv[1]);
|
88
|
+
float b = to<float>(argv[2]);
|
89
|
+
float a = (argc == 4) ? to<float>(argv[3]) : 1;
|
90
|
+
THIS->set_stroke(r, g, b, a);
|
91
|
+
}
|
92
|
+
|
93
|
+
return self;
|
94
|
+
}
|
95
|
+
|
96
|
+
static
|
97
|
+
VALUE no_stroke(VALUE self)
|
98
|
+
{
|
99
|
+
CHECK;
|
100
|
+
THIS->no_stroke();
|
101
|
+
return self;
|
102
|
+
}
|
103
|
+
|
104
|
+
static
|
105
|
+
VALUE get_stroke(VALUE self)
|
106
|
+
{
|
107
|
+
CHECK;
|
108
|
+
return value(THIS->stroke());
|
109
|
+
}
|
110
|
+
|
111
|
+
static
|
112
|
+
VALUE on_draw_shape(VALUE self, VALUE event)
|
113
|
+
{
|
114
|
+
CHECK;
|
115
|
+
CALL(on_draw_shape(to<Reflex::DrawEvent*>(event)));
|
116
|
+
}
|
117
|
+
|
118
|
+
static
|
119
|
+
RUCY_DEF_clear_override_flags(cof, Reflex::ShapeView);
|
120
|
+
|
121
|
+
|
122
|
+
static Class cShapeView;
|
123
|
+
|
124
|
+
void
|
125
|
+
Init_shape_view ()
|
126
|
+
{
|
127
|
+
Module mReflex = rb_define_module("Reflex");
|
128
|
+
|
129
|
+
cShapeView = mReflex.define_class("ShapeView", Reflex::view_class());
|
130
|
+
rb_define_alloc_func(cShapeView, alloc);
|
131
|
+
rb_define_private_method(cShapeView, "set_fill", RUBY_METHOD_FUNC(set_fill), -1);
|
132
|
+
rb_define_method(cShapeView, "no_fill", RUBY_METHOD_FUNC(no_fill), 0);
|
133
|
+
rb_define_method(cShapeView, "fill", RUBY_METHOD_FUNC(get_fill), 0);
|
134
|
+
rb_define_private_method(cShapeView, "set_stroke", RUBY_METHOD_FUNC(set_stroke), -1);
|
135
|
+
rb_define_method(cShapeView, "no_stroke", RUBY_METHOD_FUNC(no_stroke), 0);
|
136
|
+
rb_define_method(cShapeView, "stroke", RUBY_METHOD_FUNC(get_stroke), 0);
|
137
|
+
rb_define_method(cShapeView, "on_draw_shape", RUBY_METHOD_FUNC(on_draw_shape), 1);
|
138
|
+
|
139
|
+
}
|
140
|
+
|
141
|
+
|
142
|
+
namespace Reflex
|
143
|
+
{
|
144
|
+
|
145
|
+
|
146
|
+
Class
|
147
|
+
shape_view_class ()
|
148
|
+
{
|
149
|
+
return cShapeView;
|
150
|
+
}
|
151
|
+
|
152
|
+
|
153
|
+
}// Reflex
|
data/.doc/ext/reflex/view.cpp
CHANGED
@@ -205,7 +205,7 @@ static
|
|
205
205
|
VALUE content_size(VALUE self)
|
206
206
|
{
|
207
207
|
CHECK;
|
208
|
-
return value(
|
208
|
+
return value(CALL(content_size()));
|
209
209
|
}
|
210
210
|
|
211
211
|
static
|
@@ -290,6 +290,13 @@ VALUE get_frame(VALUE self)
|
|
290
290
|
return value(THIS->frame());
|
291
291
|
}
|
292
292
|
|
293
|
+
static
|
294
|
+
VALUE get_angle(VALUE self)
|
295
|
+
{
|
296
|
+
CHECK;
|
297
|
+
return value(THIS->angle());
|
298
|
+
}
|
299
|
+
|
293
300
|
static
|
294
301
|
VALUE set_capture(VALUE self, VALUE types)
|
295
302
|
{
|
@@ -372,27 +379,14 @@ VALUE body(VALUE self)
|
|
372
379
|
}
|
373
380
|
|
374
381
|
static
|
375
|
-
VALUE
|
382
|
+
VALUE meter2pixel(VALUE self)
|
376
383
|
{
|
377
384
|
CHECK;
|
378
|
-
|
379
|
-
return value;
|
380
|
-
}
|
385
|
+
check_arg_count(__FILE__, __LINE__, "View#meter2pixel", argc, 0, 1, 2);
|
381
386
|
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
CHECK;
|
386
|
-
THIS->set_friction(value.as_f(true));
|
387
|
-
return value;
|
388
|
-
}
|
389
|
-
|
390
|
-
static
|
391
|
-
VALUE set_restitution(VALUE self, VALUE value)
|
392
|
-
{
|
393
|
-
CHECK;
|
394
|
-
THIS->set_restitution(value.as_f(true));
|
395
|
-
return value;
|
387
|
+
float meter = argc >= 1 ? argv[0].as_f(true) : 1;
|
388
|
+
bool create_world = argc >= 2 ? (bool) argv[1] : true;
|
389
|
+
return value(THIS->meter2pixel(meter, create_world));
|
396
390
|
}
|
397
391
|
|
398
392
|
static
|
@@ -410,6 +404,13 @@ VALUE get_gravity(VALUE self)
|
|
410
404
|
return value(THIS->gravity());
|
411
405
|
}
|
412
406
|
|
407
|
+
static
|
408
|
+
VALUE wall(VALUE self)
|
409
|
+
{
|
410
|
+
CHECK;
|
411
|
+
return value(THIS->wall());
|
412
|
+
}
|
413
|
+
|
413
414
|
static
|
414
415
|
VALUE set_debug(VALUE self, VALUE state)
|
415
416
|
{
|
@@ -419,16 +420,20 @@ VALUE set_debug(VALUE self, VALUE state)
|
|
419
420
|
}
|
420
421
|
|
421
422
|
static
|
422
|
-
VALUE
|
423
|
+
VALUE debugging(VALUE self)
|
423
424
|
{
|
424
425
|
CHECK;
|
425
|
-
return value(THIS->
|
426
|
+
return value(THIS->debugging());
|
426
427
|
}
|
427
428
|
|
428
429
|
static
|
429
430
|
VALUE on_attach(VALUE self, VALUE event)
|
430
431
|
{
|
431
432
|
CHECK;
|
433
|
+
|
434
|
+
RUCY_SYM(call_attach_block);
|
435
|
+
self.call(call_attach_block);
|
436
|
+
|
432
437
|
CALL(on_attach(to<Reflex::Event*>(event)));
|
433
438
|
}
|
434
439
|
|
@@ -481,6 +486,13 @@ VALUE on_resize(VALUE self, VALUE event)
|
|
481
486
|
CALL(on_resize(to<Reflex::FrameEvent*>(event)));
|
482
487
|
}
|
483
488
|
|
489
|
+
static
|
490
|
+
VALUE on_rotate(VALUE self, VALUE event)
|
491
|
+
{
|
492
|
+
CHECK;
|
493
|
+
CALL(on_rotate(to<Reflex::FrameEvent*>(event)));
|
494
|
+
}
|
495
|
+
|
484
496
|
static
|
485
497
|
VALUE on_scroll(VALUE self, VALUE event)
|
486
498
|
{
|
@@ -565,6 +577,27 @@ VALUE on_capture(VALUE self, VALUE event)
|
|
565
577
|
CALL(on_capture(to<Reflex::CaptureEvent*>(event)));
|
566
578
|
}
|
567
579
|
|
580
|
+
static
|
581
|
+
VALUE on_contact(VALUE self, VALUE event)
|
582
|
+
{
|
583
|
+
CHECK;
|
584
|
+
CALL(on_contact(to<Reflex::ContactEvent*>(event)));
|
585
|
+
}
|
586
|
+
|
587
|
+
static
|
588
|
+
VALUE on_contact_begin(VALUE self, VALUE event)
|
589
|
+
{
|
590
|
+
CHECK;
|
591
|
+
CALL(on_contact_begin(to<Reflex::ContactEvent*>(event)));
|
592
|
+
}
|
593
|
+
|
594
|
+
static
|
595
|
+
VALUE on_contact_end(VALUE self, VALUE event)
|
596
|
+
{
|
597
|
+
CHECK;
|
598
|
+
CALL(on_contact_end(to<Reflex::ContactEvent*>(event)));
|
599
|
+
}
|
600
|
+
|
568
601
|
static
|
569
602
|
RUCY_DEF_clear_override_flags(cof, Reflex::View);
|
570
603
|
|
@@ -607,6 +640,7 @@ Init_view ()
|
|
607
640
|
rb_define_method(cView, "selector", RUBY_METHOD_FUNC(get_selector), 0);
|
608
641
|
rb_define_private_method(cView, "set_frame", RUBY_METHOD_FUNC(set_frame), 1);
|
609
642
|
rb_define_private_method(cView, "get_frame", RUBY_METHOD_FUNC(get_frame), 0);
|
643
|
+
rb_define_method(cView, "angle", RUBY_METHOD_FUNC(get_angle), 0);
|
610
644
|
rb_define_method(cView, "scroll_to", RUBY_METHOD_FUNC(scroll_to), -1);
|
611
645
|
rb_define_method(cView, "scroll_by", RUBY_METHOD_FUNC(scroll_by), -1);
|
612
646
|
rb_define_method(cView, "scroll", RUBY_METHOD_FUNC(get_scroll), 0);
|
@@ -615,14 +649,13 @@ Init_view ()
|
|
615
649
|
rb_define_method(cView, "parent", RUBY_METHOD_FUNC(parent), 0);
|
616
650
|
rb_define_method(cView, "window", RUBY_METHOD_FUNC(window), 0);
|
617
651
|
rb_define_method(cView, "body", RUBY_METHOD_FUNC(body), 0);
|
618
|
-
rb_define_method(cView, "
|
619
|
-
rb_define_method(cView, "friction=", RUBY_METHOD_FUNC(set_friction), 1);
|
620
|
-
rb_define_method(cView, "restitution=", RUBY_METHOD_FUNC(set_restitution), 1);
|
652
|
+
rb_define_method(cView, "meter2pixel", RUBY_METHOD_FUNC(meter2pixel), -1);
|
621
653
|
rb_define_method(cView, "set_gravity", RUBY_METHOD_FUNC(set_gravity), 2);
|
622
654
|
rb_define_method(cView, "gravity", RUBY_METHOD_FUNC(get_gravity), 0);
|
655
|
+
rb_define_method(cView, "wall", RUBY_METHOD_FUNC(wall), 0);
|
623
656
|
rb_define_method(cView, "debug=", RUBY_METHOD_FUNC(set_debug), 1);
|
624
|
-
cView.define_method("debug?",
|
625
|
-
cView
|
657
|
+
cView.define_method("debug?", debugging);
|
658
|
+
rb_define_method(cView, "on_attach", RUBY_METHOD_FUNC(on_attach), 1);
|
626
659
|
rb_define_method(cView, "on_detach", RUBY_METHOD_FUNC(on_detach), 1);
|
627
660
|
rb_define_method(cView, "on_show", RUBY_METHOD_FUNC(on_show), 1);
|
628
661
|
rb_define_method(cView, "on_hide", RUBY_METHOD_FUNC(on_hide), 1);
|
@@ -630,6 +663,7 @@ Init_view ()
|
|
630
663
|
rb_define_method(cView, "on_draw", RUBY_METHOD_FUNC(on_draw), 1);
|
631
664
|
rb_define_method(cView, "on_move", RUBY_METHOD_FUNC(on_move), 1);
|
632
665
|
rb_define_method(cView, "on_resize", RUBY_METHOD_FUNC(on_resize), 1);
|
666
|
+
rb_define_method(cView, "on_rotate", RUBY_METHOD_FUNC(on_rotate), 1);
|
633
667
|
rb_define_method(cView, "on_scroll", RUBY_METHOD_FUNC(on_scroll), 1);
|
634
668
|
rb_define_method(cView, "on_focus", RUBY_METHOD_FUNC(on_focus), 1);
|
635
669
|
rb_define_method(cView, "on_blur", RUBY_METHOD_FUNC(on_blur), 1);
|
@@ -642,6 +676,9 @@ Init_view ()
|
|
642
676
|
rb_define_method(cView, "on_pointer_move", RUBY_METHOD_FUNC(on_pointer_move), 1);
|
643
677
|
rb_define_method(cView, "on_wheel", RUBY_METHOD_FUNC(on_wheel), 1);
|
644
678
|
rb_define_method(cView, "on_capture", RUBY_METHOD_FUNC(on_capture), 1);
|
679
|
+
rb_define_method(cView, "on_contact", RUBY_METHOD_FUNC(on_contact), 1);
|
680
|
+
rb_define_method(cView, "on_contact_begin", RUBY_METHOD_FUNC(on_contact_begin), 1);
|
681
|
+
rb_define_method(cView, "on_contact_end", RUBY_METHOD_FUNC(on_contact_end), 1);
|
645
682
|
cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
|
646
683
|
cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);
|
647
684
|
cView.define_const("CAPTURE_POINTER", Reflex::View::CAPTURE_POINTER);
|
data/.doc/ext/reflex/window.cpp
CHANGED
@@ -120,6 +120,10 @@ static
|
|
120
120
|
VALUE on_show(VALUE self, VALUE event)
|
121
121
|
{
|
122
122
|
CHECK;
|
123
|
+
|
124
|
+
RUCY_SYM(call_show_block);
|
125
|
+
self.call(call_show_block);
|
126
|
+
|
123
127
|
CALL(on_show(to<Reflex::Event*>(event)));
|
124
128
|
}
|
125
129
|
|
@@ -246,7 +250,7 @@ Init_window ()
|
|
246
250
|
rb_define_method(cWindow, "root", RUBY_METHOD_FUNC(root), 0);
|
247
251
|
rb_define_method(cWindow, "focus", RUBY_METHOD_FUNC(focus), 0);
|
248
252
|
rb_define_method(cWindow, "painter", RUBY_METHOD_FUNC(painter), 0);
|
249
|
-
cWindow
|
253
|
+
rb_define_method(cWindow, "on_show", RUBY_METHOD_FUNC(on_show), 1);
|
250
254
|
rb_define_method(cWindow, "on_hide", RUBY_METHOD_FUNC(on_hide), 1);
|
251
255
|
rb_define_method(cWindow, "on_close", RUBY_METHOD_FUNC(on_close), 1);
|
252
256
|
rb_define_method(cWindow, "on_update", RUBY_METHOD_FUNC(on_update), 1);
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
data/ext/reflex/application.cpp
CHANGED
@@ -63,6 +63,10 @@ static
|
|
63
63
|
RUCY_DEF1(on_start, event)
|
64
64
|
{
|
65
65
|
CHECK;
|
66
|
+
|
67
|
+
RUCY_SYM(call_start_block);
|
68
|
+
self.call(call_start_block);
|
69
|
+
|
66
70
|
CALL(on_start(to<Reflex::Event*>(event)));
|
67
71
|
}
|
68
72
|
RUCY_END
|
@@ -112,8 +116,8 @@ Init_application ()
|
|
112
116
|
cApplication.define_method("quit", quit);
|
113
117
|
cApplication.define_method("name=", set_name);
|
114
118
|
cApplication.define_method("name", get_name);
|
115
|
-
cApplication.define_method("on_start
|
116
|
-
cApplication.define_method("on_quit",
|
119
|
+
cApplication.define_method("on_start", on_start);
|
120
|
+
cApplication.define_method("on_quit", on_quit);
|
117
121
|
cApplication.define_method("on_preference", on_preference);
|
118
122
|
cApplication.define_method("on_about", on_about);
|
119
123
|
cApplication.define_singleton_method("instance", instance);
|
@@ -0,0 +1,94 @@
|
|
1
|
+
#include "reflex/ruby/shape_view.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
|
6
|
+
|
7
|
+
using namespace Rucy;
|
8
|
+
|
9
|
+
using Reflex::coord;
|
10
|
+
|
11
|
+
|
12
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::ArcShape)
|
13
|
+
|
14
|
+
#define THIS to<Reflex::ArcShape*>(self)
|
15
|
+
|
16
|
+
#define CHECK RUCY_CHECK_OBJECT(Reflex::ArcShape, self)
|
17
|
+
|
18
|
+
#define CALL(fun) RUCY_WRAPPER_CALL(Reflex::ArcShape, THIS, fun)
|
19
|
+
|
20
|
+
|
21
|
+
static
|
22
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
23
|
+
{
|
24
|
+
return value(new Reflex::RubyShapeView<Reflex::ArcShape>, klass);
|
25
|
+
}
|
26
|
+
RUCY_END
|
27
|
+
|
28
|
+
static
|
29
|
+
RUCY_DEF1(set_angle_from, degree)
|
30
|
+
{
|
31
|
+
CHECK;
|
32
|
+
THIS->set_angle_from(degree.as_f(true));
|
33
|
+
return self;
|
34
|
+
}
|
35
|
+
RUCY_END
|
36
|
+
|
37
|
+
static
|
38
|
+
RUCY_DEF0(get_angle_from)
|
39
|
+
{
|
40
|
+
CHECK;
|
41
|
+
return value(THIS->angle_from());
|
42
|
+
}
|
43
|
+
RUCY_END
|
44
|
+
|
45
|
+
static
|
46
|
+
RUCY_DEF1(set_angle_to, degree)
|
47
|
+
{
|
48
|
+
CHECK;
|
49
|
+
THIS->set_angle_to(degree.as_f(true));
|
50
|
+
return self;
|
51
|
+
}
|
52
|
+
RUCY_END
|
53
|
+
|
54
|
+
static
|
55
|
+
RUCY_DEF0(get_angle_to)
|
56
|
+
{
|
57
|
+
CHECK;
|
58
|
+
return value(THIS->angle_to());
|
59
|
+
}
|
60
|
+
RUCY_END
|
61
|
+
|
62
|
+
static
|
63
|
+
RUCY_DEF_clear_override_flags(cof, Reflex::ArcShape);
|
64
|
+
|
65
|
+
|
66
|
+
static Class cArcShape;
|
67
|
+
|
68
|
+
void
|
69
|
+
Init_arc_shape ()
|
70
|
+
{
|
71
|
+
Module mReflex = define_module("Reflex");
|
72
|
+
|
73
|
+
cArcShape = mReflex.define_class("ArcShape", Reflex::ellipse_shape_class());
|
74
|
+
cArcShape.define_alloc_func(alloc);
|
75
|
+
cArcShape.define_method("angle_from=", set_angle_from);
|
76
|
+
cArcShape.define_method("angle_from", get_angle_from);
|
77
|
+
cArcShape.define_method("angle_to=", set_angle_to);
|
78
|
+
cArcShape.define_method("angle_to=", get_angle_to);
|
79
|
+
cArcShape.define_clear_override_flags(cof);
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
namespace Reflex
|
84
|
+
{
|
85
|
+
|
86
|
+
|
87
|
+
Class
|
88
|
+
arc_shape_class ()
|
89
|
+
{
|
90
|
+
return cArcShape;
|
91
|
+
}
|
92
|
+
|
93
|
+
|
94
|
+
}// Reflex
|
data/ext/reflex/body.cpp
CHANGED
@@ -35,35 +35,40 @@ RUCY_DEF2(add_box, width, height)
|
|
35
35
|
RUCY_END
|
36
36
|
|
37
37
|
static
|
38
|
-
|
38
|
+
RUCY_DEF2(add_ellipse, width, height)
|
39
39
|
{
|
40
40
|
CHECK;
|
41
|
-
return value(THIS->
|
41
|
+
return value(THIS->add_ellipse(width.as_f(true), height.as_f(true)));
|
42
42
|
}
|
43
43
|
RUCY_END
|
44
44
|
|
45
45
|
static
|
46
|
-
|
46
|
+
RUCY_DEF4(add_arc, width, height, angle_from, angle_to)
|
47
47
|
{
|
48
48
|
CHECK;
|
49
|
-
THIS->
|
50
|
-
|
49
|
+
return value(THIS->add_arc(
|
50
|
+
width.as_f(true), height.as_f(true),
|
51
|
+
angle_from.as_f(true), angle_to.as_f(true)));
|
51
52
|
}
|
52
53
|
RUCY_END
|
53
54
|
|
54
55
|
static
|
55
|
-
RUCY_DEF0(
|
56
|
+
RUCY_DEF0(clear_fixtures)
|
56
57
|
{
|
57
58
|
CHECK;
|
58
|
-
|
59
|
+
THIS->clear_fixtures();
|
60
|
+
return self;
|
59
61
|
}
|
60
62
|
RUCY_END
|
61
63
|
|
62
64
|
static
|
63
|
-
|
65
|
+
RUCY_DEFN(meter2pixel)
|
64
66
|
{
|
65
67
|
CHECK;
|
66
|
-
|
68
|
+
check_arg_count(__FILE__, __LINE__, "View#meter2pixel", argc, 0, 1);
|
69
|
+
|
70
|
+
float meter = argc >= 1 ? argv[0].as_f(true) : 1;
|
71
|
+
return value(THIS->meter2pixel(meter));
|
67
72
|
}
|
68
73
|
RUCY_END
|
69
74
|
|
@@ -101,6 +106,56 @@ RUCY_DEF0(is_dynamic)
|
|
101
106
|
}
|
102
107
|
RUCY_END
|
103
108
|
|
109
|
+
static
|
110
|
+
RUCY_DEF0(get_position)
|
111
|
+
{
|
112
|
+
CHECK;
|
113
|
+
return value(THIS->position());
|
114
|
+
}
|
115
|
+
RUCY_END
|
116
|
+
|
117
|
+
static
|
118
|
+
RUCY_DEF0(get_angle)
|
119
|
+
{
|
120
|
+
CHECK;
|
121
|
+
return value(THIS->angle());
|
122
|
+
}
|
123
|
+
RUCY_END
|
124
|
+
|
125
|
+
static
|
126
|
+
RUCY_DEF1(set_linear_velocity, velocity)
|
127
|
+
{
|
128
|
+
CHECK;
|
129
|
+
THIS->set_linear_velocity(to<Rays::Point&>(velocity));
|
130
|
+
return self;
|
131
|
+
}
|
132
|
+
RUCY_END
|
133
|
+
|
134
|
+
static
|
135
|
+
RUCY_DEF0(get_linear_velocity)
|
136
|
+
{
|
137
|
+
CHECK;
|
138
|
+
return value(THIS->linear_velocity());
|
139
|
+
}
|
140
|
+
RUCY_END
|
141
|
+
|
142
|
+
static
|
143
|
+
RUCY_DEF1(set_angular_velocity, velocity)
|
144
|
+
{
|
145
|
+
CHECK;
|
146
|
+
THIS->set_angular_velocity(velocity.as_f(true));
|
147
|
+
return self;
|
148
|
+
}
|
149
|
+
RUCY_END
|
150
|
+
|
151
|
+
static
|
152
|
+
RUCY_DEF0(get_angular_velocity)
|
153
|
+
{
|
154
|
+
CHECK;
|
155
|
+
return value(THIS->angular_velocity());
|
156
|
+
}
|
157
|
+
RUCY_END
|
158
|
+
|
104
159
|
static
|
105
160
|
RUCY_DEF1(set_density, density)
|
106
161
|
{
|
@@ -110,6 +165,14 @@ RUCY_DEF1(set_density, density)
|
|
110
165
|
}
|
111
166
|
RUCY_END
|
112
167
|
|
168
|
+
static
|
169
|
+
RUCY_DEF0(get_density)
|
170
|
+
{
|
171
|
+
CHECK;
|
172
|
+
return value(THIS->density());
|
173
|
+
}
|
174
|
+
RUCY_END
|
175
|
+
|
113
176
|
static
|
114
177
|
RUCY_DEF1(set_friction, friction)
|
115
178
|
{
|
@@ -119,6 +182,14 @@ RUCY_DEF1(set_friction, friction)
|
|
119
182
|
}
|
120
183
|
RUCY_END
|
121
184
|
|
185
|
+
static
|
186
|
+
RUCY_DEF0(get_friction)
|
187
|
+
{
|
188
|
+
CHECK;
|
189
|
+
return value(THIS->friction());
|
190
|
+
}
|
191
|
+
RUCY_END
|
192
|
+
|
122
193
|
static
|
123
194
|
RUCY_DEF1(set_restitution, restitution)
|
124
195
|
{
|
@@ -128,6 +199,14 @@ RUCY_DEF1(set_restitution, restitution)
|
|
128
199
|
}
|
129
200
|
RUCY_END
|
130
201
|
|
202
|
+
static
|
203
|
+
RUCY_DEF0(get_restitution)
|
204
|
+
{
|
205
|
+
CHECK;
|
206
|
+
return value(THIS->restitution());
|
207
|
+
}
|
208
|
+
RUCY_END
|
209
|
+
|
131
210
|
static
|
132
211
|
RUCY_DEF0(each)
|
133
212
|
{
|
@@ -151,18 +230,27 @@ Init_body ()
|
|
151
230
|
|
152
231
|
cBody = mReflex.define_class("Body");
|
153
232
|
cBody.define_private_method("initialize_copy", initialize_copy);
|
154
|
-
cBody.define_method("add_box",
|
155
|
-
cBody.define_method("
|
233
|
+
cBody.define_method("add_box", add_box);
|
234
|
+
cBody.define_method("add_ellipse", add_ellipse);
|
235
|
+
cBody.define_method("add_arc", add_arc);
|
156
236
|
cBody.define_method("clear_fixtures", clear_fixtures);
|
157
|
-
cBody.define_method("
|
158
|
-
cBody.define_method("angle", get_angle);
|
237
|
+
cBody.define_method("meter2pixel", meter2pixel);
|
159
238
|
cBody.define_method("static=", set_static);
|
160
239
|
cBody.define_method("static?", is_static);
|
161
240
|
cBody.define_method("dynamic=", set_dynamic);
|
162
241
|
cBody.define_method("dynamic?", is_dynamic);
|
242
|
+
cBody.define_method("position", get_position);
|
243
|
+
cBody.define_method("angle", get_angle);
|
244
|
+
cBody.define_method("linear_velocity=", set_linear_velocity);
|
245
|
+
cBody.define_method("linear_velocity", get_linear_velocity);
|
246
|
+
cBody.define_method("angular_velocity=", set_angular_velocity);
|
247
|
+
cBody.define_method("angular_velocity", get_angular_velocity);
|
163
248
|
cBody.define_method("density=", set_density);
|
249
|
+
cBody.define_method("density", get_density);
|
164
250
|
cBody.define_method("friction=", set_friction);
|
251
|
+
cBody.define_method("friction", get_friction);
|
165
252
|
cBody.define_method("restitution=", set_restitution);
|
253
|
+
cBody.define_method("restitution", get_restitution);
|
166
254
|
cBody.define_method("each", each);
|
167
255
|
}
|
168
256
|
|