refactor: forces

This commit is contained in:
cha0s 2024-10-17 23:13:53 -05:00
parent 68b908ec43
commit bea551fa19
2 changed files with 14 additions and 2 deletions

View File

@ -4,6 +4,16 @@ export default class Forces extends Component {
instanceFromSchema() {
const {ecs} = this;
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}) {
this.$$impulseX += x;
this.$$impulseY += y;
@ -17,6 +27,8 @@ export default class Forces extends Component {
}
}
static properties = {
forceX: {type: 'float32'},
forceY: {type: 'float32'},
impulseX: {type: 'float32'},
impulseY: {type: 'float32'},
};

View File

@ -24,9 +24,9 @@ export default class IntegratePhysics extends System {
return;
}
Position.lastX = Position.$$x;
Position.$$x += elapsed * (Forces.$$impulseX);
Position.$$x += elapsed * (Forces.$$impulseX + Forces.$$forceX);
Position.lastY = Position.$$y;
Position.$$y += elapsed * (Forces.$$impulseY);
Position.$$y += elapsed * (Forces.$$impulseY + Forces.$$forceY);
this.ecs.markChange(
entity.id, {
Position: {