diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-24 22:40:51 -0600 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-24 22:40:51 -0600 |
commit | c568a8e49aaf64afa5799a9d6d55efafd529f451 (patch) | |
tree | ca0e8d8d4cd6f35905cf0159ddbef7d7b1059a35 | |
parent | f6ffa422d9ebaf9cad966c260c994c731c730ff8 (diff) | |
download | the-abstraction-engine-c568a8e49aaf64afa5799a9d6d55efafd529f451.tar.gz the-abstraction-engine-c568a8e49aaf64afa5799a9d6d55efafd529f451.zip |
filter only colliding and pushable entities in collision test
-rw-r--r-- | src/engine/systems/Grid.ts | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/engine/systems/Grid.ts b/src/engine/systems/Grid.ts index 3c0e995..2eea704 100644 --- a/src/engine/systems/Grid.ts +++ b/src/engine/systems/Grid.ts @@ -139,11 +139,17 @@ export class Grid extends System { ); if (collidingEntities.length > 0) { - // i.e. key going into a door or function going into an application + // ensure everything that is a "pushable" or "colliding" which will collide with the entity + // can actually continue moving in the direction const allEntitiesInPreviousCellCanCollide = Array.from( this.grid[currentPosition.y][currentPosition.x], ) .map((id) => game.getEntity(id)!) + .filter( + (entity) => + entity.hasComponent(ComponentNames.Colliding) || + entity.hasComponent(ComponentNames.Pushable), + ) .every((entity) => collidingEntities.every((collidingEntity) => Collision.canCollide(entity.name, collidingEntity.name), |