reflexion 0.1.12 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (329) hide show
  1. checksums.yaml +5 -5
  2. data/.doc/ext/reflex/application.cpp +9 -5
  3. data/.doc/ext/reflex/capture_event.cpp +0 -4
  4. data/.doc/ext/reflex/contact_event.cpp +17 -10
  5. data/.doc/ext/reflex/draw_event.cpp +1 -5
  6. data/.doc/ext/reflex/ellipse_shape.cpp +51 -24
  7. data/.doc/ext/reflex/event.cpp +0 -4
  8. data/.doc/ext/reflex/filter.cpp +81 -0
  9. data/.doc/ext/reflex/focus_event.cpp +9 -13
  10. data/.doc/ext/reflex/frame_event.cpp +40 -6
  11. data/.doc/ext/reflex/image_view.cpp +1 -10
  12. data/.doc/ext/reflex/key_event.cpp +2 -6
  13. data/.doc/ext/reflex/line_shape.cpp +99 -0
  14. data/.doc/ext/reflex/motion_event.cpp +75 -0
  15. data/.doc/ext/reflex/native.cpp +18 -18
  16. data/.doc/ext/reflex/pointer_event.cpp +5 -11
  17. data/.doc/ext/reflex/polygon_shape.cpp +65 -0
  18. data/.doc/ext/reflex/rect_shape.cpp +102 -23
  19. data/.doc/ext/reflex/reflex.cpp +21 -2
  20. data/.doc/ext/reflex/scroll_event.cpp +0 -6
  21. data/.doc/ext/reflex/selector.cpp +43 -15
  22. data/.doc/ext/reflex/shape.cpp +211 -0
  23. data/.doc/ext/reflex/style.cpp +359 -185
  24. data/.doc/ext/reflex/style_length.cpp +163 -35
  25. data/.doc/ext/reflex/timer.cpp +101 -0
  26. data/.doc/ext/reflex/timer_event.cpp +123 -0
  27. data/.doc/ext/reflex/update_event.cpp +11 -6
  28. data/.doc/ext/reflex/view.cpp +548 -144
  29. data/.doc/ext/reflex/wheel_event.cpp +0 -22
  30. data/.doc/ext/reflex/window.cpp +7 -15
  31. data/README.md +1 -1
  32. data/Rakefile +14 -12
  33. data/VERSION +1 -1
  34. data/ext/reflex/application.cpp +10 -5
  35. data/ext/reflex/capture_event.cpp +1 -5
  36. data/ext/reflex/contact_event.cpp +19 -11
  37. data/ext/reflex/defs.h +5 -2
  38. data/ext/reflex/draw_event.cpp +2 -6
  39. data/ext/reflex/ellipse_shape.cpp +56 -25
  40. data/ext/reflex/event.cpp +0 -4
  41. data/ext/reflex/extconf.rb +1 -2
  42. data/ext/reflex/filter.cpp +86 -0
  43. data/ext/reflex/focus_event.cpp +11 -15
  44. data/ext/reflex/frame_event.cpp +46 -7
  45. data/ext/reflex/image_view.cpp +1 -10
  46. data/ext/reflex/key_event.cpp +3 -7
  47. data/ext/reflex/line_shape.cpp +104 -0
  48. data/ext/reflex/motion_event.cpp +79 -0
  49. data/ext/reflex/native.cpp +18 -18
  50. data/ext/reflex/pointer_event.cpp +6 -12
  51. data/ext/reflex/polygon_shape.cpp +68 -0
  52. data/ext/reflex/rect_shape.cpp +113 -24
  53. data/ext/reflex/reflex.cpp +21 -2
  54. data/ext/reflex/scroll_event.cpp +1 -7
  55. data/ext/reflex/selector.cpp +46 -16
  56. data/ext/reflex/selector.h +130 -0
  57. data/ext/reflex/shape.cpp +231 -0
  58. data/ext/reflex/style.cpp +363 -192
  59. data/ext/reflex/style_length.cpp +164 -37
  60. data/ext/reflex/timer.cpp +108 -0
  61. data/ext/reflex/timer_event.cpp +133 -0
  62. data/ext/reflex/update_event.cpp +13 -7
  63. data/ext/reflex/view.cpp +594 -150
  64. data/ext/reflex/wheel_event.cpp +1 -25
  65. data/ext/reflex/window.cpp +7 -15
  66. data/include/reflex/application.h +2 -0
  67. data/include/reflex/debug.h +22 -0
  68. data/include/reflex/defs.h +45 -0
  69. data/include/reflex/event.h +60 -16
  70. data/include/reflex/exception.h +9 -0
  71. data/include/reflex/filter.h +56 -0
  72. data/include/reflex/image_view.h +1 -1
  73. data/include/reflex/ruby/application.h +17 -9
  74. data/include/reflex/ruby/event.h +22 -0
  75. data/include/reflex/ruby/filter.h +69 -0
  76. data/include/reflex/ruby/selector.h +1 -1
  77. data/include/reflex/ruby/shape.h +140 -0
  78. data/include/reflex/ruby/style.h +1 -1
  79. data/include/reflex/ruby/timer.h +69 -0
  80. data/include/reflex/ruby/view.h +43 -76
  81. data/include/reflex/ruby/window.h +17 -32
  82. data/include/reflex/ruby.h +6 -4
  83. data/include/reflex/selector.h +54 -2
  84. data/include/reflex/shape.h +211 -0
  85. data/include/reflex/style.h +111 -77
  86. data/include/reflex/timer.h +73 -0
  87. data/include/reflex/view.h +181 -59
  88. data/include/reflex/window.h +4 -3
  89. data/include/reflex.h +5 -4
  90. data/lib/reflex/application.rb +6 -3
  91. data/lib/reflex/button.rb +2 -2
  92. data/lib/reflex/capture_event.rb +7 -6
  93. data/lib/reflex/contact_event.rb +10 -12
  94. data/lib/reflex/draw_event.rb +6 -1
  95. data/lib/reflex/ellipse_shape.rb +27 -0
  96. data/lib/reflex/filter.rb +18 -0
  97. data/lib/reflex/fixture.rb +4 -0
  98. data/lib/reflex/focus_event.rb +10 -12
  99. data/lib/reflex/frame_event.rb +1 -1
  100. data/lib/reflex/helper.rb +17 -29
  101. data/lib/reflex/key_event.rb +13 -11
  102. data/lib/reflex/line_shape.rb +18 -0
  103. data/lib/reflex/{texture.rb → matrix.rb} +2 -2
  104. data/lib/reflex/module.rb +4 -19
  105. data/lib/reflex/pointer_event.rb +26 -37
  106. data/lib/reflex/polygon.rb +14 -0
  107. data/lib/reflex/polygon_shape.rb +23 -0
  108. data/lib/reflex/polyline.rb +13 -0
  109. data/lib/reflex/rect_shape.rb +20 -0
  110. data/lib/reflex/reflex.rb +1 -3
  111. data/lib/reflex/scroll_event.rb +1 -1
  112. data/lib/reflex/selector.rb +2 -2
  113. data/lib/reflex/shape.rb +62 -0
  114. data/lib/reflex/style.rb +78 -11
  115. data/lib/reflex/style_length.rb +0 -11
  116. data/lib/reflex/text_view.rb +7 -24
  117. data/lib/reflex/timer.rb +30 -0
  118. data/lib/reflex/timer_event.rb +29 -0
  119. data/lib/reflex/update_event.rb +1 -1
  120. data/lib/reflex/view.rb +127 -32
  121. data/lib/reflex/wheel_event.rb +9 -1
  122. data/lib/reflex/window.rb +29 -9
  123. data/lib/reflex.rb +11 -5
  124. data/lib/reflexion.rb +23 -7
  125. data/reflex.gemspec +8 -10
  126. data/samples/bats.rb +4 -4
  127. data/samples/fans.rb +1 -1
  128. data/samples/fps.rb +5 -3
  129. data/samples/hello.rb +4 -6
  130. data/samples/image.rb +5 -4
  131. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
  132. data/samples/layout.rb +16 -7
  133. data/samples/model.rb +10 -7
  134. data/samples/physics.rb +22 -20
  135. data/samples/reflexion/breakout.rb +4 -5
  136. data/samples/reflexion/hello.rb +2 -2
  137. data/samples/reflexion/jump_action.rb +191 -0
  138. data/samples/reflexion/noise.rb +23 -0
  139. data/samples/reflexion/paint.rb +7 -6
  140. data/samples/reflexion/physics.rb +15 -8
  141. data/samples/reflexion/pulse.rb +24 -10
  142. data/samples/shader.rb +8 -6
  143. data/samples/shapes.rb +63 -14
  144. data/samples/tree.rb +9 -10
  145. data/samples/views.rb +3 -3
  146. data/samples/visuals.rb +2 -5
  147. data/src/body.cpp +146 -345
  148. data/src/body.h +91 -0
  149. data/src/event.cpp +66 -16
  150. data/src/exception.cpp +13 -3
  151. data/src/filter.cpp +76 -0
  152. data/src/fixture.cpp +164 -39
  153. data/src/fixture.h +85 -0
  154. data/src/image_view.cpp +4 -4
  155. data/src/ios/app_delegate.h +5 -10
  156. data/src/ios/app_delegate.mm +79 -41
  157. data/src/ios/application.h +32 -0
  158. data/src/ios/application.mm +35 -25
  159. data/src/ios/event.mm +8 -4
  160. data/src/ios/reflex.mm +0 -7
  161. data/src/ios/view_controller.h +33 -0
  162. data/src/ios/view_controller.mm +436 -0
  163. data/src/ios/window.h +40 -0
  164. data/src/ios/window.mm +59 -250
  165. data/src/osx/app_delegate.h +5 -10
  166. data/src/osx/app_delegate.mm +52 -55
  167. data/src/osx/application.h +32 -0
  168. data/src/osx/application.mm +44 -39
  169. data/src/osx/native_window.h +0 -15
  170. data/src/osx/native_window.mm +131 -115
  171. data/src/osx/opengl_view.h +0 -2
  172. data/src/osx/opengl_view.mm +12 -3
  173. data/src/osx/reflex.mm +0 -9
  174. data/src/osx/window.h +42 -0
  175. data/src/osx/window.mm +45 -252
  176. data/src/selector.cpp +232 -7
  177. data/src/selector.h +52 -0
  178. data/src/shape.cpp +1191 -0
  179. data/src/shape.h +61 -0
  180. data/src/style.cpp +571 -374
  181. data/src/style.h +39 -0
  182. data/src/timer.cpp +291 -0
  183. data/src/timer.h +55 -0
  184. data/src/view.cpp +1624 -984
  185. data/src/view.h +56 -0
  186. data/src/win32/window.cpp +3 -4
  187. data/src/window.cpp +275 -20
  188. data/src/window.h +92 -0
  189. data/src/world.cpp +112 -111
  190. data/src/world.h +34 -53
  191. data/task/box2d.rake +31 -10
  192. data/test/test_capture_event.rb +8 -6
  193. data/test/test_pointer_event.rb +85 -0
  194. data/test/test_selector.rb +1 -1
  195. data/test/test_shape.rb +71 -0
  196. data/test/test_style.rb +77 -11
  197. data/test/test_style_length.rb +42 -13
  198. data/test/test_view.rb +138 -14
  199. metadata +109 -210
  200. data/.doc/ext/reflex/arc_shape.cpp +0 -89
  201. data/.doc/ext/reflex/body.cpp +0 -299
  202. data/.doc/ext/reflex/fixture.cpp +0 -101
  203. data/.doc/ext/reflex/shape_view.cpp +0 -153
  204. data/ext/reflex/arc_shape.cpp +0 -94
  205. data/ext/reflex/body.cpp +0 -328
  206. data/ext/reflex/fixture.cpp +0 -108
  207. data/ext/reflex/shape_view.cpp +0 -161
  208. data/include/reflex/bitmap.h +0 -20
  209. data/include/reflex/body.h +0 -128
  210. data/include/reflex/bounds.h +0 -20
  211. data/include/reflex/color.h +0 -20
  212. data/include/reflex/color_space.h +0 -20
  213. data/include/reflex/fixture.h +0 -117
  214. data/include/reflex/font.h +0 -20
  215. data/include/reflex/image.h +0 -20
  216. data/include/reflex/matrix.h +0 -20
  217. data/include/reflex/painter.h +0 -20
  218. data/include/reflex/point.h +0 -24
  219. data/include/reflex/ruby/body.h +0 -41
  220. data/include/reflex/ruby/fixture.h +0 -41
  221. data/include/reflex/ruby/shape_view.h +0 -96
  222. data/include/reflex/shader.h +0 -20
  223. data/include/reflex/shape_view.h +0 -146
  224. data/include/reflex/texture.h +0 -20
  225. data/lib/reflex/body.rb +0 -22
  226. data/lib/reflex/flags.rb +0 -18
  227. data/lib/reflex/shape_view.rb +0 -25
  228. data/src/ios/application_data.h +0 -45
  229. data/src/ios/native_window.h +0 -39
  230. data/src/ios/native_window.mm +0 -224
  231. data/src/ios/opengl_view.h +0 -13
  232. data/src/ios/opengl_view.mm +0 -139
  233. data/src/ios/window_data.h +0 -75
  234. data/src/osx/application_data.h +0 -45
  235. data/src/osx/window_data.h +0 -75
  236. data/src/physics/Box2D/Box2D.h +0 -68
  237. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
  238. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
  239. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
  240. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
  241. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
  242. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
  243. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
  244. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
  245. data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
  246. data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
  247. data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
  248. data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
  249. data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
  250. data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
  251. data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
  252. data/src/physics/Box2D/Collision/b2Collision.h +0 -277
  253. data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
  254. data/src/physics/Box2D/Collision/b2Distance.h +0 -141
  255. data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
  256. data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
  257. data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
  258. data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
  259. data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
  260. data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
  261. data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
  262. data/src/physics/Box2D/Common/b2Draw.h +0 -86
  263. data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
  264. data/src/physics/Box2D/Common/b2Math.cpp +0 -94
  265. data/src/physics/Box2D/Common/b2Math.h +0 -720
  266. data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
  267. data/src/physics/Box2D/Common/b2Settings.h +0 -151
  268. data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
  269. data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
  270. data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
  271. data/src/physics/Box2D/Common/b2Timer.h +0 -50
  272. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
  273. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
  274. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
  275. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
  276. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
  277. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
  278. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
  279. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
  280. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
  281. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
  282. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
  283. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
  284. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
  285. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
  286. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
  287. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
  288. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
  289. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
  290. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
  291. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
  292. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
  293. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
  294. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
  295. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
  296. data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
  297. data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
  298. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
  299. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
  300. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
  301. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
  302. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
  303. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
  304. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
  305. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
  306. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
  307. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
  308. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
  309. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
  310. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
  311. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
  312. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
  313. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
  314. data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
  315. data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
  316. data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
  317. data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
  318. data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
  319. data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
  320. data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
  321. data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
  322. data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
  323. data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
  324. data/src/physics/Box2D/Dynamics/b2World.h +0 -354
  325. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
  326. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
  327. data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
  328. data/src/physics/Box2D/Rope/b2Rope.h +0 -115
  329. data/src/shape_view.cpp +0 -306
