reflexion 0.1.12 → 0.1.13
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 +5 -5
- data/.doc/ext/reflex/application.cpp +9 -5
- data/.doc/ext/reflex/capture_event.cpp +0 -4
- data/.doc/ext/reflex/contact_event.cpp +17 -10
- data/.doc/ext/reflex/draw_event.cpp +1 -5
- data/.doc/ext/reflex/ellipse_shape.cpp +51 -24
- data/.doc/ext/reflex/event.cpp +0 -4
- data/.doc/ext/reflex/filter.cpp +81 -0
- data/.doc/ext/reflex/focus_event.cpp +9 -13
- data/.doc/ext/reflex/frame_event.cpp +40 -6
- data/.doc/ext/reflex/image_view.cpp +1 -10
- data/.doc/ext/reflex/key_event.cpp +2 -6
- data/.doc/ext/reflex/line_shape.cpp +99 -0
- data/.doc/ext/reflex/motion_event.cpp +75 -0
- data/.doc/ext/reflex/native.cpp +18 -18
- data/.doc/ext/reflex/pointer_event.cpp +5 -11
- data/.doc/ext/reflex/polygon_shape.cpp +65 -0
- data/.doc/ext/reflex/rect_shape.cpp +102 -23
- data/.doc/ext/reflex/reflex.cpp +21 -2
- data/.doc/ext/reflex/scroll_event.cpp +0 -6
- data/.doc/ext/reflex/selector.cpp +43 -15
- data/.doc/ext/reflex/shape.cpp +211 -0
- data/.doc/ext/reflex/style.cpp +359 -185
- data/.doc/ext/reflex/style_length.cpp +163 -35
- data/.doc/ext/reflex/timer.cpp +101 -0
- data/.doc/ext/reflex/timer_event.cpp +123 -0
- data/.doc/ext/reflex/update_event.cpp +11 -6
- data/.doc/ext/reflex/view.cpp +548 -144
- data/.doc/ext/reflex/wheel_event.cpp +0 -22
- data/.doc/ext/reflex/window.cpp +7 -15
- data/README.md +1 -1
- data/Rakefile +14 -12
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +10 -5
- data/ext/reflex/capture_event.cpp +1 -5
- data/ext/reflex/contact_event.cpp +19 -11
- data/ext/reflex/defs.h +5 -2
- data/ext/reflex/draw_event.cpp +2 -6
- data/ext/reflex/ellipse_shape.cpp +56 -25
- data/ext/reflex/event.cpp +0 -4
- data/ext/reflex/extconf.rb +1 -2
- data/ext/reflex/filter.cpp +86 -0
- data/ext/reflex/focus_event.cpp +11 -15
- data/ext/reflex/frame_event.cpp +46 -7
- data/ext/reflex/image_view.cpp +1 -10
- data/ext/reflex/key_event.cpp +3 -7
- data/ext/reflex/line_shape.cpp +104 -0
- data/ext/reflex/motion_event.cpp +79 -0
- data/ext/reflex/native.cpp +18 -18
- data/ext/reflex/pointer_event.cpp +6 -12
- data/ext/reflex/polygon_shape.cpp +68 -0
- data/ext/reflex/rect_shape.cpp +113 -24
- data/ext/reflex/reflex.cpp +21 -2
- data/ext/reflex/scroll_event.cpp +1 -7
- data/ext/reflex/selector.cpp +46 -16
- data/ext/reflex/selector.h +130 -0
- data/ext/reflex/shape.cpp +231 -0
- data/ext/reflex/style.cpp +363 -192
- data/ext/reflex/style_length.cpp +164 -37
- data/ext/reflex/timer.cpp +108 -0
- data/ext/reflex/timer_event.cpp +133 -0
- data/ext/reflex/update_event.cpp +13 -7
- data/ext/reflex/view.cpp +594 -150
- data/ext/reflex/wheel_event.cpp +1 -25
- data/ext/reflex/window.cpp +7 -15
- data/include/reflex/application.h +2 -0
- data/include/reflex/debug.h +22 -0
- data/include/reflex/defs.h +45 -0
- data/include/reflex/event.h +60 -16
- data/include/reflex/exception.h +9 -0
- data/include/reflex/filter.h +56 -0
- data/include/reflex/image_view.h +1 -1
- data/include/reflex/ruby/application.h +17 -9
- data/include/reflex/ruby/event.h +22 -0
- data/include/reflex/ruby/filter.h +69 -0
- data/include/reflex/ruby/selector.h +1 -1
- data/include/reflex/ruby/shape.h +140 -0
- data/include/reflex/ruby/style.h +1 -1
- data/include/reflex/ruby/timer.h +69 -0
- data/include/reflex/ruby/view.h +43 -76
- data/include/reflex/ruby/window.h +17 -32
- data/include/reflex/ruby.h +6 -4
- data/include/reflex/selector.h +54 -2
- data/include/reflex/shape.h +211 -0
- data/include/reflex/style.h +111 -77
- data/include/reflex/timer.h +73 -0
- data/include/reflex/view.h +181 -59
- data/include/reflex/window.h +4 -3
- data/include/reflex.h +5 -4
- data/lib/reflex/application.rb +6 -3
- data/lib/reflex/button.rb +2 -2
- data/lib/reflex/capture_event.rb +7 -6
- data/lib/reflex/contact_event.rb +10 -12
- data/lib/reflex/draw_event.rb +6 -1
- data/lib/reflex/ellipse_shape.rb +27 -0
- data/lib/reflex/filter.rb +18 -0
- data/lib/reflex/fixture.rb +4 -0
- data/lib/reflex/focus_event.rb +10 -12
- data/lib/reflex/frame_event.rb +1 -1
- data/lib/reflex/helper.rb +17 -29
- data/lib/reflex/key_event.rb +13 -11
- data/lib/reflex/line_shape.rb +18 -0
- data/lib/reflex/{texture.rb → matrix.rb} +2 -2
- data/lib/reflex/module.rb +4 -19
- data/lib/reflex/pointer_event.rb +26 -37
- data/lib/reflex/polygon.rb +14 -0
- data/lib/reflex/polygon_shape.rb +23 -0
- data/lib/reflex/polyline.rb +13 -0
- data/lib/reflex/rect_shape.rb +20 -0
- data/lib/reflex/reflex.rb +1 -3
- data/lib/reflex/scroll_event.rb +1 -1
- data/lib/reflex/selector.rb +2 -2
- data/lib/reflex/shape.rb +62 -0
- data/lib/reflex/style.rb +78 -11
- data/lib/reflex/style_length.rb +0 -11
- data/lib/reflex/text_view.rb +7 -24
- data/lib/reflex/timer.rb +30 -0
- data/lib/reflex/timer_event.rb +29 -0
- data/lib/reflex/update_event.rb +1 -1
- data/lib/reflex/view.rb +127 -32
- data/lib/reflex/wheel_event.rb +9 -1
- data/lib/reflex/window.rb +29 -9
- data/lib/reflex.rb +11 -5
- data/lib/reflexion.rb +23 -7
- data/reflex.gemspec +8 -10
- data/samples/bats.rb +4 -4
- data/samples/fans.rb +1 -1
- data/samples/fps.rb +5 -3
- data/samples/hello.rb +4 -6
- data/samples/image.rb +5 -4
- data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
- data/samples/layout.rb +16 -7
- data/samples/model.rb +10 -7
- data/samples/physics.rb +22 -20
- data/samples/reflexion/breakout.rb +4 -5
- data/samples/reflexion/hello.rb +2 -2
- data/samples/reflexion/jump_action.rb +191 -0
- data/samples/reflexion/noise.rb +23 -0
- data/samples/reflexion/paint.rb +7 -6
- data/samples/reflexion/physics.rb +15 -8
- data/samples/reflexion/pulse.rb +24 -10
- data/samples/shader.rb +8 -6
- data/samples/shapes.rb +63 -14
- data/samples/tree.rb +9 -10
- data/samples/views.rb +3 -3
- data/samples/visuals.rb +2 -5
- data/src/body.cpp +146 -345
- data/src/body.h +91 -0
- data/src/event.cpp +66 -16
- data/src/exception.cpp +13 -3
- data/src/filter.cpp +76 -0
- data/src/fixture.cpp +164 -39
- data/src/fixture.h +85 -0
- data/src/image_view.cpp +4 -4
- data/src/ios/app_delegate.h +5 -10
- data/src/ios/app_delegate.mm +79 -41
- data/src/ios/application.h +32 -0
- data/src/ios/application.mm +35 -25
- data/src/ios/event.mm +8 -4
- data/src/ios/reflex.mm +0 -7
- data/src/ios/view_controller.h +33 -0
- data/src/ios/view_controller.mm +436 -0
- data/src/ios/window.h +40 -0
- data/src/ios/window.mm +59 -250
- data/src/osx/app_delegate.h +5 -10
- data/src/osx/app_delegate.mm +52 -55
- data/src/osx/application.h +32 -0
- data/src/osx/application.mm +44 -39
- data/src/osx/native_window.h +0 -15
- data/src/osx/native_window.mm +131 -115
- data/src/osx/opengl_view.h +0 -2
- data/src/osx/opengl_view.mm +12 -3
- data/src/osx/reflex.mm +0 -9
- data/src/osx/window.h +42 -0
- data/src/osx/window.mm +45 -252
- data/src/selector.cpp +232 -7
- data/src/selector.h +52 -0
- data/src/shape.cpp +1191 -0
- data/src/shape.h +61 -0
- data/src/style.cpp +571 -374
- data/src/style.h +39 -0
- data/src/timer.cpp +291 -0
- data/src/timer.h +55 -0
- data/src/view.cpp +1624 -984
- data/src/view.h +56 -0
- data/src/win32/window.cpp +3 -4
- data/src/window.cpp +275 -20
- data/src/window.h +92 -0
- data/src/world.cpp +112 -111
- data/src/world.h +34 -53
- data/task/box2d.rake +31 -10
- data/test/test_capture_event.rb +8 -6
- data/test/test_pointer_event.rb +85 -0
- data/test/test_selector.rb +1 -1
- data/test/test_shape.rb +71 -0
- data/test/test_style.rb +77 -11
- data/test/test_style_length.rb +42 -13
- data/test/test_view.rb +138 -14
- metadata +109 -210
- data/.doc/ext/reflex/arc_shape.cpp +0 -89
- data/.doc/ext/reflex/body.cpp +0 -299
- data/.doc/ext/reflex/fixture.cpp +0 -101
- data/.doc/ext/reflex/shape_view.cpp +0 -153
- data/ext/reflex/arc_shape.cpp +0 -94
- data/ext/reflex/body.cpp +0 -328
- data/ext/reflex/fixture.cpp +0 -108
- data/ext/reflex/shape_view.cpp +0 -161
- data/include/reflex/bitmap.h +0 -20
- data/include/reflex/body.h +0 -128
- data/include/reflex/bounds.h +0 -20
- data/include/reflex/color.h +0 -20
- data/include/reflex/color_space.h +0 -20
- data/include/reflex/fixture.h +0 -117
- data/include/reflex/font.h +0 -20
- data/include/reflex/image.h +0 -20
- data/include/reflex/matrix.h +0 -20
- data/include/reflex/painter.h +0 -20
- data/include/reflex/point.h +0 -24
- data/include/reflex/ruby/body.h +0 -41
- data/include/reflex/ruby/fixture.h +0 -41
- data/include/reflex/ruby/shape_view.h +0 -96
- data/include/reflex/shader.h +0 -20
- data/include/reflex/shape_view.h +0 -146
- data/include/reflex/texture.h +0 -20
- data/lib/reflex/body.rb +0 -22
- data/lib/reflex/flags.rb +0 -18
- data/lib/reflex/shape_view.rb +0 -25
- data/src/ios/application_data.h +0 -45
- data/src/ios/native_window.h +0 -39
- data/src/ios/native_window.mm +0 -224
- data/src/ios/opengl_view.h +0 -13
- data/src/ios/opengl_view.mm +0 -139
- data/src/ios/window_data.h +0 -75
- data/src/osx/application_data.h +0 -45
- data/src/osx/window_data.h +0 -75
- data/src/physics/Box2D/Box2D.h +0 -68
- data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
- data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
- data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
- data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
- data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
- data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
- data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
- data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
- data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
- data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
- data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
- data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
- data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
- data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
- data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
- data/src/physics/Box2D/Collision/b2Collision.h +0 -277
- data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
- data/src/physics/Box2D/Collision/b2Distance.h +0 -141
- data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
- data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
- data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
- data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
- data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
- data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
- data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
- data/src/physics/Box2D/Common/b2Draw.h +0 -86
- data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
- data/src/physics/Box2D/Common/b2Math.cpp +0 -94
- data/src/physics/Box2D/Common/b2Math.h +0 -720
- data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
- data/src/physics/Box2D/Common/b2Settings.h +0 -151
- data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
- data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
- data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
- data/src/physics/Box2D/Common/b2Timer.h +0 -50
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
- data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
- data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
- data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
- data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
- data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
- data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
- data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
- data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
- data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
- data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
- data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
- data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
- data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
- data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
- data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
- data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
- data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
- data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
- data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
- data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
- data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
- data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
- data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
- data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
- data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
- data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
- data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
- data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
- data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
- data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
- data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
- data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
- data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
- data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
- data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
- data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
- data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
- data/src/physics/Box2D/Dynamics/b2World.h +0 -354
- data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
- data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
- data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
- data/src/physics/Box2D/Rope/b2Rope.h +0 -115
- data/src/shape_view.cpp +0 -306
data/src/body.h
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __REFLEX_SRC_BODY_H__
|
4
|
+
#define __REFLEX_SRC_BODY_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <xot/noncopyable.h>
|
8
|
+
#include <xot/pimpl.h>
|
9
|
+
#include <rays/point.h>
|
10
|
+
#include <reflex/defs.h>
|
11
|
+
|
12
|
+
|
13
|
+
class b2Body;
|
14
|
+
|
15
|
+
|
16
|
+
namespace Reflex
|
17
|
+
{
|
18
|
+
|
19
|
+
|
20
|
+
class World;
|
21
|
+
|
22
|
+
|
23
|
+
class Body : public Xot::NonCopyable
|
24
|
+
{
|
25
|
+
|
26
|
+
public:
|
27
|
+
|
28
|
+
Body (World* world, const Point& position = 0, float angle = 0);
|
29
|
+
|
30
|
+
~Body ();
|
31
|
+
|
32
|
+
void apply_force (coord x, coord y);
|
33
|
+
|
34
|
+
void apply_force (const Point& force);
|
35
|
+
|
36
|
+
void apply_torque (float torque);
|
37
|
+
|
38
|
+
void apply_linear_impulse (coord x, coord y);
|
39
|
+
|
40
|
+
void apply_linear_impulse (const Point& impulse);
|
41
|
+
|
42
|
+
void apply_angular_impulse (float impulse);
|
43
|
+
|
44
|
+
float meter2pixel (float meter = 1) const;
|
45
|
+
|
46
|
+
void set_transform (coord x, coord y, float degree);
|
47
|
+
|
48
|
+
Point position () const;
|
49
|
+
|
50
|
+
float angle () const;
|
51
|
+
|
52
|
+
void set_dynamic (bool dynamic = true);
|
53
|
+
|
54
|
+
bool is_dynamic () const;
|
55
|
+
|
56
|
+
void set_linear_velocity (coord x, coord y);
|
57
|
+
|
58
|
+
void set_linear_velocity (const Point& velocity);
|
59
|
+
|
60
|
+
Point linear_velocity () const;
|
61
|
+
|
62
|
+
void set_angular_velocity (float velocity);
|
63
|
+
|
64
|
+
float angular_velocity () const;
|
65
|
+
|
66
|
+
void set_gravity_scale (float scale);
|
67
|
+
|
68
|
+
float gravity_scale () const;
|
69
|
+
|
70
|
+
struct Data;
|
71
|
+
|
72
|
+
Xot::PImpl<Data> self;
|
73
|
+
|
74
|
+
};// Body
|
75
|
+
|
76
|
+
|
77
|
+
void Body_copy_attributes (Body* to, const Body& from);
|
78
|
+
|
79
|
+
Body* Body_create_temporary ();
|
80
|
+
|
81
|
+
bool Body_is_temporary (const Body& body);
|
82
|
+
|
83
|
+
b2Body* Body_get_b2ptr ( Body* body);
|
84
|
+
|
85
|
+
const b2Body* Body_get_b2ptr (const Body* body);
|
86
|
+
|
87
|
+
|
88
|
+
}// Reflex
|
89
|
+
|
90
|
+
|
91
|
+
#endif//EOH
|
data/src/event.cpp
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#include "reflex/event.h"
|
2
2
|
|
3
3
|
|
4
|
+
#include "reflex/timer.h"
|
5
|
+
#include "reflex/shape.h"
|
4
6
|
#include "reflex/exception.h"
|
5
7
|
|
6
8
|
|
@@ -26,8 +28,14 @@ namespace Reflex
|
|
26
28
|
}
|
27
29
|
|
28
30
|
|
29
|
-
|
30
|
-
:
|
31
|
+
MotionEvent::MotionEvent (const Point& gravity)
|
32
|
+
: gravity(gravity)
|
33
|
+
{
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
UpdateEvent::UpdateEvent (double now, float dt)
|
38
|
+
: now(now), dt(dt)
|
31
39
|
{
|
32
40
|
}
|
33
41
|
|
@@ -114,8 +122,8 @@ namespace Reflex
|
|
114
122
|
{
|
115
123
|
}
|
116
124
|
|
117
|
-
FocusEvent::FocusEvent (Type type, View*
|
118
|
-
: type(type),
|
125
|
+
FocusEvent::FocusEvent (Type type, View* current, View* last)
|
126
|
+
: type(type), current(current), last(last)
|
119
127
|
{
|
120
128
|
}
|
121
129
|
|
@@ -162,7 +170,7 @@ namespace Reflex
|
|
162
170
|
if (positions_)
|
163
171
|
{
|
164
172
|
for (size_t i = 0; i < size; ++i)
|
165
|
-
positions[i] = *(Coord3*) &positions_[i];
|
173
|
+
positions[i] = *(Rays::Coord3*) &positions_[i];
|
166
174
|
}
|
167
175
|
}
|
168
176
|
|
@@ -206,27 +214,27 @@ namespace Reflex
|
|
206
214
|
}
|
207
215
|
|
208
216
|
Point&
|
209
|
-
WheelEvent::
|
217
|
+
WheelEvent::position ()
|
210
218
|
{
|
211
|
-
return *(Point*) &
|
219
|
+
return *(Point*) &position_;
|
212
220
|
}
|
213
221
|
|
214
222
|
const Point&
|
215
|
-
WheelEvent::
|
223
|
+
WheelEvent::position () const
|
216
224
|
{
|
217
|
-
return const_cast<WheelEvent*>(this)->
|
225
|
+
return const_cast<WheelEvent*>(this)->position();
|
218
226
|
}
|
219
227
|
|
220
228
|
Point&
|
221
|
-
WheelEvent::
|
229
|
+
WheelEvent::delta ()
|
222
230
|
{
|
223
|
-
return *(Point*) &
|
231
|
+
return *(Point*) &delta_;
|
224
232
|
}
|
225
233
|
|
226
234
|
const Point&
|
227
|
-
WheelEvent::
|
235
|
+
WheelEvent::delta () const
|
228
236
|
{
|
229
|
-
return const_cast<WheelEvent*>(this)->
|
237
|
+
return const_cast<WheelEvent*>(this)->delta();
|
230
238
|
}
|
231
239
|
|
232
240
|
|
@@ -241,13 +249,55 @@ namespace Reflex
|
|
241
249
|
}
|
242
250
|
|
243
251
|
|
252
|
+
TimerEvent::TimerEvent (Timer* timer)
|
253
|
+
: timer(timer)
|
254
|
+
{
|
255
|
+
}
|
256
|
+
|
257
|
+
View*
|
258
|
+
TimerEvent::owner () const
|
259
|
+
{
|
260
|
+
return timer ? timer->owner() : NULL;
|
261
|
+
}
|
262
|
+
|
263
|
+
int
|
264
|
+
TimerEvent::id () const
|
265
|
+
{
|
266
|
+
return timer ? timer->id() : Timer::ID_INVALID;
|
267
|
+
}
|
268
|
+
|
269
|
+
float
|
270
|
+
TimerEvent::interval () const
|
271
|
+
{
|
272
|
+
return timer ? timer->interval() : -1;
|
273
|
+
}
|
274
|
+
|
275
|
+
void
|
276
|
+
TimerEvent::set_count (int count)
|
277
|
+
{
|
278
|
+
if (timer) timer->set_count(count);
|
279
|
+
}
|
280
|
+
|
281
|
+
int
|
282
|
+
TimerEvent::count () const
|
283
|
+
{
|
284
|
+
return timer ? timer->count() : 0;
|
285
|
+
}
|
286
|
+
|
287
|
+
bool
|
288
|
+
TimerEvent::is_finished () const
|
289
|
+
{
|
290
|
+
return timer ? timer->is_finished() : true;
|
291
|
+
}
|
292
|
+
|
293
|
+
|
244
294
|
ContactEvent::ContactEvent ()
|
245
|
-
: type(NONE), view(NULL)
|
295
|
+
: type(NONE), shape(NULL), view(NULL)
|
246
296
|
{
|
247
297
|
}
|
248
298
|
|
249
|
-
ContactEvent::ContactEvent (Type type,
|
250
|
-
: type(type), view(
|
299
|
+
ContactEvent::ContactEvent (Type type, Shape* shape)
|
300
|
+
: type(type), shape(shape), view(shape ? shape->owner() : NULL)
|
251
301
|
{
|
252
302
|
}
|
253
303
|
|
data/src/exception.cpp
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
#include "reflex/exception.h"
|
2
2
|
|
3
3
|
|
4
|
-
#include <xot/string.h>
|
5
|
-
|
6
|
-
|
7
4
|
namespace Reflex
|
8
5
|
{
|
9
6
|
|
@@ -20,6 +17,12 @@ namespace Reflex
|
|
20
17
|
}
|
21
18
|
|
22
19
|
|
20
|
+
PhysicsError::PhysicsError (const char* str)
|
21
|
+
: Super(str)
|
22
|
+
{
|
23
|
+
}
|
24
|
+
|
25
|
+
|
23
26
|
namespace ErrorFunctions
|
24
27
|
{
|
25
28
|
|
@@ -37,6 +40,13 @@ namespace Reflex
|
|
37
40
|
throw LayoutError(Xot::error_text(file, line, s));
|
38
41
|
}
|
39
42
|
|
43
|
+
void
|
44
|
+
physics_error (const char* file, int line, const char* format, ...)
|
45
|
+
{
|
46
|
+
XOT_STRINGF(format, s);
|
47
|
+
throw PhysicsError(Xot::error_text(file, line, s));
|
48
|
+
}
|
49
|
+
|
40
50
|
}// ErrorFunctions
|
41
51
|
|
42
52
|
|
data/src/filter.cpp
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
#include "reflex/filter.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include "reflex/exception.h"
|
5
|
+
#include "reflex/debug.h"
|
6
|
+
|
7
|
+
|
8
|
+
namespace Reflex
|
9
|
+
{
|
10
|
+
|
11
|
+
|
12
|
+
struct Filter::Data
|
13
|
+
{
|
14
|
+
|
15
|
+
Shader shader;
|
16
|
+
|
17
|
+
};// Filter::Data
|
18
|
+
|
19
|
+
|
20
|
+
Filter::Filter ()
|
21
|
+
{
|
22
|
+
}
|
23
|
+
|
24
|
+
Filter::Filter (const Shader& shader)
|
25
|
+
{
|
26
|
+
self->shader = shader;
|
27
|
+
}
|
28
|
+
|
29
|
+
Filter::~Filter ()
|
30
|
+
{
|
31
|
+
}
|
32
|
+
|
33
|
+
void
|
34
|
+
Filter::apply (Painter* painter, const Image& image) const
|
35
|
+
{
|
36
|
+
if (!self->shader)
|
37
|
+
return;
|
38
|
+
|
39
|
+
if (!painter || !image)
|
40
|
+
argument_error(__FILE__, __LINE__);
|
41
|
+
|
42
|
+
painter->set_shader(self->shader);
|
43
|
+
painter->image(image);
|
44
|
+
}
|
45
|
+
|
46
|
+
void
|
47
|
+
Filter::set_shader (const Shader& shader)
|
48
|
+
{
|
49
|
+
self->shader = shader;
|
50
|
+
}
|
51
|
+
|
52
|
+
Shader&
|
53
|
+
Filter::shader ()
|
54
|
+
{
|
55
|
+
return self->shader;
|
56
|
+
}
|
57
|
+
|
58
|
+
const Shader&
|
59
|
+
Filter::shader () const
|
60
|
+
{
|
61
|
+
return const_cast<Filter*>(this)->shader();
|
62
|
+
}
|
63
|
+
|
64
|
+
Filter::operator bool () const
|
65
|
+
{
|
66
|
+
return self->shader;
|
67
|
+
}
|
68
|
+
|
69
|
+
bool
|
70
|
+
Filter::operator ! () const
|
71
|
+
{
|
72
|
+
return !operator bool();
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
}// Reflex
|
data/src/fixture.cpp
CHANGED
@@ -1,107 +1,232 @@
|
|
1
|
-
#include "
|
1
|
+
#include "fixture.h"
|
2
2
|
|
3
3
|
|
4
4
|
#include <assert.h>
|
5
5
|
#include <Box2D/Dynamics/b2Fixture.h>
|
6
|
-
|
7
|
-
|
8
|
-
#
|
6
|
+
#include <Box2D/Collision/Shapes/b2CircleShape.h>
|
7
|
+
#include "reflex/exception.h"
|
8
|
+
#include "reflex/debug.h"
|
9
|
+
#include "view.h"
|
10
|
+
#include "world.h"
|
11
|
+
#include "body.h"
|
9
12
|
|
10
13
|
|
11
14
|
namespace Reflex
|
12
15
|
{
|
13
16
|
|
14
17
|
|
15
|
-
Fixture::Fixture (
|
16
|
-
:
|
18
|
+
Fixture::Fixture (Body* body, const b2Shape* b2shape, void* userdata)
|
19
|
+
: b2fixture(NULL)
|
17
20
|
{
|
21
|
+
assert(body);
|
22
|
+
|
23
|
+
b2Body* b2body = Body_get_b2ptr(body);
|
24
|
+
assert(b2body);
|
25
|
+
|
26
|
+
b2fixture = b2body->CreateFixture(b2shape, 0);
|
27
|
+
if (!b2fixture)
|
28
|
+
system_error(__FILE__, __LINE__);
|
29
|
+
|
30
|
+
b2fixture->SetUserData(userdata);
|
18
31
|
}
|
19
32
|
|
20
|
-
Fixture
|
21
|
-
Fixture::operator = (Handle h)
|
33
|
+
Fixture::~Fixture ()
|
22
34
|
{
|
23
|
-
|
24
|
-
|
35
|
+
b2fixture->SetUserData(NULL);
|
36
|
+
b2fixture->GetBody()->DestroyFixture(b2fixture);
|
25
37
|
}
|
26
38
|
|
27
39
|
void
|
28
40
|
Fixture::set_density (float density)
|
29
41
|
{
|
30
|
-
|
42
|
+
if (density == this->density())
|
43
|
+
return;
|
44
|
+
|
45
|
+
for (Fixture* p = this; p; p = p->pnext.get())
|
46
|
+
p->b2fixture->SetDensity(density);
|
31
47
|
|
32
|
-
|
33
|
-
PTR->GetBody()->ResetMassData();
|
48
|
+
b2fixture->GetBody()->ResetMassData();
|
34
49
|
}
|
35
50
|
|
36
51
|
float
|
37
52
|
Fixture::density () const
|
38
53
|
{
|
39
|
-
|
40
|
-
|
41
|
-
return PTR->GetDensity();
|
54
|
+
return b2fixture->GetDensity();
|
42
55
|
}
|
43
56
|
|
44
57
|
void
|
45
58
|
Fixture::set_friction (float friction)
|
46
59
|
{
|
47
|
-
|
60
|
+
if (friction == this->friction())
|
61
|
+
return;
|
48
62
|
|
49
|
-
|
63
|
+
for (Fixture* p = this; p; p = p->pnext.get())
|
64
|
+
p->b2fixture->SetFriction(friction);
|
50
65
|
}
|
51
66
|
|
52
67
|
float
|
53
68
|
Fixture::friction () const
|
54
69
|
{
|
55
|
-
|
56
|
-
|
57
|
-
return PTR->GetFriction();
|
70
|
+
return b2fixture->GetFriction();
|
58
71
|
}
|
59
72
|
|
60
73
|
void
|
61
74
|
Fixture::set_restitution (float restitution)
|
62
75
|
{
|
63
|
-
|
76
|
+
if (restitution == this->restitution())
|
77
|
+
return;
|
64
78
|
|
65
|
-
|
79
|
+
for (Fixture* p = this; p; p = p->pnext.get())
|
80
|
+
p->b2fixture->SetRestitution(restitution);
|
66
81
|
}
|
67
82
|
|
68
83
|
float
|
69
84
|
Fixture::restitution () const
|
70
85
|
{
|
71
|
-
|
86
|
+
return b2fixture->GetRestitution();
|
87
|
+
}
|
88
|
+
|
89
|
+
void
|
90
|
+
Fixture::set_sensor (bool state)
|
91
|
+
{
|
92
|
+
if (state == is_sensor())
|
93
|
+
return;
|
72
94
|
|
73
|
-
|
95
|
+
for (Fixture* p = this; p; p = p->pnext.get())
|
96
|
+
p->b2fixture->SetSensor(state);
|
74
97
|
}
|
75
98
|
|
76
|
-
|
77
|
-
Fixture::
|
99
|
+
bool
|
100
|
+
Fixture::is_sensor () const
|
78
101
|
{
|
79
|
-
|
102
|
+
return b2fixture->IsSensor();
|
103
|
+
}
|
80
104
|
|
81
|
-
|
105
|
+
void
|
106
|
+
Fixture::set_category_bits (uint bits)
|
107
|
+
{
|
108
|
+
if (bits > USHRT_MAX)
|
109
|
+
{
|
110
|
+
argument_error(
|
111
|
+
__FILE__, __LINE__, "category_bits must be less then USHRT_MAX.");
|
112
|
+
}
|
113
|
+
|
114
|
+
if (bits == category_bits())
|
115
|
+
return;
|
116
|
+
|
117
|
+
for (Fixture* p = this; p; p = p->pnext.get())
|
118
|
+
{
|
119
|
+
b2Filter f = p->b2fixture->GetFilterData();
|
120
|
+
f.categoryBits = bits;
|
121
|
+
p->b2fixture->SetFilterData(f);
|
122
|
+
}
|
82
123
|
}
|
83
124
|
|
84
|
-
|
125
|
+
uint
|
126
|
+
Fixture::category_bits () const
|
85
127
|
{
|
86
|
-
return
|
128
|
+
return b2fixture->GetFilterData().categoryBits;
|
87
129
|
}
|
88
130
|
|
89
|
-
|
90
|
-
Fixture::
|
131
|
+
void
|
132
|
+
Fixture::set_collision_mask (uint mask)
|
91
133
|
{
|
92
|
-
|
134
|
+
if (mask > USHRT_MAX)
|
135
|
+
{
|
136
|
+
argument_error(
|
137
|
+
__FILE__, __LINE__, "collision_mask must be less then USHRT_MAX.");
|
138
|
+
}
|
139
|
+
|
140
|
+
if (mask == collision_mask())
|
141
|
+
return;
|
142
|
+
|
143
|
+
for (Fixture* p = this; p; p = p->pnext.get())
|
144
|
+
{
|
145
|
+
b2Filter f = b2fixture->GetFilterData();
|
146
|
+
f.maskBits = mask;
|
147
|
+
b2fixture->SetFilterData(f);
|
148
|
+
}
|
93
149
|
}
|
94
150
|
|
95
|
-
|
96
|
-
|
151
|
+
uint
|
152
|
+
Fixture::collision_mask () const
|
153
|
+
{
|
154
|
+
return b2fixture->GetFilterData().maskBits;
|
155
|
+
}
|
156
|
+
|
157
|
+
b2Fixture*
|
158
|
+
Fixture::b2ptr ()
|
159
|
+
{
|
160
|
+
return b2fixture;
|
161
|
+
}
|
162
|
+
|
163
|
+
const b2Fixture*
|
164
|
+
Fixture::b2ptr () const
|
97
165
|
{
|
98
|
-
return
|
166
|
+
return const_cast<Fixture*>(this)->b2ptr();
|
167
|
+
}
|
168
|
+
|
169
|
+
void
|
170
|
+
Fixture::set_next (Fixture* fixture)
|
171
|
+
{
|
172
|
+
if (fixture)
|
173
|
+
Fixture_copy_attributes(fixture, *this);
|
174
|
+
|
175
|
+
pnext.reset(fixture);
|
176
|
+
}
|
177
|
+
|
178
|
+
Fixture*
|
179
|
+
Fixture::next ()
|
180
|
+
{
|
181
|
+
return pnext.get();
|
182
|
+
}
|
183
|
+
|
184
|
+
const Fixture*
|
185
|
+
Fixture::next () const
|
186
|
+
{
|
187
|
+
return const_cast<Fixture*>(this)->next();
|
188
|
+
}
|
189
|
+
|
190
|
+
|
191
|
+
void
|
192
|
+
Fixture_copy_attributes (Fixture* to, const Fixture& from)
|
193
|
+
{
|
194
|
+
if (!to)
|
195
|
+
return;
|
196
|
+
|
197
|
+
to->set_density( from.density());
|
198
|
+
to->set_friction( from.friction());
|
199
|
+
to->set_restitution( from.restitution());
|
200
|
+
to->set_sensor( from.is_sensor());
|
201
|
+
to->set_category_bits( from.category_bits());
|
202
|
+
to->set_collision_mask(from.collision_mask());
|
203
|
+
}
|
204
|
+
|
205
|
+
static Body*
|
206
|
+
get_temporary_body ()
|
207
|
+
{
|
208
|
+
static Body* body = NULL;
|
209
|
+
if (!body) body = Body_create_temporary();
|
210
|
+
return body;
|
211
|
+
}
|
212
|
+
|
213
|
+
Fixture*
|
214
|
+
Fixture_create_temporary ()
|
215
|
+
{
|
216
|
+
Body* body = get_temporary_body();
|
217
|
+
if (!body)
|
218
|
+
invalid_state_error(__FILE__, __LINE__);
|
219
|
+
|
220
|
+
b2CircleShape b2shape;
|
221
|
+
b2shape.m_radius = 1;
|
222
|
+
|
223
|
+
return new Fixture(body, &b2shape);
|
99
224
|
}
|
100
225
|
|
101
226
|
bool
|
102
|
-
|
227
|
+
Fixture_is_temporary (const Fixture& fixture)
|
103
228
|
{
|
104
|
-
return
|
229
|
+
return fixture.b2ptr()->GetBody() == Body_get_b2ptr(get_temporary_body());
|
105
230
|
}
|
106
231
|
|
107
232
|
|
data/src/fixture.h
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __REFLEX_SRC_FIXTURE_H__
|
4
|
+
#define __REFLEX_SRC_FIXTURE_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <memory>
|
8
|
+
#include <xot/noncopyable.h>
|
9
|
+
#include <reflex/defs.h>
|
10
|
+
|
11
|
+
|
12
|
+
class b2Fixture;
|
13
|
+
class b2Shape;
|
14
|
+
|
15
|
+
|
16
|
+
namespace Reflex
|
17
|
+
{
|
18
|
+
|
19
|
+
|
20
|
+
class Body;
|
21
|
+
|
22
|
+
|
23
|
+
class Fixture : public Xot::NonCopyable
|
24
|
+
{
|
25
|
+
|
26
|
+
public:
|
27
|
+
|
28
|
+
Fixture (Body* body, const b2Shape* b2shape, void* userdata = NULL);
|
29
|
+
|
30
|
+
~Fixture ();
|
31
|
+
|
32
|
+
void set_density (float density);
|
33
|
+
|
34
|
+
float density () const;
|
35
|
+
|
36
|
+
void set_friction (float friction);
|
37
|
+
|
38
|
+
float friction () const;
|
39
|
+
|
40
|
+
void set_restitution (float restitution);
|
41
|
+
|
42
|
+
float restitution () const;
|
43
|
+
|
44
|
+
void set_sensor (bool state);
|
45
|
+
|
46
|
+
bool is_sensor () const;
|
47
|
+
|
48
|
+
void set_category_bits (uint bits);
|
49
|
+
|
50
|
+
uint category_bits () const;
|
51
|
+
|
52
|
+
void set_collision_mask (uint mask);
|
53
|
+
|
54
|
+
uint collision_mask () const;
|
55
|
+
|
56
|
+
b2Fixture* b2ptr ();
|
57
|
+
|
58
|
+
const b2Fixture* b2ptr () const;
|
59
|
+
|
60
|
+
void set_next (Fixture* fixture);
|
61
|
+
|
62
|
+
Fixture* next ();
|
63
|
+
|
64
|
+
const Fixture* next () const;
|
65
|
+
|
66
|
+
private:
|
67
|
+
|
68
|
+
b2Fixture* b2fixture;
|
69
|
+
|
70
|
+
std::unique_ptr<Fixture> pnext;
|
71
|
+
|
72
|
+
};// Fixture
|
73
|
+
|
74
|
+
|
75
|
+
void Fixture_copy_attributes (Fixture* to, const Fixture& from);
|
76
|
+
|
77
|
+
Fixture* Fixture_create_temporary ();
|
78
|
+
|
79
|
+
bool Fixture_is_temporary (const Fixture& fixture);
|
80
|
+
|
81
|
+
|
82
|
+
}// Reflex
|
83
|
+
|
84
|
+
|
85
|
+
#endif//EOH
|
data/src/image_view.cpp
CHANGED
@@ -39,13 +39,13 @@ namespace Reflex
|
|
39
39
|
return self->image;
|
40
40
|
}
|
41
41
|
|
42
|
-
|
43
|
-
ImageView::
|
42
|
+
Bounds
|
43
|
+
ImageView::content_bounds () const
|
44
44
|
{
|
45
45
|
if (self->image)
|
46
|
-
return
|
46
|
+
return Bounds(self->image.width(), self->image.height());
|
47
47
|
else
|
48
|
-
return Super::
|
48
|
+
return Super::content_bounds();
|
49
49
|
}
|
50
50
|
|
51
51
|
void
|