diff --git a/demo/dev.html b/demo/dev.html
index 37e0823..ec8ec82 100644
--- a/demo/dev.html
+++ b/demo/dev.html
@@ -33,6 +33,7 @@
+
diff --git a/demo/js/Demo.js b/demo/js/Demo.js
index 85018d1..dd10dd4 100644
--- a/demo/js/Demo.js
+++ b/demo/js/Demo.js
@@ -81,35 +81,104 @@
Demo.mixed = function() {
var _world = _engine.world;
-
- Demo.reset();
-
- var stack = Composites.stack(20, 20, 15, 4, 0, 0, function(x, y, column, row) {
- switch (Math.round(Common.random(0, 1))) {
+ Demo.reset();
+
+ var stack = Composites.stack(20, 20, 15, 4, 0, 0, function(x, y, column, row) {
+ var sides = Math.round(Common.random(1, 8));
+
+ // triangles can be a little unstable, so avoid until fixed
+ // TODO: make triangles more stable
+ sides = (sides === 3) ? 4 : sides;
+
+ // round the edges of some bodies
+ var chamfer = null;
+ if (sides > 2 && Math.random() > 0.7) {
+ chamfer = {
+ radius: 10
+ };
+ }
+
+ switch (Math.round(Common.random(0, 1))) {
case 0:
if (Math.random() < 0.8) {
- return Bodies.rectangle(x, y, Common.random(20, 50), Common.random(20, 50));
+ return Bodies.rectangle(x, y, Common.random(25, 50), Common.random(25, 50), { chamfer: chamfer });
} else {
- return Bodies.rectangle(x, y, Common.random(80, 120), Common.random(20, 30));
+ return Bodies.rectangle(x, y, Common.random(80, 120), Common.random(25, 30), { chamfer: chamfer });
}
break;
case 1:
- var sides = Math.round(Common.random(1, 8));
-
- // triangles can be a little unstable, so avoid until fixed
- // TODO: make triangles more stable
- sides = (sides === 3) ? 4 : sides;
-
- return Bodies.polygon(x, y, sides, Common.random(20, 50));
+ return Bodies.polygon(x, y, sides, Common.random(25, 50), { chamfer: chamfer });
}
});
-
+
World.add(_world, stack);
var renderOptions = _engine.render.options;
};
+ Demo.rounded = function() {
+ var _world = _engine.world;
+
+ Demo.reset();
+
+ //_engine.timing.timeScale = 0;
+
+ World.add(_world, [
+ Bodies.rectangle(200, 200, 100, 100, {
+ chamfer: {
+ radius: 20
+ }
+ }),
+
+ Bodies.rectangle(300, 200, 100, 100, {
+ chamfer: {
+ radius: [90, 0, 0, 0]
+ }
+ }),
+
+ Bodies.rectangle(400, 200, 200, 200, {
+ chamfer: {
+ radius: [150, 20, 40, 20]
+ }
+ }),
+
+ Bodies.rectangle(200, 200, 200, 200, {
+ chamfer: {
+ radius: [150, 20, 150, 20]
+ }
+ }),
+
+ Bodies.rectangle(300, 200, 200, 50, {
+ chamfer: {
+ radius: [25, 25, 0, 0]
+ }
+ }),
+
+ Bodies.polygon(200, 100, 8, 80, {
+ chamfer: {
+ radius: 30
+ }
+ }),
+
+ Bodies.polygon(300, 100, 5, 80, {
+ chamfer: {
+ radius: [10, 40, 20, 40, 10]
+ }
+ }),
+
+ Bodies.polygon(400, 200, 3, 50, {
+ chamfer: {
+ radius: [20, 0, 20]
+ }
+ })
+ ]);
+
+ var renderOptions = _engine.render.options;
+ renderOptions.showAxes = true;
+ renderOptions.showCollisions = true;
+ };
+
Demo.views = function() {
var _world = _engine.world;
@@ -293,15 +362,15 @@
Demo.reset();
- scale = 0.8;
+ scale = 0.9;
World.add(_world, Composites.car(150, 100, 100 * scale, 40 * scale, 30 * scale));
- scale = 0.7;
+ scale = 0.8;
World.add(_world, Composites.car(350, 300, 100 * scale, 40 * scale, 30 * scale));
World.add(_world, [
- Bodies.rectangle(200, 150, 700, 20, { isStatic: true, angle: Math.PI * 0.06 }),
- Bodies.rectangle(500, 350, 700, 20, { isStatic: true, angle: -Math.PI * 0.06 }),
+ Bodies.rectangle(200, 150, 650, 20, { isStatic: true, angle: Math.PI * 0.06 }),
+ Bodies.rectangle(500, 350, 650, 20, { isStatic: true, angle: -Math.PI * 0.06 }),
Bodies.rectangle(340, 580, 700, 20, { isStatic: true, angle: Math.PI * 0.04 })
]);
@@ -941,6 +1010,11 @@
World.add(_engine.world, _mouseConstraint);
});
+ Events.on(_inspector, 'play', function() {
+ _mouseConstraint = MouseConstraint.create(_engine);
+ World.add(_engine.world, _mouseConstraint);
+ });
+
Events.on(_inspector, 'selectStart', function() {
_mouseConstraint.constraint.render.visible = false;
});
diff --git a/src/factory/Composites.js b/src/factory/Composites.js
index 4ca199d..67ace4b 100644
--- a/src/factory/Composites.js
+++ b/src/factory/Composites.js
@@ -233,7 +233,13 @@ var Composites = {};
wheelYOffset = 0;
var car = Composite.create({ label: 'Car' }),
- body = Bodies.trapezoid(xx, yy, width, height, 0.3, { groupId: groupId, friction: 0.01 });
+ body = Bodies.trapezoid(xx, yy, width, height, 0.3, {
+ groupId: groupId,
+ friction: 0.01,
+ chamfer: {
+ radius: 10
+ }
+ });
var wheelA = Bodies.circle(xx + wheelAOffset, yy + wheelYOffset, wheelSize, {
groupId: groupId,