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,95 @@
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_CONTACT_SOLVER_H
20
+ #define B2_CONTACT_SOLVER_H
21
+
22
+ #include <Box2D/Common/b2Math.h>
23
+ #include <Box2D/Collision/b2Collision.h>
24
+ #include <Box2D/Dynamics/b2TimeStep.h>
25
+
26
+ class b2Contact;
27
+ class b2Body;
28
+ class b2StackAllocator;
29
+ struct b2ContactPositionConstraint;
30
+
31
+ struct b2VelocityConstraintPoint
32
+ {
33
+ b2Vec2 rA;
34
+ b2Vec2 rB;
35
+ float32 normalImpulse;
36
+ float32 tangentImpulse;
37
+ float32 normalMass;
38
+ float32 tangentMass;
39
+ float32 velocityBias;
40
+ };
41
+
42
+ struct b2ContactVelocityConstraint
43
+ {
44
+ b2VelocityConstraintPoint points[b2_maxManifoldPoints];
45
+ b2Vec2 normal;
46
+ b2Mat22 normalMass;
47
+ b2Mat22 K;
48
+ int32 indexA;
49
+ int32 indexB;
50
+ float32 invMassA, invMassB;
51
+ float32 invIA, invIB;
52
+ float32 friction;
53
+ float32 restitution;
54
+ float32 tangentSpeed;
55
+ int32 pointCount;
56
+ int32 contactIndex;
57
+ };
58
+
59
+ struct b2ContactSolverDef
60
+ {
61
+ b2TimeStep step;
62
+ b2Contact** contacts;
63
+ int32 count;
64
+ b2Position* positions;
65
+ b2Velocity* velocities;
66
+ b2StackAllocator* allocator;
67
+ };
68
+
69
+ class b2ContactSolver
70
+ {
71
+ public:
72
+ b2ContactSolver(b2ContactSolverDef* def);
73
+ ~b2ContactSolver();
74
+
75
+ void InitializeVelocityConstraints();
76
+
77
+ void WarmStart();
78
+ void SolveVelocityConstraints();
79
+ void StoreImpulses();
80
+
81
+ bool SolvePositionConstraints();
82
+ bool SolveTOIPositionConstraints(int32 toiIndexA, int32 toiIndexB);
83
+
84
+ b2TimeStep m_step;
85
+ b2Position* m_positions;
86
+ b2Velocity* m_velocities;
87
+ b2StackAllocator* m_allocator;
88
+ b2ContactPositionConstraint* m_positionConstraints;
89
+ b2ContactVelocityConstraint* m_velocityConstraints;
90
+ b2Contact** m_contacts;
91
+ int m_count;
92
+ };
93
+
94
+ #endif
95
+
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Copyright (c) 2006-2010 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
+ #include <Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h>
20
+ #include <Box2D/Common/b2BlockAllocator.h>
21
+ #include <Box2D/Dynamics/b2Fixture.h>
22
+
23
+ #include <new>
24
+
25
+ b2Contact* b2EdgeAndCircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator)
26
+ {
27
+ void* mem = allocator->Allocate(sizeof(b2EdgeAndCircleContact));
28
+ return new (mem) b2EdgeAndCircleContact(fixtureA, fixtureB);
29
+ }
30
+
31
+ void b2EdgeAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator)
32
+ {
33
+ ((b2EdgeAndCircleContact*)contact)->~b2EdgeAndCircleContact();
34
+ allocator->Free(contact, sizeof(b2EdgeAndCircleContact));
35
+ }
36
+
37
+ b2EdgeAndCircleContact::b2EdgeAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB)
38
+ : b2Contact(fixtureA, 0, fixtureB, 0)
39
+ {
40
+ b2Assert(m_fixtureA->GetType() == b2Shape::e_edge);
41
+ b2Assert(m_fixtureB->GetType() == b2Shape::e_circle);
42
+ }
43
+
44
+ void b2EdgeAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB)
45
+ {
46
+ b2CollideEdgeAndCircle( manifold,
47
+ (b2EdgeShape*)m_fixtureA->GetShape(), xfA,
48
+ (b2CircleShape*)m_fixtureB->GetShape(), xfB);
49
+ }
@@ -0,0 +1,39 @@
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_EDGE_AND_CIRCLE_CONTACT_H
20
+ #define B2_EDGE_AND_CIRCLE_CONTACT_H
21
+
22
+ #include <Box2D/Dynamics/Contacts/b2Contact.h>
23
+
24
+ class b2BlockAllocator;
25
+
26
+ class b2EdgeAndCircleContact : public b2Contact
27
+ {
28
+ public:
29
+ static b2Contact* Create( b2Fixture* fixtureA, int32 indexA,
30
+ b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator);
31
+ static void Destroy(b2Contact* contact, b2BlockAllocator* allocator);
32
+
33
+ b2EdgeAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB);
34
+ ~b2EdgeAndCircleContact() {}
35
+
36
+ void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB);
37
+ };
38
+
39
+ #endif
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Copyright (c) 2006-2010 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
+ #include <Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h>
20
+ #include <Box2D/Common/b2BlockAllocator.h>
21
+ #include <Box2D/Dynamics/b2Fixture.h>
22
+
23
+ #include <new>
24
+
25
+ b2Contact* b2EdgeAndPolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator)
26
+ {
27
+ void* mem = allocator->Allocate(sizeof(b2EdgeAndPolygonContact));
28
+ return new (mem) b2EdgeAndPolygonContact(fixtureA, fixtureB);
29
+ }
30
+
31
+ void b2EdgeAndPolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator)
32
+ {
33
+ ((b2EdgeAndPolygonContact*)contact)->~b2EdgeAndPolygonContact();
34
+ allocator->Free(contact, sizeof(b2EdgeAndPolygonContact));
35
+ }
36
+
37
+ b2EdgeAndPolygonContact::b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB)
38
+ : b2Contact(fixtureA, 0, fixtureB, 0)
39
+ {
40
+ b2Assert(m_fixtureA->GetType() == b2Shape::e_edge);
41
+ b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon);
42
+ }
43
+
44
+ void b2EdgeAndPolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB)
45
+ {
46
+ b2CollideEdgeAndPolygon( manifold,
47
+ (b2EdgeShape*)m_fixtureA->GetShape(), xfA,
48
+ (b2PolygonShape*)m_fixtureB->GetShape(), xfB);
49
+ }
@@ -0,0 +1,39 @@
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_EDGE_AND_POLYGON_CONTACT_H
20
+ #define B2_EDGE_AND_POLYGON_CONTACT_H
21
+
22
+ #include <Box2D/Dynamics/Contacts/b2Contact.h>
23
+
24
+ class b2BlockAllocator;
25
+
26
+ class b2EdgeAndPolygonContact : public b2Contact
27
+ {
28
+ public:
29
+ static b2Contact* Create( b2Fixture* fixtureA, int32 indexA,
30
+ b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator);
31
+ static void Destroy(b2Contact* contact, b2BlockAllocator* allocator);
32
+
33
+ b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB);
34
+ ~b2EdgeAndPolygonContact() {}
35
+
36
+ void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB);
37
+ };
38
+
39
+ #endif
@@ -0,0 +1,49 @@
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
+ #include <Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h>
20
+ #include <Box2D/Common/b2BlockAllocator.h>
21
+ #include <Box2D/Dynamics/b2Fixture.h>
22
+
23
+ #include <new>
24
+
25
+ b2Contact* b2PolygonAndCircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator)
26
+ {
27
+ void* mem = allocator->Allocate(sizeof(b2PolygonAndCircleContact));
28
+ return new (mem) b2PolygonAndCircleContact(fixtureA, fixtureB);
29
+ }
30
+
31
+ void b2PolygonAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator)
32
+ {
33
+ ((b2PolygonAndCircleContact*)contact)->~b2PolygonAndCircleContact();
34
+ allocator->Free(contact, sizeof(b2PolygonAndCircleContact));
35
+ }
36
+
37
+ b2PolygonAndCircleContact::b2PolygonAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB)
38
+ : b2Contact(fixtureA, 0, fixtureB, 0)
39
+ {
40
+ b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon);
41
+ b2Assert(m_fixtureB->GetType() == b2Shape::e_circle);
42
+ }
43
+
44
+ void b2PolygonAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB)
45
+ {
46
+ b2CollidePolygonAndCircle( manifold,
47
+ (b2PolygonShape*)m_fixtureA->GetShape(), xfA,
48
+ (b2CircleShape*)m_fixtureB->GetShape(), xfB);
49
+ }
@@ -0,0 +1,38 @@
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_POLYGON_AND_CIRCLE_CONTACT_H
20
+ #define B2_POLYGON_AND_CIRCLE_CONTACT_H
21
+
22
+ #include <Box2D/Dynamics/Contacts/b2Contact.h>
23
+
24
+ class b2BlockAllocator;
25
+
26
+ class b2PolygonAndCircleContact : public b2Contact
27
+ {
28
+ public:
29
+ static b2Contact* Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator);
30
+ static void Destroy(b2Contact* contact, b2BlockAllocator* allocator);
31
+
32
+ b2PolygonAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB);
33
+ ~b2PolygonAndCircleContact() {}
34
+
35
+ void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB);
36
+ };
37
+
38
+ #endif
@@ -0,0 +1,52 @@
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
+ #include <Box2D/Dynamics/Contacts/b2PolygonContact.h>
20
+ #include <Box2D/Common/b2BlockAllocator.h>
21
+ #include <Box2D/Collision/b2TimeOfImpact.h>
22
+ #include <Box2D/Dynamics/b2Body.h>
23
+ #include <Box2D/Dynamics/b2Fixture.h>
24
+ #include <Box2D/Dynamics/b2WorldCallbacks.h>
25
+
26
+ #include <new>
27
+
28
+ b2Contact* b2PolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator)
29
+ {
30
+ void* mem = allocator->Allocate(sizeof(b2PolygonContact));
31
+ return new (mem) b2PolygonContact(fixtureA, fixtureB);
32
+ }
33
+
34
+ void b2PolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator)
35
+ {
36
+ ((b2PolygonContact*)contact)->~b2PolygonContact();
37
+ allocator->Free(contact, sizeof(b2PolygonContact));
38
+ }
39
+
40
+ b2PolygonContact::b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB)
41
+ : b2Contact(fixtureA, 0, fixtureB, 0)
42
+ {
43
+ b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon);
44
+ b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon);
45
+ }
46
+
47
+ void b2PolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB)
48
+ {
49
+ b2CollidePolygons( manifold,
50
+ (b2PolygonShape*)m_fixtureA->GetShape(), xfA,
51
+ (b2PolygonShape*)m_fixtureB->GetShape(), xfB);
52
+ }
@@ -0,0 +1,39 @@
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_POLYGON_CONTACT_H
20
+ #define B2_POLYGON_CONTACT_H
21
+
22
+ #include <Box2D/Dynamics/Contacts/b2Contact.h>
23
+
24
+ class b2BlockAllocator;
25
+
26
+ class b2PolygonContact : public b2Contact
27
+ {
28
+ public:
29
+ static b2Contact* Create( b2Fixture* fixtureA, int32 indexA,
30
+ b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator);
31
+ static void Destroy(b2Contact* contact, b2BlockAllocator* allocator);
32
+
33
+ b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB);
34
+ ~b2PolygonContact() {}
35
+
36
+ void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB);
37
+ };
38
+
39
+ #endif