reflexion 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|