reflexion 0.1.7 → 0.1.8

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.
Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +5 -5
  3. data/.doc/ext/reflex/body.cpp +167 -0
  4. data/.doc/ext/reflex/capture_event.cpp +4 -4
  5. data/.doc/ext/reflex/draw_event.cpp +4 -4
  6. data/.doc/ext/reflex/event.cpp +4 -4
  7. data/.doc/ext/reflex/fixture.cpp +101 -0
  8. data/.doc/ext/reflex/focus_event.cpp +4 -4
  9. data/.doc/ext/reflex/frame_event.cpp +4 -4
  10. data/.doc/ext/reflex/image_view.cpp +22 -5
  11. data/.doc/ext/reflex/key_event.cpp +4 -4
  12. data/.doc/ext/reflex/native.cpp +6 -0
  13. data/.doc/ext/reflex/pointer_event.cpp +4 -4
  14. data/.doc/ext/reflex/reflex.cpp +2 -3
  15. data/.doc/ext/reflex/scroll_event.cpp +4 -4
  16. data/.doc/ext/reflex/selector.cpp +4 -4
  17. data/.doc/ext/reflex/style.cpp +4 -4
  18. data/.doc/ext/reflex/style_length.cpp +4 -4
  19. data/.doc/ext/reflex/style_length2.cpp +4 -4
  20. data/.doc/ext/reflex/style_length4.cpp +4 -4
  21. data/.doc/ext/reflex/update_event.cpp +4 -4
  22. data/.doc/ext/reflex/view.cpp +110 -8
  23. data/.doc/ext/reflex/wheel_event.cpp +4 -4
  24. data/.doc/ext/reflex/window.cpp +36 -12
  25. data/README.md +2 -2
  26. data/Rakefile +2 -1
  27. data/VERSION +1 -1
  28. data/ext/reflex/application.cpp +8 -8
  29. data/ext/reflex/body.cpp +181 -0
  30. data/ext/reflex/capture_event.cpp +4 -4
  31. data/ext/reflex/draw_event.cpp +4 -4
  32. data/ext/reflex/event.cpp +4 -4
  33. data/ext/reflex/fixture.cpp +108 -0
  34. data/ext/reflex/focus_event.cpp +4 -4
  35. data/ext/reflex/frame_event.cpp +4 -4
  36. data/ext/reflex/image_view.cpp +24 -5
  37. data/ext/reflex/key_event.cpp +4 -4
  38. data/ext/reflex/native.cpp +6 -0
  39. data/ext/reflex/pointer_event.cpp +4 -4
  40. data/ext/reflex/reflex.cpp +2 -3
  41. data/ext/reflex/scroll_event.cpp +4 -4
  42. data/ext/reflex/selector.cpp +4 -4
  43. data/ext/reflex/style.cpp +4 -4
  44. data/ext/reflex/style_length.cpp +4 -4
  45. data/ext/reflex/style_length2.cpp +4 -4
  46. data/ext/reflex/style_length4.cpp +4 -4
  47. data/ext/reflex/update_event.cpp +4 -4
  48. data/ext/reflex/view.cpp +126 -12
  49. data/ext/reflex/wheel_event.cpp +4 -4
  50. data/ext/reflex/window.cpp +39 -12
  51. data/include/reflex/bitmap.h +20 -0
  52. data/include/reflex/body.h +82 -0
  53. data/include/reflex/bounds.h +20 -0
  54. data/include/reflex/color.h +20 -0
  55. data/include/reflex/color_space.h +20 -0
  56. data/include/reflex/defs.h +5 -1
  57. data/include/reflex/event.h +16 -25
  58. data/include/reflex/fixture.h +116 -0
  59. data/include/reflex/font.h +20 -0
  60. data/include/reflex/image.h +20 -0
  61. data/include/reflex/image_view.h +1 -1
  62. data/include/reflex/matrix.h +20 -0
  63. data/include/reflex/painter.h +20 -0
  64. data/include/reflex/point.h +24 -0
  65. data/include/reflex/ruby/application.h +6 -0
  66. data/include/reflex/ruby/body.h +41 -0
  67. data/include/reflex/ruby/event.h +68 -0
  68. data/include/reflex/ruby/fixture.h +41 -0
  69. data/include/reflex/ruby/image_view.h +14 -0
  70. data/include/reflex/ruby/selector.h +14 -0
  71. data/include/reflex/ruby/style.h +14 -0
  72. data/include/reflex/ruby/style_length.h +26 -0
  73. data/include/reflex/ruby/view.h +43 -39
  74. data/include/reflex/ruby/window.h +27 -21
  75. data/include/reflex/ruby.h +2 -0
  76. data/include/reflex/shader.h +20 -0
  77. data/include/reflex/style.h +2 -3
  78. data/include/reflex/texture.h +20 -0
  79. data/include/reflex/view.h +45 -24
  80. data/include/reflex/window.h +11 -14
  81. data/include/reflex.h +3 -0
  82. data/lib/reflex/application.rb +6 -2
  83. data/lib/reflex/body.rb +17 -0
  84. data/lib/reflex/fixture.rb +17 -0
  85. data/lib/reflex/view.rb +16 -1
  86. data/lib/reflex/window.rb +13 -1
  87. data/lib/reflex.rb +2 -0
  88. data/reflex.gemspec +1 -1
  89. data/samples/bats.rb +4 -3
  90. data/samples/checker.rb +4 -3
  91. data/samples/fans.rb +4 -3
  92. data/samples/fps.rb +5 -3
  93. data/samples/grid.rb +5 -4
  94. data/samples/hello.rb +1 -1
  95. data/samples/image.rb +3 -2
  96. data/samples/ios/hello/hello/main.cpp +12 -3
  97. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +376 -123
  98. data/samples/key.rb +5 -4
  99. data/samples/layout.rb +3 -2
  100. data/samples/model.rb +3 -2
  101. data/samples/osx/hello/hello/main.cpp +12 -3
  102. data/samples/osx/hello/hello.xcodeproj/project.pbxproj +375 -120
  103. data/samples/physics.rb +37 -0
  104. data/samples/repl.rb +3 -2
  105. data/samples/shader.rb +4 -4
  106. data/samples/shapes.rb +4 -4
  107. data/samples/text.rb +6 -4
  108. data/samples/tree.rb +5 -4
  109. data/samples/views.rb +3 -2
  110. data/samples/visuals.rb +1 -2
  111. data/src/body.cpp +244 -0
  112. data/src/event.cpp +18 -18
  113. data/src/fixture.cpp +108 -0
  114. data/src/image_view.cpp +1 -1
  115. data/src/ios/native_window.h +2 -0
  116. data/src/ios/native_window.mm +18 -1
  117. data/src/ios/opengl_view.mm +8 -0
  118. data/src/ios/window.mm +24 -3
  119. data/src/ios/window_data.h +3 -3
  120. data/src/osx/native_window.mm +17 -1
  121. data/src/osx/window.mm +24 -3
  122. data/src/osx/window_data.h +3 -3
  123. data/src/physics/Box2D/Box2D.h +68 -0
  124. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +193 -0
  125. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +105 -0
  126. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +99 -0
  127. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +91 -0
  128. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +138 -0
  129. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +74 -0
  130. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +467 -0
  131. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +101 -0
  132. data/src/physics/Box2D/Collision/Shapes/b2Shape.h +101 -0
  133. data/src/physics/Box2D/Collision/b2BroadPhase.cpp +119 -0
  134. data/src/physics/Box2D/Collision/b2BroadPhase.h +257 -0
  135. data/src/physics/Box2D/Collision/b2CollideCircle.cpp +154 -0
  136. data/src/physics/Box2D/Collision/b2CollideEdge.cpp +698 -0
  137. data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +239 -0
  138. data/src/physics/Box2D/Collision/b2Collision.cpp +252 -0
  139. data/src/physics/Box2D/Collision/b2Collision.h +277 -0
  140. data/src/physics/Box2D/Collision/b2Distance.cpp +603 -0
  141. data/src/physics/Box2D/Collision/b2Distance.h +141 -0
  142. data/src/physics/Box2D/Collision/b2DynamicTree.cpp +778 -0
  143. data/src/physics/Box2D/Collision/b2DynamicTree.h +289 -0
  144. data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +486 -0
  145. data/src/physics/Box2D/Collision/b2TimeOfImpact.h +58 -0
  146. data/src/physics/Box2D/Common/b2BlockAllocator.cpp +215 -0
  147. data/src/physics/Box2D/Common/b2BlockAllocator.h +62 -0
  148. data/src/physics/Box2D/Common/b2Draw.cpp +44 -0
  149. data/src/physics/Box2D/Common/b2Draw.h +86 -0
  150. data/src/physics/Box2D/Common/b2GrowableStack.h +85 -0
  151. data/src/physics/Box2D/Common/b2Math.cpp +94 -0
  152. data/src/physics/Box2D/Common/b2Math.h +720 -0
  153. data/src/physics/Box2D/Common/b2Settings.cpp +44 -0
  154. data/src/physics/Box2D/Common/b2Settings.h +151 -0
  155. data/src/physics/Box2D/Common/b2StackAllocator.cpp +83 -0
  156. data/src/physics/Box2D/Common/b2StackAllocator.h +60 -0
  157. data/src/physics/Box2D/Common/b2Timer.cpp +101 -0
  158. data/src/physics/Box2D/Common/b2Timer.h +50 -0
  159. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +53 -0
  160. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +39 -0
  161. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +53 -0
  162. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +39 -0
  163. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +52 -0
  164. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +39 -0
  165. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +247 -0
  166. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +349 -0
  167. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +838 -0
  168. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +95 -0
  169. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +49 -0
  170. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +39 -0
  171. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +49 -0
  172. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +39 -0
  173. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +49 -0
  174. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +38 -0
  175. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +52 -0
  176. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +39 -0
  177. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +260 -0
  178. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +169 -0
  179. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +251 -0
  180. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +119 -0
  181. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +419 -0
  182. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +125 -0
  183. data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +211 -0
  184. data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +226 -0
  185. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +304 -0
  186. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +133 -0
  187. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +222 -0
  188. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +129 -0
  189. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +629 -0
  190. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +196 -0
  191. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +348 -0
  192. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +152 -0
  193. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +502 -0
  194. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +204 -0
  195. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +241 -0
  196. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +114 -0
  197. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +344 -0
  198. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +126 -0
  199. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +419 -0
  200. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +210 -0
  201. data/src/physics/Box2D/Dynamics/b2Body.cpp +549 -0
  202. data/src/physics/Box2D/Dynamics/b2Body.h +860 -0
  203. data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +296 -0
  204. data/src/physics/Box2D/Dynamics/b2ContactManager.h +52 -0
  205. data/src/physics/Box2D/Dynamics/b2Fixture.cpp +303 -0
  206. data/src/physics/Box2D/Dynamics/b2Fixture.h +345 -0
  207. data/src/physics/Box2D/Dynamics/b2Island.cpp +539 -0
  208. data/src/physics/Box2D/Dynamics/b2Island.h +93 -0
  209. data/src/physics/Box2D/Dynamics/b2TimeStep.h +70 -0
  210. data/src/physics/Box2D/Dynamics/b2World.cpp +1339 -0
  211. data/src/physics/Box2D/Dynamics/b2World.h +354 -0
  212. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +36 -0
  213. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +155 -0
  214. data/src/physics/Box2D/Rope/b2Rope.cpp +259 -0
  215. data/src/physics/Box2D/Rope/b2Rope.h +115 -0
  216. data/src/style.cpp +2 -2
  217. data/src/view.cpp +217 -17
  218. data/src/window.cpp +25 -15
  219. data/src/world.cpp +206 -0
  220. data/src/world.h +96 -0
  221. data/task/box2d.rake +25 -0
  222. data/test/test_view.rb +5 -5
  223. metadata +125 -3
