avocado-old/packages/physics/matter/world.js

48 lines
965 B
JavaScript
Raw Normal View History

2019-03-24 03:24:35 -05:00
import {Engine, World as MatterWorld} from 'matter-js';
import {Body} from './body';
import {AbstractWorld} from '../abstract/world';
export class World extends AbstractWorld {
constructor() {
super();
const world = MatterWorld.create({
gravity: {
x: 0,
y: 0,
scale: 0,
},
});
this.engine = Engine.create({
world,
});
this.lastElapsed = undefined;
}
addBody(body) {
MatterWorld.add(this.engine.world, body.matterBody);
}
createBody(shape) {
return new Body(shape);
}
removeBody(body) {
super.removeBody(body);
MatterWorld.remove(this.engine.world, body);
}
tick(elapsed) {
// Milliseconds.
elapsed = elapsed * 1000;
const correction = this.lastElapsed ? elapsed / this.lastElapsed : 1;
// Update simulation.
Engine.update(this.engine, elapsed, correction)
this.lastElapsed = elapsed;
// Propagate.
super.tick(elapsed);
}
}