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

35 lines
626 B
JavaScript
Raw Normal View History

2019-03-24 01:16:24 -05:00
import {compose, virtualize} from '@avocado/core';
const decorate = compose(
virtualize([
'addBody',
'createBody',
]),
);
class AbstractWorldBase {
constructor() {
this.entities = new Map();
}
associateBodyWithEntity(body, entity) {
this.entities.set(body, entity);
body.position = entity.position;
}
removeBody(body) {
this.entities.delete(body);
}
tick(elapsed) {
// Propagate position updates.
for (const entity of this.entities.values()) {
entity.position = entity.body.position;
}
}
}
export class AbstractWorld extends decorate(AbstractWorldBase) {}