box2d-rails 0.0.1

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 (73) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +29 -0
  5. data/Rakefile +1 -0
  6. data/box2d-rails.gemspec +20 -0
  7. data/lib/box2d-rails.rb +8 -0
  8. data/lib/box2d-rails/version.rb +5 -0
  9. data/vendor/assets/javascripts/box2d/collision/ClipVertex.js +35 -0
  10. data/vendor/assets/javascripts/box2d/collision/Features.js +61 -0
  11. data/vendor/assets/javascripts/box2d/collision/b2AABB.js +45 -0
  12. data/vendor/assets/javascripts/box2d/collision/b2Bound.js +43 -0
  13. data/vendor/assets/javascripts/box2d/collision/b2BoundValues.js +31 -0
  14. data/vendor/assets/javascripts/box2d/collision/b2BroadPhase.js +898 -0
  15. data/vendor/assets/javascripts/box2d/collision/b2BufferedPair.js +26 -0
  16. data/vendor/assets/javascripts/box2d/collision/b2Collision.js +738 -0
  17. data/vendor/assets/javascripts/box2d/collision/b2ContactID.js +52 -0
  18. data/vendor/assets/javascripts/box2d/collision/b2ContactPoint.js +35 -0
  19. data/vendor/assets/javascripts/box2d/collision/b2Distance.js +333 -0
  20. data/vendor/assets/javascripts/box2d/collision/b2Manifold.js +34 -0
  21. data/vendor/assets/javascripts/box2d/collision/b2OBB.js +34 -0
  22. data/vendor/assets/javascripts/box2d/collision/b2Pair.js +60 -0
  23. data/vendor/assets/javascripts/box2d/collision/b2PairCallback.js +34 -0
  24. data/vendor/assets/javascripts/box2d/collision/b2PairManager.js +386 -0
  25. data/vendor/assets/javascripts/box2d/collision/b2Proxy.js +40 -0
  26. data/vendor/assets/javascripts/box2d/collision/shapes/b2BoxDef.js +49 -0
  27. data/vendor/assets/javascripts/box2d/collision/shapes/b2CircleDef.js +49 -0
  28. data/vendor/assets/javascripts/box2d/collision/shapes/b2CircleShape.js +198 -0
  29. data/vendor/assets/javascripts/box2d/collision/shapes/b2MassData.js +36 -0
  30. data/vendor/assets/javascripts/box2d/collision/shapes/b2PolyDef.js +58 -0
  31. data/vendor/assets/javascripts/box2d/collision/shapes/b2PolyShape.js +492 -0
  32. data/vendor/assets/javascripts/box2d/collision/shapes/b2Shape.js +339 -0
  33. data/vendor/assets/javascripts/box2d/collision/shapes/b2ShapeDef.js +109 -0
  34. data/vendor/assets/javascripts/box2d/common/b2Settings.js +72 -0
  35. data/vendor/assets/javascripts/box2d/common/math/b2Mat22.js +130 -0
  36. data/vendor/assets/javascripts/box2d/common/math/b2Math.js +218 -0
  37. data/vendor/assets/javascripts/box2d/common/math/b2Vec2.js +131 -0
  38. data/vendor/assets/javascripts/box2d/dynamics/b2Body.js +469 -0
  39. data/vendor/assets/javascripts/box2d/dynamics/b2BodyDef.js +69 -0
  40. data/vendor/assets/javascripts/box2d/dynamics/b2CollisionFilter.js +42 -0
  41. data/vendor/assets/javascripts/box2d/dynamics/b2ContactManager.js +337 -0
  42. data/vendor/assets/javascripts/box2d/dynamics/b2Island.js +331 -0
  43. data/vendor/assets/javascripts/box2d/dynamics/b2TimeStep.js +27 -0
  44. data/vendor/assets/javascripts/box2d/dynamics/b2World.js +522 -0
  45. data/vendor/assets/javascripts/box2d/dynamics/b2WorldListener.js +52 -0
  46. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2CircleContact.js +102 -0
  47. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2Conservative.js +228 -0
  48. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2Contact.js +201 -0
  49. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2ContactConstraint.js +45 -0
  50. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2ContactConstraintPoint.js +40 -0
  51. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2ContactNode.js +33 -0
  52. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2ContactRegister.js +30 -0
  53. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2ContactSolver.js +537 -0
  54. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2NullContact.js +65 -0
  55. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2PolyAndCircleContact.js +103 -0
  56. data/vendor/assets/javascripts/box2d/dynamics/contacts/b2PolyContact.js +163 -0
  57. data/vendor/assets/javascripts/box2d/dynamics/joints/b2DistanceJoint.js +264 -0
  58. data/vendor/assets/javascripts/box2d/dynamics/joints/b2DistanceJointDef.js +49 -0
  59. data/vendor/assets/javascripts/box2d/dynamics/joints/b2GearJoint.js +307 -0
  60. data/vendor/assets/javascripts/box2d/dynamics/joints/b2GearJointDef.js +50 -0
  61. data/vendor/assets/javascripts/box2d/dynamics/joints/b2Jacobian.js +49 -0
  62. data/vendor/assets/javascripts/box2d/dynamics/joints/b2Joint.js +200 -0
  63. data/vendor/assets/javascripts/box2d/dynamics/joints/b2JointDef.js +40 -0
  64. data/vendor/assets/javascripts/box2d/dynamics/joints/b2JointNode.js +33 -0
  65. data/vendor/assets/javascripts/box2d/dynamics/joints/b2MouseJoint.js +234 -0
  66. data/vendor/assets/javascripts/box2d/dynamics/joints/b2MouseJointDef.js +53 -0
  67. data/vendor/assets/javascripts/box2d/dynamics/joints/b2PrismaticJoint.js +676 -0
  68. data/vendor/assets/javascripts/box2d/dynamics/joints/b2PrismaticJointDef.js +56 -0
  69. data/vendor/assets/javascripts/box2d/dynamics/joints/b2PulleyJoint.js +618 -0
  70. data/vendor/assets/javascripts/box2d/dynamics/joints/b2PulleyJointDef.js +70 -0
  71. data/vendor/assets/javascripts/box2d/dynamics/joints/b2RevoluteJoint.js +491 -0
  72. data/vendor/assets/javascripts/box2d/dynamics/joints/b2RevoluteJointDef.js +55 -0
  73. metadata +133 -0
