Add collision radius

This commit is contained in:
Matthias Schiffer 2018-11-05 00:51:30 +01:00
parent 6a02ea105a
commit aee504be88
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C
2 changed files with 77 additions and 2 deletions

View file

@ -39,6 +39,7 @@ export class GameContext {
private readonly entityPos: vec2 = vec2.clone([6, 6]);
private readonly entityMovement: vec2 = vec2.create();
private readonly collisionRadius = 7 / 16;
private readonly walls: LineSegment[] = [
LineSegment.fromPoints(vec2.fromValues(1, 1), vec2.fromValues(11, 1)),
@ -99,10 +100,14 @@ export class GameContext {
const move = new Movement(this.entityPos, dest);
for (const w of this.walls) {
if (!w.collidesMove(dest2, move))
if (!w.collidesMoveCircle(dest2, move, this.collisionRadius))
continue;
if (!vec2.exactEquals(dest, dest2)) {
// Ensure termination
if (vec2.squaredDistance(this.entityPos, dest2) >= vec2.squaredDistance(this.entityPos, dest))
return;
vec2.copy(dest, dest2);
rescan = true;
break;