Skip to content

Commit

Permalink
refactor(touch-manager): use lastframe instead of current frame
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieuher committed Jan 1, 2025
1 parent efeea12 commit c1b630e
Showing 1 changed file with 9 additions and 12 deletions.
21 changes: 9 additions & 12 deletions src/app/game/utils/touch-manager.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Engine, GlobalCoordinates, Vector } from 'excalibur';
import type { Engine, Vector } from 'excalibur';
import { Config } from '../config';

export class TouchManager {
Expand All @@ -12,37 +12,34 @@ export class TouchManager {
}

public get isTouchingBack(): boolean {
const value = Array.from(this.engine.input.pointers.currentFramePointerCoords).findIndex(
v => v[1].pagePos.y > window.innerHeight - Config.TOUCH_BRAKE_ZONE_RATIO * window.innerHeight
const value = Array.from(this.engine.input.pointers.lastFramePointerCoords).findIndex(
p => p[1].pagePos.y > window.innerHeight - Config.TOUCH_BRAKE_ZONE_RATIO * window.innerHeight
);
return value > -1;
}

public get isTouchingRight(): boolean {
const value = Array.from(this.engine.input.pointers.currentFramePointerCoords).findIndex(v => {
const value = Array.from(this.engine.input.pointers.lastFramePointerCoords).findIndex(p => {
return (
v[1].pagePos.y < window.innerHeight - Config.TOUCH_BRAKE_ZONE_RATIO * window.innerHeight &&
v[1].pagePos.x > window.innerWidth / 2
p[1].pagePos.y < window.innerHeight - Config.TOUCH_BRAKE_ZONE_RATIO * window.innerHeight &&
p[1].pagePos.x > window.innerWidth / 2
);
});
return value > -1;
}

public get isTouchingLeft(): boolean {
const value = Array.from(this.engine.input.pointers.currentFramePointerCoords).findIndex(v => {
const value = Array.from(this.engine.input.pointers.lastFramePointerCoords).findIndex(p => {
return (
v[1].pagePos.y < window.innerHeight - Config.TOUCH_BRAKE_ZONE_RATIO * window.innerHeight &&
v[1].pagePos.x < window.innerWidth / 2
p[1].pagePos.y < window.innerHeight - Config.TOUCH_BRAKE_ZONE_RATIO * window.innerHeight &&
p[1].pagePos.x < window.innerWidth / 2
);
});
return value > -1;
}

private listenTouch(): void {
this.engine.input.pointers.on('down', event => {
if (this.engine.input.pointers.count() > 2) {
this.engine.input.pointers.clear();
}
this.recomputeTouchStatus('down', event.pagePos);
});

Expand Down

0 comments on commit c1b630e

Please sign in to comment.