@@ -0,0 +1,339 @@
1
+ /*
2
+ * Copyright (c) 2006-2007 Erin Catto http:
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, and must not be
15
+ * misrepresented the original software.
16
+ * 3. This notice may not be removed or altered from any source distribution.
17
+ */
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+ // Shapes are created automatically when a body is created.
27
+ // Client code does not normally interact with shapes.
28
+ var b2Shape = Class.create();
29
+ b2Shape.prototype =
30
+ {
31
+ TestPoint: function(p){return false},
32
+
33
+ GetUserData: function(){return this.m_userData;},
34
+
35
+ GetType: function(){
36
+ return this.m_type;
37
+ },
38
+
39
+ // Get the parent body of this shape.
40
+ GetBody: function(){
41
+ return this.m_body;
42
+ },
43
+
44
+ GetPosition: function(){
45
+ return this.m_position;
46
+ },
47
+ GetRotationMatrix: function(){
48
+ return this.m_R;
49
+ },
50
+
51
+ // Remove and then add proxy from the broad-phase.
52
+ // This is used to refresh the collision filters.
53
+ ResetProxy: function(broadPhase){},
54
+
55
+ // Get the next shape in the parent body's shape list.
56
+ GetNext: function(){
57
+ return this.m_next;
58
+ },
59
+
60
+ //--------------- Internals Below -------------------
61
+
62
+
63
+
64
+
65
+ initialize: function(def, body){
66
+ // initialize instance variables for references
67
+ this.m_R = new b2Mat22();
68
+ this.m_position = new b2Vec2();
69
+ //
70
+
71
+ this.m_userData = def.userData;
72
+
73
+ this.m_friction = def.friction;
74
+ this.m_restitution = def.restitution;
75
+ this.m_body = body;
76
+
77
+ this.m_proxyId = b2Pair.b2_nullProxy;
78
+
79
+ this.m_maxRadius = 0.0;
80
+
81
+ this.m_categoryBits = def.categoryBits;
82
+ this.m_maskBits = def.maskBits;
83
+ this.m_groupIndex = def.groupIndex;
84
+ },
85
+
86
+ // Internal use only. Do not call.
87
+ //b2Shape::~b2Shape()
88
+ //{
89
+ // this.m_body->m_world->m_broadPhase->this.DestroyProxy(this.m_proxyId);
90
+ //}
91
+
92
+
93
+ DestroyProxy: function()
94
+ {
95
+ if (this.m_proxyId != b2Pair.b2_nullProxy)
96
+ {
97
+ this.m_body.m_world.m_broadPhase.DestroyProxy(this.m_proxyId);
98
+ this.m_proxyId = b2Pair.b2_nullProxy;
99
+ }
100
+ },
101
+
102
+
103
+ // Internal use only. Do not call.
104
+ Synchronize: function(position1, R1, position2, R2){},
105
+ QuickSync: function(position, R){},
106
+ Support: function(dX, dY, out){},
107
+ GetMaxRadius: function(){
108
+ return this.m_maxRadius;
109
+ },
110
+
111
+ m_next: null,
112
+
113
+ m_R: new b2Mat22(),
114
+ m_position: new b2Vec2(),
115
+
116
+ m_type: 0,
117
+
118
+ m_userData: null,
119
+
120
+ m_body: null,
121
+
122
+ m_friction: null,
123
+ m_restitution: null,
124
+
125
+ m_maxRadius: null,
126
+
127
+ m_proxyId: 0,
128
+ m_categoryBits: 0,
129
+ m_maskBits: 0,
130
+ m_groupIndex: 0
131
+
132
+
133
+
134
+ // b2ShapeType
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+ };
148
+
149
+
150
+ b2Shape.Create = function(def, body, center){
151
+ switch (def.type)
152
+ {
153
+ case b2Shape.e_circleShape:
154
+ {
155
+ //void* mem = body->m_world->m_blockAllocator.Allocate(sizeof(b2CircleShape));
156
+ return new b2CircleShape(def, body, center);
157
+ }
158
+
159
+ case b2Shape.e_boxShape:
160
+ case b2Shape.e_polyShape:
161
+ {
162
+ //void* mem = body->m_world->m_blockAllocator.Allocate(sizeof(b2PolyShape));
163
+ return new b2PolyShape(def, body, center);
164
+ }
165
+ }
166
+
167
+ //b2Settings.b2Assert(false);
168
+ return null;
169
+ };
170
+ b2Shape.Destroy = function(shape)
171
+ {
172
+ /*b2BlockAllocator& allocator = shape->m_body->m_world->m_blockAllocator;
173
+
174
+ switch (shape.m_type)
175
+ {
176
+ case b2Shape.e_circleShape:
177
+ shape->~b2Shape();
178
+ allocator.Free(shape, sizeof(b2CircleShape));
179
+ break;
180
+
181
+ case b2Shape.e_polyShape:
182
+ shape->~b2Shape();
183
+ allocator.Free(shape, sizeof(b2PolyShape));
184
+ break;
185
+
186
+ default:
187
+ b2Assert(false);
188
+ }
189
+
190
+ shape = NULL;*/
191
+
192
+ // FROM DESTRUCTOR
193
+ if (shape.m_proxyId != b2Pair.b2_nullProxy)
194
+ shape.m_body.m_world.m_broadPhase.DestroyProxy(shape.m_proxyId);
195
+ };
196
+ b2Shape.e_unknownShape = -1;
197
+ b2Shape.e_circleShape = 0;
198
+ b2Shape.e_boxShape = 1;
199
+ b2Shape.e_polyShape = 2;
200
+ b2Shape.e_meshShape = 3;
201
+ b2Shape.e_shapeTypeCount = 4;
202
+ b2Shape.PolyMass = function(massData, vs, count, rho)
203
+ {
204
+ //b2Settings.b2Assert(count >= 3);
205
+
206
+ //var center = new b2Vec2(0.0, 0.0);
207
+ var center = new b2Vec2();
208
+ center.SetZero();
209
+
210
+ var area = 0.0;
211
+ var I = 0.0;
212
+
213
+ // pRef is the reference point for forming triangles.
214
+ // It's location doesn't change the result (except for rounding error).
215
+ var pRef = new b2Vec2(0.0, 0.0);
216
+
217
+ var inv3 = 1.0 / 3.0;
218
+
219
+ for (var i = 0; i < count; ++i)
220
+ {
221
+ // Triangle vertices.
222
+ var p1 = pRef;
223
+ var p2 = vs[i];
224
+ var p3 = i + 1 < count ? vs[i+1] : vs[0];
225
+
226
+ var e1 = b2Math.SubtractVV(p2, p1);
227
+ var e2 = b2Math.SubtractVV(p3, p1);
228
+
229
+ var D = b2Math.b2CrossVV(e1, e2);
230
+
231
+ var triangleArea = 0.5 * D;
232
+ area += triangleArea;
233
+
234
+ // Area weighted centroid
235
+ // center += triangleArea * inv3 * (p1 + p2 + p3);
236
+ var tVec = new b2Vec2();
237
+ tVec.SetV(p1);
238
+ tVec.Add(p2);
239
+ tVec.Add(p3);
240
+ tVec.Multiply(inv3*triangleArea);
241
+ center.Add(tVec);
242
+
243
+ var px = p1.x;
244
+ var py = p1.y;
245
+ var ex1 = e1.x;
246
+ var ey1 = e1.y;
247
+ var ex2 = e2.x;
248
+ var ey2 = e2.y;
249
+
250
+ var intx2 = inv3 * (0.25 * (ex1*ex1 + ex2*ex1 + ex2*ex2) + (px*ex1 + px*ex2)) + 0.5*px*px;
251
+ var inty2 = inv3 * (0.25 * (ey1*ey1 + ey2*ey1 + ey2*ey2) + (py*ey1 + py*ey2)) + 0.5*py*py;
252
+
253
+ I += D * (intx2 + inty2);
254
+ }
255
+
256
+ // Total mass
257
+ massData.mass = rho * area;
258
+
259
+ // Center of mass
260
+ //b2Settings.b2Assert(area > Number.MIN_VALUE);
261
+ center.Multiply( 1.0 / area );
262
+ massData.center = center;
263
+
264
+ // Inertia tensor relative to the center.
265
+ I = rho * (I - area * b2Math.b2Dot(center, center));
266
+ massData.I = I;
267
+ };
268
+ b2Shape.PolyCentroid = function(vs, count, out)
269
+ {
270
+ //b2Settings.b2Assert(count >= 3);
271
+
272
+ //b2Vec2 c; c.Set(0.0f, 0.0f);
273
+ var cX = 0.0;
274
+ var cY = 0.0;
275
+ //float32 area = 0.0f;
276
+ var area = 0.0;
277
+
278
+ // pRef is the reference point for forming triangles.
279
+ // It's location doesn't change the result (except for rounding error).
280
+ //b2Vec2 pRef(0.0f, 0.0f);
281
+ var pRefX = 0.0;
282
+ var pRefY = 0.0;
283
+ /*
284
+ // This code would put the reference point inside the polygon.
285
+ for (var i = 0; i < count; ++i)
286
+ {
287
+ //pRef += vs[i];
288
+ pRef.x += vs[i].x;
289
+ pRef.y += vs[i].y;
290
+ }
291
+ pRef.x *= 1.0 / count;
292
+ pRef.y *= 1.0 / count;
293
+ */
294
+
295
+ //const float32 inv3 = 1.0f / 3.0f;
296
+ var inv3 = 1.0 / 3.0;
297
+
298
+ for (var i = 0; i < count; ++i)
299
+ {
300
+ // Triangle vertices.
301
+ //b2Vec2 p1 = pRef;
302
+ var p1X = pRefX;
303
+ var p1Y = pRefY;
304
+ //b2Vec2 p2 = vs[i];
305
+ var p2X = vs[i].x;
306
+ var p2Y = vs[i].y;
307
+ //b2Vec2 p3 = i + 1 < count ? vs[i+1] : vs[0];
308
+ var p3X = i + 1 < count ? vs[i+1].x : vs[0].x;
309
+ var p3Y = i + 1 < count ? vs[i+1].y : vs[0].y;
310
+
311
+ //b2Vec2 e1 = p2 - p1;
312
+ var e1X = p2X - p1X;
313
+ var e1Y = p2Y - p1Y;
314
+ //b2Vec2 e2 = p3 - p1;
315
+ var e2X = p3X - p1X;
316
+ var e2Y = p3Y - p1Y;
317
+
318
+ //float32 D = b2Cross(e1, e2);
319
+ var D = (e1X * e2Y - e1Y * e2X);
320
+
321
+ //float32 triangleArea = 0.5f * D;
322
+ var triangleArea = 0.5 * D;
323
+ area += triangleArea;
324
+
325
+ // Area weighted centroid
326
+ //c += triangleArea * inv3 * (p1 + p2 + p3);
327
+ cX += triangleArea * inv3 * (p1X + p2X + p3X);
328
+ cY += triangleArea * inv3 * (p1Y + p2Y + p3Y);
329
+ }
330
+
331
+ // Centroid
332
+ //b2Settings.b2Assert(area > Number.MIN_VALUE);
333
+ cX *= 1.0 / area;
334
+ cY *= 1.0 / area;
335
+
336
+ // Replace return with 'out' vector
337
+ //return c;
338
+ out.Set(cX, cY);
339
+ };
@@ -0,0 +1,109 @@
1
+ /*
2
+ * Copyright (c) 2006-2007 Erin Catto http:
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, and must not be
15
+ * misrepresented the original software.
16
+ * 3. This notice may not be removed or altered from any source distribution.
17
+ */
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+ var b2ShapeDef = Class.create();
26
+ b2ShapeDef.prototype =
27
+ {
28
+ initialize: function()
29
+ {
30
+ this.type = b2Shape.e_unknownShape;
31
+ this.userData = null;
32
+ this.localPosition = new b2Vec2(0.0, 0.0);
33
+ this.localRotation = 0.0;
34
+ this.friction = 0.2;
35
+ this.restitution = 0.0;
36
+ this.density = 0.0;
37
+ this.categoryBits = 0x0001;
38
+ this.maskBits = 0xFFFF;
39
+ this.groupIndex = 0;
40
+ },
41
+
42
+ //virtual ~b2ShapeDef() {}
43
+
44
+ ComputeMass: function(massData)
45
+ {
46
+
47
+ massData.center = new b2Vec2(0.0, 0.0)
48
+
49
+ if (this.density == 0.0)
50
+ {
51
+ massData.mass = 0.0;
52
+ massData.center.Set(0.0, 0.0);
53
+ massData.I = 0.0;
54
+ };
55
+
56
+ switch (this.type)
57
+ {
58
+ case b2Shape.e_circleShape:
59
+ {
60
+ var circle = this;
61
+ massData.mass = this.density * b2Settings.b2_pi * circle.radius * circle.radius;
62
+ massData.center.Set(0.0, 0.0);
63
+ massData.I = 0.5 * (massData.mass) * circle.radius * circle.radius;
64
+ }
65
+ break;
66
+
67
+ case b2Shape.e_boxShape:
68
+ {
69
+ var box = this;
70
+ massData.mass = 4.0 * this.density * box.extents.x * box.extents.y;
71
+ massData.center.Set(0.0, 0.0);
72
+ massData.I = massData.mass / 3.0 * b2Math.b2Dot(box.extents, box.extents);
73
+ }
74
+ break;
75
+
76
+ case b2Shape.e_polyShape:
77
+ {
78
+ var poly = this;
79
+ b2Shape.PolyMass(massData, poly.vertices, poly.vertexCount, this.density);
80
+ }
81
+ break;
82
+
83
+ default:
84
+ massData.mass = 0.0;
85
+ massData.center.Set(0.0, 0.0);
86
+ massData.I = 0.0;
87
+ break;
88
+ }
89
+ },
90
+
91
+ type: 0,
92
+ userData: null,
93
+ localPosition: null,
94
+ localRotation: null,
95
+ friction: null,
96
+ restitution: null,
97
+ density: null,
98
+
99
+ // The collision category bits. Normally you would just set one bit.
100
+ categoryBits: 0,
101
+
102
+ // The collision mask bits. This states the categories that this
103
+ // shape would accept for collision.
104
+ maskBits: 0,
105
+
106
+ // Collision groups allow a certain group of objects to never collide (negative)
107
+ // or always collide (positive). Zero means no collision group. Non-zero group
108
+ // filtering always wins against the mask bits.
109
+ groupIndex: 0};
@@ -0,0 +1,72 @@
1
+ /*
2
+ * Copyright (c) 2006-2007 Erin Catto http:
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, and must not be
15
+ * misrepresented the original software.
16
+ * 3. This notice may not be removed or altered from any source distribution.
17
+ */
18
+
19
+
20
+
21
+
22
+
23
+ var b2Settings = Class.create();
24
+ b2Settings.prototype = {
25
+
26
+
27
+
28
+ // Define your unit system here. The default system is
29
+ // meters-kilograms-seconds. For the tuning to work well,
30
+ // your dynamic objects should be bigger than a pebble and smaller
31
+ // than a house.
32
+ //static public const b2Settings.b2_lengthUnitsPerMeter = 1.0;
33
+
34
+ // Use this for pixels:
35
+
36
+ // Global tuning constants based on MKS units.
37
+
38
+ // Collision
39
+
40
+ // Dynamics
41
+
42
+ // Sleep
43
+
44
+ // assert
45
+
46
+ initialize: function() {}}
47
+ b2Settings.USHRT_MAX = 0x0000ffff;
48
+ b2Settings.b2_pi = Math.PI;
49
+ b2Settings.b2_massUnitsPerKilogram = 1.0;
50
+ b2Settings.b2_timeUnitsPerSecond = 1.0;
51
+ b2Settings.b2_lengthUnitsPerMeter = 30.0;
52
+ b2Settings.b2_maxManifoldPoints = 2;
53
+ b2Settings.b2_maxShapesPerBody = 64;
54
+ b2Settings.b2_maxPolyVertices = 8;
55
+ b2Settings.b2_maxProxies = 1024;
56
+ b2Settings.b2_maxPairs = 8 * b2Settings.b2_maxProxies;
57
+ b2Settings.b2_linearSlop = 0.005 * b2Settings.b2_lengthUnitsPerMeter;
58
+ b2Settings.b2_angularSlop = 2.0 / 180.0 * b2Settings.b2_pi;
59
+ b2Settings.b2_velocityThreshold = 1.0 * b2Settings.b2_lengthUnitsPerMeter / b2Settings.b2_timeUnitsPerSecond;
60
+ b2Settings.b2_maxLinearCorrection = 0.2 * b2Settings.b2_lengthUnitsPerMeter;
61
+ b2Settings.b2_maxAngularCorrection = 8.0 / 180.0 * b2Settings.b2_pi;
62
+ b2Settings.b2_contactBaumgarte = 0.2;
63
+ b2Settings.b2_timeToSleep = 0.5 * b2Settings.b2_timeUnitsPerSecond;
64
+ b2Settings.b2_linearSleepTolerance = 0.01 * b2Settings.b2_lengthUnitsPerMeter / b2Settings.b2_timeUnitsPerSecond;
65
+ b2Settings.b2_angularSleepTolerance = 2.0 / 180.0 / b2Settings.b2_timeUnitsPerSecond;
66
+ b2Settings.b2Assert = function(a)
67
+ {
68
+ if (!a){
69
+ var nullVec;
70
+ nullVec.x++;
71
+ }
72
+ };