@@ -1,259 +0,0 @@
1
- /*
2
- * Copyright (c) 2011 Erin Catto http://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/Rope/b2Rope.h>
20
- #include <Box2D/Common/b2Draw.h>
21
-
22
- b2Rope::b2Rope()
23
- {
24
- m_count = 0;
25
- m_ps = NULL;
26
- m_p0s = NULL;
27
- m_vs = NULL;
28
- m_ims = NULL;
29
- m_Ls = NULL;
30
- m_as = NULL;
31
- m_gravity.SetZero();
32
- m_k2 = 1.0f;
33
- m_k3 = 0.1f;
34
- }
35
-
36
- b2Rope::~b2Rope()
37
- {
38
- b2Free(m_ps);
39
- b2Free(m_p0s);
40
- b2Free(m_vs);
41
- b2Free(m_ims);
42
- b2Free(m_Ls);
43
- b2Free(m_as);
44
- }
45
-
46
- void b2Rope::Initialize(const b2RopeDef* def)
47
- {
48
- b2Assert(def->count >= 3);
49
- m_count = def->count;
50
- m_ps = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2));
51
- m_p0s = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2));
52
- m_vs = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2));
53
- m_ims = (float32*)b2Alloc(m_count * sizeof(float32));
54
-
55
- for (int32 i = 0; i < m_count; ++i)
56
- {
57
- m_ps[i] = def->vertices[i];
58
- m_p0s[i] = def->vertices[i];
59
- m_vs[i].SetZero();
60
-
61
- float32 m = def->masses[i];
62
- if (m > 0.0f)
63
- {
64
- m_ims[i] = 1.0f / m;
65
- }
66
- else
67
- {
68
- m_ims[i] = 0.0f;
69
- }
70
- }
71
-
72
- int32 count2 = m_count - 1;
73
- int32 count3 = m_count - 2;
74
- m_Ls = (float32*)b2Alloc(count2 * sizeof(float32));
75
- m_as = (float32*)b2Alloc(count3 * sizeof(float32));
76
-
77
- for (int32 i = 0; i < count2; ++i)
78
- {
79
- b2Vec2 p1 = m_ps[i];
80
- b2Vec2 p2 = m_ps[i+1];
81
- m_Ls[i] = b2Distance(p1, p2);
82
- }
83
-
84
- for (int32 i = 0; i < count3; ++i)
85
- {
86
- b2Vec2 p1 = m_ps[i];
87
- b2Vec2 p2 = m_ps[i + 1];
88
- b2Vec2 p3 = m_ps[i + 2];
89
-
90
- b2Vec2 d1 = p2 - p1;
91
- b2Vec2 d2 = p3 - p2;
92
-
93
- float32 a = b2Cross(d1, d2);
94
- float32 b = b2Dot(d1, d2);
95
-
96
- m_as[i] = b2Atan2(a, b);
97
- }
98
-
99
- m_gravity = def->gravity;
100
- m_damping = def->damping;
101
- m_k2 = def->k2;
102
- m_k3 = def->k3;
103
- }
104
-
105
- void b2Rope::Step(float32 h, int32 iterations)
106
- {
107
- if (h == 0.0)
108
- {
109
- return;
110
- }
111
-
112
- float32 d = expf(- h * m_damping);
113
-
114
- for (int32 i = 0; i < m_count; ++i)
115
- {
116
- m_p0s[i] = m_ps[i];
117
- if (m_ims[i] > 0.0f)
118
- {
119
- m_vs[i] += h * m_gravity;
120
- }
121
- m_vs[i] *= d;
122
- m_ps[i] += h * m_vs[i];
123
-
124
- }
125
-
126
- for (int32 i = 0; i < iterations; ++i)
127
- {
128
- SolveC2();
129
- SolveC3();
130
- SolveC2();
131
- }
132
-
133
- float32 inv_h = 1.0f / h;
134
- for (int32 i = 0; i < m_count; ++i)
135
- {
136
- m_vs[i] = inv_h * (m_ps[i] - m_p0s[i]);
137
- }
138
- }
139
-
140
- void b2Rope::SolveC2()
141
- {
142
- int32 count2 = m_count - 1;
143
-
144
- for (int32 i = 0; i < count2; ++i)
145
- {
146
- b2Vec2 p1 = m_ps[i];
147
- b2Vec2 p2 = m_ps[i + 1];
148
-
149
- b2Vec2 d = p2 - p1;
150
- float32 L = d.Normalize();
151
-
152
- float32 im1 = m_ims[i];
153
- float32 im2 = m_ims[i + 1];
154
-
155
- if (im1 + im2 == 0.0f)
156
- {
157
- continue;
158
- }
159
-
160
- float32 s1 = im1 / (im1 + im2);
161
- float32 s2 = im2 / (im1 + im2);
162
-
163
- p1 -= m_k2 * s1 * (m_Ls[i] - L) * d;
164
- p2 += m_k2 * s2 * (m_Ls[i] - L) * d;
165
-
166
- m_ps[i] = p1;
167
- m_ps[i + 1] = p2;
168
- }
169
- }
170
-
171
- void b2Rope::SetAngle(float32 angle)
172
- {
173
- int32 count3 = m_count - 2;
174
- for (int32 i = 0; i < count3; ++i)
175
- {
176
- m_as[i] = angle;
177
- }
178
- }
179
-
180
- void b2Rope::SolveC3()
181
- {
182
- int32 count3 = m_count - 2;
183
-
184
- for (int32 i = 0; i < count3; ++i)
185
- {
186
- b2Vec2 p1 = m_ps[i];
187
- b2Vec2 p2 = m_ps[i + 1];
188
- b2Vec2 p3 = m_ps[i + 2];
189
-
190
- float32 m1 = m_ims[i];
191
- float32 m2 = m_ims[i + 1];
192
- float32 m3 = m_ims[i + 2];
193
-
194
- b2Vec2 d1 = p2 - p1;
195
- b2Vec2 d2 = p3 - p2;
196
-
197
- float32 L1sqr = d1.LengthSquared();
198
- float32 L2sqr = d2.LengthSquared();
199
-
200
- if (L1sqr * L2sqr == 0.0f)
201
- {
202
- continue;
203
- }
204
-
205
- float32 a = b2Cross(d1, d2);
206
- float32 b = b2Dot(d1, d2);
207
-
208
- float32 angle = b2Atan2(a, b);
209
-
210
- b2Vec2 Jd1 = (-1.0f / L1sqr) * d1.Skew();
211
- b2Vec2 Jd2 = (1.0f / L2sqr) * d2.Skew();
212
-
213
- b2Vec2 J1 = -Jd1;
214
- b2Vec2 J2 = Jd1 - Jd2;
215
- b2Vec2 J3 = Jd2;
216
-
217
- float32 mass = m1 * b2Dot(J1, J1) + m2 * b2Dot(J2, J2) + m3 * b2Dot(J3, J3);
218
- if (mass == 0.0f)
219
- {
220
- continue;
221
- }
222
-
223
- mass = 1.0f / mass;
224
-
225
- float32 C = angle - m_as[i];
226
-
227
- while (C > b2_pi)
228
- {
229
- angle -= 2 * b2_pi;
230
- C = angle - m_as[i];
231
- }
232
-
233
- while (C < -b2_pi)
234
- {
235
- angle += 2.0f * b2_pi;
236
- C = angle - m_as[i];
237
- }
238
-
239
- float32 impulse = - m_k3 * mass * C;
240
-
241
- p1 += (m1 * impulse) * J1;
242
- p2 += (m2 * impulse) * J2;
243
- p3 += (m3 * impulse) * J3;
244
-
245
- m_ps[i] = p1;
246
- m_ps[i + 1] = p2;
247
- m_ps[i + 2] = p3;
248
- }
249
- }
250
-
251
- void b2Rope::Draw(b2Draw* draw) const
252
- {
253
- b2Color c(0.4f, 0.5f, 0.7f);
254
-
255
- for (int32 i = 0; i < m_count - 1; ++i)
256
- {
257
- draw->DrawSegment(m_ps[i], m_ps[i+1], c);
258
- }
259
- }
@@ -1,115 +0,0 @@
1
- /*
2
- * Copyright (c) 2011 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_ROPE_H
20
- #define B2_ROPE_H
21
-
22
- #include <Box2D/Common/b2Math.h>
23
-
24
- class b2Draw;
25
-
26
- ///
27
- struct b2RopeDef
28
- {
29
- b2RopeDef()
30
- {
31
- vertices = NULL;
32
- count = 0;
33
- masses = NULL;
34
- gravity.SetZero();
35
- damping = 0.1f;
36
- k2 = 0.9f;
37
- k3 = 0.1f;
38
- }
39
-
40
- ///
41
- b2Vec2* vertices;
42
-
43
- ///
44
- int32 count;
45
-
46
- ///
47
- float32* masses;
48
-
49
- ///
50
- b2Vec2 gravity;
51
-
52
- ///
53
- float32 damping;
54
-
55
- /// Stretching stiffness
56
- float32 k2;
57
-
58
- /// Bending stiffness. Values above 0.5 can make the simulation blow up.
59
- float32 k3;
60
- };
61
-
62
- ///
63
- class b2Rope
64
- {
65
- public:
66
- b2Rope();
67
- ~b2Rope();
68
-
69
- ///
70
- void Initialize(const b2RopeDef* def);
71
-
72
- ///
73
- void Step(float32 timeStep, int32 iterations);
74
-
75
- ///
76
- int32 GetVertexCount() const
77
- {
78
- return m_count;
79
- }
80
-
81
- ///
82
- const b2Vec2* GetVertices() const
83
- {
84
- return m_ps;
85
- }
86
-
87
- ///
88
- void Draw(b2Draw* draw) const;
89
-
90
- ///
91
- void SetAngle(float32 angle);
92
-
93
- private:
94
-
95
- void SolveC2();
96
- void SolveC3();
97
-
98
- int32 m_count;
99
- b2Vec2* m_ps;
100
- b2Vec2* m_p0s;
101
- b2Vec2* m_vs;
102
-
103
- float32* m_ims;
104
-
105
- float32* m_Ls;
106
- float32* m_as;
107
-
108
- b2Vec2 m_gravity;
109
- float32 m_damping;
110
-
111
- float32 m_k2;
112
- float32 m_k3;
113
- };
114
-
115
- #endif
data/src/shape_view.cpp DELETED
@@ -1,306 +0,0 @@
1
- #include "reflex/shape_view.h"
2
-
3
-
4
- #include <assert.h>
5
- #include "reflex/exception.h"
6
- #include "reflex/body.h"
7
-
8
-
9
- namespace Reflex
10
- {
11
-
12
-
13
- struct ShapeView::Data
14
- {
15
-
16
- Color fill, stroke;
17
-
18
- Data ()
19
- : fill(1, 1), stroke(0, 0)
20
- {
21
- }
22
-
23
- };// ShapeView::Data
24
-
25
-
26
- ShapeView::ShapeView (const char* name)
27
- : Super(name)
28
- {
29
- }
30
-
31
- ShapeView::~ShapeView ()
32
- {
33
- }
34
-
35
- void
36
- ShapeView::set_fill (float red, float green, float blue, float alpha)
37
- {
38
- self->fill.reset(red, green, blue, alpha);
39
- }
40
-
41
- void
42
- ShapeView::set_fill (const Color& color)
43
- {
44
- self->fill = color;
45
- }
46
-
47
- void
48
- ShapeView::no_fill ()
49
- {
50
- self->fill.alpha = 0;
51
- }
52
-
53
- const Color&
54
- ShapeView::fill () const
55
- {
56
- return self->fill;
57
- }
58
-
59
- void
60
- ShapeView::set_stroke (float red, float green, float blue, float alpha)
61
- {
62
- self->stroke.reset(red, green, blue, alpha);
63
- }
64
-
65
- void
66
- ShapeView::set_stroke (const Color& color)
67
- {
68
- self->stroke = color;
69
- }
70
-
71
- void
72
- ShapeView::no_stroke ()
73
- {
74
- self->stroke.alpha = 0;
75
- }
76
-
77
- const Color&
78
- ShapeView::stroke () const
79
- {
80
- return self->stroke;
81
- }
82
-
83
- Point
84
- ShapeView::content_size () const
85
- {
86
- return frame().size();
87
- }
88
-
89
- void
90
- ShapeView::on_draw (DrawEvent* e)
91
- {
92
- Color& fill = self->fill;
93
- Color& stroke = self->stroke;
94
- if (fill.a <= 0 && stroke.a <= 0) return;
95
-
96
- assert(e && e->painter);
97
- Painter* p = e->painter;
98
-
99
- Color f = p->fill(), s = p->stroke();
100
- p->set_fill(fill);
101
- p->set_stroke(stroke);
102
-
103
- on_draw_shape(e);
104
-
105
- p->set_fill(f);
106
- p->set_stroke(s);
107
- }
108
-
109
- void
110
- ShapeView::on_draw_shape (DrawEvent* e)
111
- {
112
- }
113
-
114
-
115
- struct RectShape::Data
116
- {
117
-
118
- Point round;
119
-
120
- };// RectView::Data
121
-
122
-
123
- RectShape::RectShape (const char* name)
124
- : Super(name)
125
- {
126
- }
127
-
128
- RectShape::~RectShape ()
129
- {
130
- }
131
-
132
- void
133
- RectShape::set_round (coord round)
134
- {
135
- set_round(round, round);
136
- }
137
-
138
- void
139
- RectShape::set_round (coord width, coord height)
140
- {
141
- self->round.reset(width, height);
142
- }
143
-
144
- void
145
- RectShape::set_round (const Point& round)
146
- {
147
- set_round(round.x, round.y);
148
- }
149
-
150
- const Point&
151
- RectShape::round () const
152
- {
153
- return self->round;
154
- }
155
-
156
- void
157
- RectShape::on_draw_shape (DrawEvent* e)
158
- {
159
- assert(e && e->painter);
160
-
161
- const Point& r = self->round;
162
- e->painter->rect(e->bounds, r.x, r.y);
163
- }
164
-
165
-
166
- struct EllipseShape::Data
167
- {
168
-
169
- coord radius_min;
170
-
171
- uint nsegment;
172
-
173
- Data ()
174
- : radius_min(0), nsegment(0)
175
- {
176
- }
177
-
178
- };// EllipseView::Data
179
-
180
-
181
- EllipseShape::EllipseShape (const char* name)
182
- : Super(name)
183
- {
184
- }
185
-
186
- EllipseShape::~EllipseShape ()
187
- {
188
- }
189
-
190
- void
191
- EllipseShape::set_radius_min (coord radius)
192
- {
193
- self->radius_min = radius;
194
- }
195
-
196
- coord
197
- EllipseShape::radius_min () const
198
- {
199
- return self->radius_min;
200
- }
201
-
202
- void
203
- EllipseShape::set_nsegment (uint num_of_segments)
204
- {
205
- self->nsegment = num_of_segments;
206
- }
207
-
208
- uint
209
- EllipseShape::nsegment () const
210
- {
211
- return self->nsegment;
212
- }
213
-
214
- void
215
- EllipseShape::make_body ()
216
- {
217
- Body* b = body();
218
- if (!b) return;
219
-
220
- b->clear_fixtures();
221
-
222
- const Point& size = frame().size();
223
- b->add_ellipse(size.x, size.y, self->radius_min, self->nsegment);
224
- }
225
-
226
- void
227
- EllipseShape::on_draw_shape (DrawEvent* e)
228
- {
229
- assert(e && e->painter);
230
-
231
- e->painter->ellipse(e->bounds, self->radius_min, self->nsegment);
232
- }
233
-
234
-
235
- struct ArcShape::Data
236
- {
237
-
238
- float angle_from, angle_to;
239
-
240
- Data ()
241
- : angle_from(0), angle_to(360)
242
- {
243
- }
244
-
245
- };// ArcView::Data
246
-
247
-
248
- ArcShape::ArcShape (const char* name)
249
- : Super(name)
250
- {
251
- }
252
-
253
- ArcShape::~ArcShape ()
254
- {
255
- }
256
-
257
- void
258
- ArcShape::set_angle_from (float degree)
259
- {
260
- self->angle_from = degree;
261
- }
262
-
263
- float
264
- ArcShape::angle_from () const
265
- {
266
- return self->angle_from;
267
- }
268
-
269
- void
270
- ArcShape::set_angle_to (float degree)
271
- {
272
- self->angle_to = degree;
273
- }
274
-
275
- float
276
- ArcShape::angle_to () const
277
- {
278
- return self->angle_to;
279
- }
280
-
281
- void
282
- ArcShape::make_body ()
283
- {
284
- Body* b = body();
285
- if (!b) return;
286
-
287
- b->clear_fixtures();
288
-
289
- const Point& size = frame().size();
290
- b->add_arc(
291
- size.x, size.y, self->angle_from, self->angle_to,
292
- radius_min(), nsegment());
293
- }
294
-
295
- void
296
- ArcShape::on_draw_shape (DrawEvent* e)
297
- {
298
- assert(e && e->painter);
299
-
300
- e->painter->arc(
301
- e->bounds, self->angle_from, self->angle_to,
302
- radius_min(), nsegment());
303
- }
304
-
305
-
306
- }// Reflex