Skip to content

Commit

Permalink
added Demo.staticFriction
Browse files Browse the repository at this point in the history
  • Loading branch information
liabru committed May 9, 2015
1 parent de4784c commit 4491dfd
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 4 deletions.
1 change: 1 addition & 0 deletions demo/dev.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ <h1>Matter.js Demo (Dev. Build)</h1>
<option value="restitution">Restitution</option>
<option value="friction">Friction</option>
<option value="airFriction">Air Friction</option>
<option value="staticFriction">Static Friction</option>
<option value="sleeping">Sleeping</option>
<option value="broadphase">Grid Broadphase</option>
<option value="beachBalls">Beach Balls</option>
Expand Down
48 changes: 44 additions & 4 deletions demo/js/Demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -775,8 +775,8 @@
]);

var renderOptions = _engine.render.options;
renderOptions.showAngleIndicator = true;
renderOptions.showCollisions = true;
renderOptions.showAngleIndicator = false;
renderOptions.showVelocity = true;
};

Demo.airFriction = function() {
Expand All @@ -791,8 +791,48 @@
]);

var renderOptions = _engine.render.options;
renderOptions.showAngleIndicator = true;
renderOptions.showCollisions = true;
renderOptions.showAngleIndicator = false;
renderOptions.showVelocity = true;
};

Demo.staticFriction = function() {
var _world = _engine.world;

Demo.reset();

var body = Bodies.rectangle(400, 500, 200, 60, { isStatic: true, chamfer: 10 }),
size = 50,
counter = -1;

var stack = Composites.stack(350, 470 - 6 * size, 1, 6, 0, 0, function(x, y, column, row) {
return Bodies.rectangle(x, y, size * 2, size, {
slop: 0.5,
friction: 1,
frictionStatic: Infinity
});
});

World.add(_world, [body, stack]);

_sceneEvents.push(
Events.on(_engine, 'beforeUpdate', function(event) {
counter += 0.014;

if (counter < 0) {
return;
}

var px = 400 + 100 * Math.sin(counter);

// body is static so must manually update velocity for friction to work
Body.setVelocity(body, { x: px - body.position.x, y: 0 });
Body.setPosition(body, { x: px, y: body.position.y });
})
);

var renderOptions = _engine.render.options;
renderOptions.showAngleIndicator = false;
renderOptions.showVelocity = true;
};

Demo.sleeping = function() {
Expand Down

0 comments on commit 4491dfd

Please sign in to comment.