avocado-old/packages/physics/dummy/body.js

41 lines
801 B
JavaScript
Raw Normal View History

2019-03-24 00:46:31 -05:00
import * as I from 'immutable';
2019-04-28 23:45:03 -05:00
import {compose, EventEmitter, virtualize} from '@avocado/core';
2019-03-24 00:46:31 -05:00
import {Rectangle, Vector} from '@avocado/math';
2019-03-24 01:16:24 -05:00
import {AbstractBody} from '../abstract/body';
2019-03-24 00:46:31 -05:00
const decorate = compose(
EventEmitter,
Vector.Mixin('position', 'x', 'y', {
default: [0, 0],
track: true,
}),
);
2019-03-24 01:16:24 -05:00
export class Body extends decorate(AbstractBody) {
2019-03-24 00:46:31 -05:00
constructor(shape) {
2019-03-24 01:16:24 -05:00
super(shape);
2019-03-24 00:46:31 -05:00
this.force = [0, 0];
this.impulse = [0, 0];
this.contacts = I.Set();
}
get aabb() {
return Rectangle.translated(this.shape.aabb, this.position);
}
applyForce(vector) {
this.force = Vector.add(this.force, vector);
}
2019-03-24 03:24:35 -05:00
applyImpulse(vector, elapsed) {
this.impulse = Vector.add(
this.impulse,
Vector.scale(vector, elapsed)
);
2019-03-24 00:46:31 -05:00
}
}