@@ -0,0 +1,345 @@
1
+ /*
2
+ * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
3
+ *
4
+ * This software is provided 'as-is', without any express or implied
5
+ * warranty. In no event will the authors be held liable for any damages
6
+ * arising from the use of this software.
7
+ * Permission is granted to anyone to use this software for any purpose,
8
+ * including commercial applications, and to alter it and redistribute it
9
+ * freely, subject to the following restrictions:
10
+ * 1. The origin of this software must not be misrepresented; you must not
11
+ * claim that you wrote the original software. If you use this software
12
+ * in a product, an acknowledgment in the product documentation would be
13
+ * appreciated but is not required.
14
+ * 2. Altered source versions must be plainly marked as such, and must not be
15
+ * misrepresented as being the original software.
16
+ * 3. This notice may not be removed or altered from any source distribution.
17
+ */
18
+
19
+ #ifndef B2_FIXTURE_H
20
+ #define B2_FIXTURE_H
21
+
22
+ #include <Box2D/Dynamics/b2Body.h>
23
+ #include <Box2D/Collision/b2Collision.h>
24
+ #include <Box2D/Collision/Shapes/b2Shape.h>
25
+
26
+ class b2BlockAllocator;
27
+ class b2Body;
28
+ class b2BroadPhase;
29
+ class b2Fixture;
30
+
31
+ /// This holds contact filtering data.
32
+ struct b2Filter
33
+ {
34
+ b2Filter()
35
+ {
36
+ categoryBits = 0x0001;
37
+ maskBits = 0xFFFF;
38
+ groupIndex = 0;
39
+ }
40
+
41
+ /// The collision category bits. Normally you would just set one bit.
42
+ uint16 categoryBits;
43
+
44
+ /// The collision mask bits. This states the categories that this
45
+ /// shape would accept for collision.
46
+ uint16 maskBits;
47
+
48
+ /// Collision groups allow a certain group of objects to never collide (negative)
49
+ /// or always collide (positive). Zero means no collision group. Non-zero group
50
+ /// filtering always wins against the mask bits.
51
+ int16 groupIndex;
52
+ };
53
+
54
+ /// A fixture definition is used to create a fixture. This class defines an
55
+ /// abstract fixture definition. You can reuse fixture definitions safely.
56
+ struct b2FixtureDef
57
+ {
58
+ /// The constructor sets the default fixture definition values.
59
+ b2FixtureDef()
60
+ {
61
+ shape = NULL;
62
+ userData = NULL;
63
+ friction = 0.2f;
64
+ restitution = 0.0f;
65
+ density = 0.0f;
66
+ isSensor = false;
67
+ }
68
+
69
+ /// The shape, this must be set. The shape will be cloned, so you
70
+ /// can create the shape on the stack.
71
+ const b2Shape* shape;
72
+
73
+ /// Use this to store application specific fixture data.
74
+ void* userData;
75
+
76
+ /// The friction coefficient, usually in the range [0,1].
77
+ float32 friction;
78
+
79
+ /// The restitution (elasticity) usually in the range [0,1].
80
+ float32 restitution;
81
+
82
+ /// The density, usually in kg/m^2.
83
+ float32 density;
84
+
85
+ /// A sensor shape collects contact information but never generates a collision
86
+ /// response.
87
+ bool isSensor;
88
+
89
+ /// Contact filtering data.
90
+ b2Filter filter;
91
+ };
92
+
93
+ /// This proxy is used internally to connect fixtures to the broad-phase.
94
+ struct b2FixtureProxy
95
+ {
96
+ b2AABB aabb;
97
+ b2Fixture* fixture;
98
+ int32 childIndex;
99
+ int32 proxyId;
100
+ };
101
+
102
+ /// A fixture is used to attach a shape to a body for collision detection. A fixture
103
+ /// inherits its transform from its parent. Fixtures hold additional non-geometric data
104
+ /// such as friction, collision filters, etc.
105
+ /// Fixtures are created via b2Body::CreateFixture.
106
+ /// @warning you cannot reuse fixtures.
107
+ class b2Fixture
108
+ {
109
+ public:
110
+ /// Get the type of the child shape. You can use this to down cast to the concrete shape.
111
+ /// @return the shape type.
112
+ b2Shape::Type GetType() const;
113
+
114
+ /// Get the child shape. You can modify the child shape, however you should not change the
115
+ /// number of vertices because this will crash some collision caching mechanisms.
116
+ /// Manipulating the shape may lead to non-physical behavior.
117
+ b2Shape* GetShape();
118
+ const b2Shape* GetShape() const;
119
+
120
+ /// Set if this fixture is a sensor.
121
+ void SetSensor(bool sensor);
122
+
123
+ /// Is this fixture a sensor (non-solid)?
124
+ /// @return the true if the shape is a sensor.
125
+ bool IsSensor() const;
126
+
127
+ /// Set the contact filtering data. This will not update contacts until the next time
128
+ /// step when either parent body is active and awake.
129
+ /// This automatically calls Refilter.
130
+ void SetFilterData(const b2Filter& filter);
131
+
132
+ /// Get the contact filtering data.
133
+ const b2Filter& GetFilterData() const;
134
+
135
+ /// Call this if you want to establish collision that was previously disabled by b2ContactFilter::ShouldCollide.
136
+ void Refilter();
137
+
138
+ /// Get the parent body of this fixture. This is NULL if the fixture is not attached.
139
+ /// @return the parent body.
140
+ b2Body* GetBody();
141
+ const b2Body* GetBody() const;
142
+
143
+ /// Get the next fixture in the parent body's fixture list.
144
+ /// @return the next shape.
145
+ b2Fixture* GetNext();
146
+ const b2Fixture* GetNext() const;
147
+
148
+ /// Get the user data that was assigned in the fixture definition. Use this to
149
+ /// store your application specific data.
150
+ void* GetUserData() const;
151
+
152
+ /// Set the user data. Use this to store your application specific data.
153
+ void SetUserData(void* data);
154
+
155
+ /// Test a point for containment in this fixture.
156
+ /// @param p a point in world coordinates.
157
+ bool TestPoint(const b2Vec2& p) const;
158
+
159
+ /// Cast a ray against this shape.
160
+ /// @param output the ray-cast results.
161
+ /// @param input the ray-cast input parameters.
162
+ bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, int32 childIndex) const;
163
+
164
+ /// Get the mass data for this fixture. The mass data is based on the density and
165
+ /// the shape. The rotational inertia is about the shape's origin. This operation
166
+ /// may be expensive.
167
+ void GetMassData(b2MassData* massData) const;
168
+
169
+ /// Set the density of this fixture. This will _not_ automatically adjust the mass
170
+ /// of the body. You must call b2Body::ResetMassData to update the body's mass.
171
+ void SetDensity(float32 density);
172
+
173
+ /// Get the density of this fixture.
174
+ float32 GetDensity() const;
175
+
176
+ /// Get the coefficient of friction.
177
+ float32 GetFriction() const;
178
+
179
+ /// Set the coefficient of friction. This will _not_ change the friction of
180
+ /// existing contacts.
181
+ void SetFriction(float32 friction);
182
+
183
+ /// Get the coefficient of restitution.
184
+ float32 GetRestitution() const;
185
+
186
+ /// Set the coefficient of restitution. This will _not_ change the restitution of
187
+ /// existing contacts.
188
+ void SetRestitution(float32 restitution);
189
+
190
+ /// Get the fixture's AABB. This AABB may be enlarge and/or stale.
191
+ /// If you need a more accurate AABB, compute it using the shape and
192
+ /// the body transform.
193
+ const b2AABB& GetAABB(int32 childIndex) const;
194
+
195
+ /// Dump this fixture to the log file.
196
+ void Dump(int32 bodyIndex);
197
+
198
+ protected:
199
+
200
+ friend class b2Body;
201
+ friend class b2World;
202
+ friend class b2Contact;
203
+ friend class b2ContactManager;
204
+
205
+ b2Fixture();
206
+
207
+ // We need separation create/destroy functions from the constructor/destructor because
208
+ // the destructor cannot access the allocator (no destructor arguments allowed by C++).
209
+ void Create(b2BlockAllocator* allocator, b2Body* body, const b2FixtureDef* def);
210
+ void Destroy(b2BlockAllocator* allocator);
211
+
212
+ // These support body activation/deactivation.
213
+ void CreateProxies(b2BroadPhase* broadPhase, const b2Transform& xf);
214
+ void DestroyProxies(b2BroadPhase* broadPhase);
215
+
216
+ void Synchronize(b2BroadPhase* broadPhase, const b2Transform& xf1, const b2Transform& xf2);
217
+
218
+ float32 m_density;
219
+
220
+ b2Fixture* m_next;
221
+ b2Body* m_body;
222
+
223
+ b2Shape* m_shape;
224
+
225
+ float32 m_friction;
226
+ float32 m_restitution;
227
+
228
+ b2FixtureProxy* m_proxies;
229
+ int32 m_proxyCount;
230
+
231
+ b2Filter m_filter;
232
+
233
+ bool m_isSensor;
234
+
235
+ void* m_userData;
236
+ };
237
+
238
+ inline b2Shape::Type b2Fixture::GetType() const
239
+ {
240
+ return m_shape->GetType();
241
+ }
242
+
243
+ inline b2Shape* b2Fixture::GetShape()
244
+ {
245
+ return m_shape;
246
+ }
247
+
248
+ inline const b2Shape* b2Fixture::GetShape() const
249
+ {
250
+ return m_shape;
251
+ }
252
+
253
+ inline bool b2Fixture::IsSensor() const
254
+ {
255
+ return m_isSensor;
256
+ }
257
+
258
+ inline const b2Filter& b2Fixture::GetFilterData() const
259
+ {
260
+ return m_filter;
261
+ }
262
+
263
+ inline void* b2Fixture::GetUserData() const
264
+ {
265
+ return m_userData;
266
+ }
267
+
268
+ inline void b2Fixture::SetUserData(void* data)
269
+ {
270
+ m_userData = data;
271
+ }
272
+
273
+ inline b2Body* b2Fixture::GetBody()
274
+ {
275
+ return m_body;
276
+ }
277
+
278
+ inline const b2Body* b2Fixture::GetBody() const
279
+ {
280
+ return m_body;
281
+ }
282
+
283
+ inline b2Fixture* b2Fixture::GetNext()
284
+ {
285
+ return m_next;
286
+ }
287
+
288
+ inline const b2Fixture* b2Fixture::GetNext() const
289
+ {
290
+ return m_next;
291
+ }
292
+
293
+ inline void b2Fixture::SetDensity(float32 density)
294
+ {
295
+ b2Assert(b2IsValid(density) && density >= 0.0f);
296
+ m_density = density;
297
+ }
298
+
299
+ inline float32 b2Fixture::GetDensity() const
300
+ {
301
+ return m_density;
302
+ }
303
+
304
+ inline float32 b2Fixture::GetFriction() const
305
+ {
306
+ return m_friction;
307
+ }
308
+
309
+ inline void b2Fixture::SetFriction(float32 friction)
310
+ {
311
+ m_friction = friction;
312
+ }
313
+
314
+ inline float32 b2Fixture::GetRestitution() const
315
+ {
316
+ return m_restitution;
317
+ }
318
+
319
+ inline void b2Fixture::SetRestitution(float32 restitution)
320
+ {
321
+ m_restitution = restitution;
322
+ }
323
+
324
+ inline bool b2Fixture::TestPoint(const b2Vec2& p) const
325
+ {
326
+ return m_shape->TestPoint(m_body->GetTransform(), p);
327
+ }
328
+
329
+ inline bool b2Fixture::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, int32 childIndex) const
330
+ {
331
+ return m_shape->RayCast(output, input, m_body->GetTransform(), childIndex);
332
+ }
333
+
334
+ inline void b2Fixture::GetMassData(b2MassData* massData) const
335
+ {
336
+ m_shape->ComputeMass(massData, m_density);
337
+ }
338
+
339
+ inline const b2AABB& b2Fixture::GetAABB(int32 childIndex) const
340
+ {
341
+ b2Assert(0 <= childIndex && childIndex < m_proxyCount);
342
+ return m_proxies[childIndex].aabb;
343
+ }
344
+
345
+ #endif