UNPKG

blob2d

Version:

Typed Modular 2D Game Engine for Web

30 lines (25 loc) 782 B
import {BoundingBox} from '../../BoundingBox'; import {TAnyEntity, TAnyTilemap} from '../../types'; import {getTilemapSeparation} from './tilemapSeparation'; import {TCollisionStaticResponse} from './types'; // pre-allocated data const _clone = new BoundingBox(); export function detectTilemapCollision< A extends TAnyEntity, B extends TAnyTilemap >( entity: A, tilemap: B, deltaTime: number, response: TCollisionStaticResponse<A, B> ) { _clone.copy(entity); _clone.translateX(entity.velocity[0] * deltaTime); _clone.translateY(entity.velocity[1] * deltaTime); if (_clone.intersects(tilemap.tileBounds)) { const separation = getTilemapSeparation(tilemap, entity, deltaTime); if (separation) { response(entity, tilemap, separation); } } }