refactor: forces
This commit is contained in:
parent
68b908ec43
commit
bea551fa19
|
@ -4,6 +4,16 @@ export default class Forces extends Component {
|
||||||
instanceFromSchema() {
|
instanceFromSchema() {
|
||||||
const {ecs} = this;
|
const {ecs} = this;
|
||||||
return class ForcesInstance extends super.instanceFromSchema() {
|
return class ForcesInstance extends super.instanceFromSchema() {
|
||||||
|
applyForce({x, y}) {
|
||||||
|
this.$$forceX += x;
|
||||||
|
this.$$forceY += y;
|
||||||
|
ecs.markChange(this.entity, {
|
||||||
|
Forces: {
|
||||||
|
forceX: this.$$forceX,
|
||||||
|
forceY: this.$$forceY,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
applyImpulse({x, y}) {
|
applyImpulse({x, y}) {
|
||||||
this.$$impulseX += x;
|
this.$$impulseX += x;
|
||||||
this.$$impulseY += y;
|
this.$$impulseY += y;
|
||||||
|
@ -17,6 +27,8 @@ export default class Forces extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static properties = {
|
static properties = {
|
||||||
|
forceX: {type: 'float32'},
|
||||||
|
forceY: {type: 'float32'},
|
||||||
impulseX: {type: 'float32'},
|
impulseX: {type: 'float32'},
|
||||||
impulseY: {type: 'float32'},
|
impulseY: {type: 'float32'},
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,9 +24,9 @@ export default class IntegratePhysics extends System {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Position.lastX = Position.$$x;
|
Position.lastX = Position.$$x;
|
||||||
Position.$$x += elapsed * (Forces.$$impulseX);
|
Position.$$x += elapsed * (Forces.$$impulseX + Forces.$$forceX);
|
||||||
Position.lastY = Position.$$y;
|
Position.lastY = Position.$$y;
|
||||||
Position.$$y += elapsed * (Forces.$$impulseY);
|
Position.$$y += elapsed * (Forces.$$impulseY + Forces.$$forceY);
|
||||||
this.ecs.markChange(
|
this.ecs.markChange(
|
||||||
entity.id, {
|
entity.id, {
|
||||||
Position: {
|
Position: {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user