summaryrefslogtreecommitdiff
path: root/src/systems/physics.js
blob: 0da8b9d1c7ea3dd7defb88ec996096a2e09006fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
game.system.Physics = () => {
  const update = (elapsedTime) => {
    for (let id in game.entities) {
      const entity = game.entities[id];
      if (entity.hasComponent("momentum") && entity.hasComponent("appearance")) {
        const {dx, dy} = entity.components.momentum;
        entity.components.position.x += dx * elapsedTime;
        entity.components.position.y += dy * elapsedTime;
        entity.components.position.x = Math.max(0, Math.min(game.canvas.width - entity.components.appearance.width, entity.components.position.x));
        entity.components.position.y = Math.max(0, Math.min(game.canvas.height - entity.components.appearance.height, entity.components.position.y));
      }
    }
  }
  return { update };
}