From 7f3cae74d925921652d2a3a2f201a80f926f5306 Mon Sep 17 00:00:00 2001 From: Erik Onarheim Date: Tue, 15 Oct 2024 08:41:47 -0500 Subject: [PATCH] fix: [#3087] `blockInput: true` blocks input accessors (#3235) Closes #3087 --- CHANGELOG.md | 1 + src/engine/Input/Keyboard.ts | 9 +++++++++ src/engine/Input/PointerEventReceiver.ts | 15 +++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a89c2616..601f14113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,7 @@ are doing mtv adjustments during precollision. ### Fixed +- Fixed issue where `blockInput: true` on scene transition only blocked input events, not accessors like `wasHeld(...)` etc. - Fixed issue where users could not easily define a custom `RendererPlugin` because the type was not exposed - Fixed issue where `ex.Fade` sometimes would not complete depending on the elapsed time - Fixed issue where `ex.PolygonColliders` would get trapped in infinite loop for degenerate polygons (< 3 vertices) diff --git a/src/engine/Input/Keyboard.ts b/src/engine/Input/Keyboard.ts index 1b7cd5fef..f44d48493 100644 --- a/src/engine/Input/Keyboard.ts +++ b/src/engine/Input/Keyboard.ts @@ -417,6 +417,9 @@ export class Keyboard { * @param key Test whether a key was just pressed */ public wasPressed(key: Keys): boolean { + if (!this._enabled) { + return false; + } return this._keysDown.indexOf(key) > -1; } @@ -425,6 +428,9 @@ export class Keyboard { * @param key Test whether a key is held down */ public isHeld(key: Keys): boolean { + if (!this._enabled) { + return false; + } return this._keys.indexOf(key) > -1; } @@ -433,6 +439,9 @@ export class Keyboard { * @param key Test whether a key was just released */ public wasReleased(key: Keys): boolean { + if (!this._enabled) { + return false; + } return this._keysUp.indexOf(key) > -1; } diff --git a/src/engine/Input/PointerEventReceiver.ts b/src/engine/Input/PointerEventReceiver.ts index ae1c11fcd..c0e329f0f 100644 --- a/src/engine/Input/PointerEventReceiver.ts +++ b/src/engine/Input/PointerEventReceiver.ts @@ -124,6 +124,9 @@ export class PointerEventReceiver { * @param pointerId */ public isDown(pointerId: number) { + if (!this._enabled) { + return false; + } return this.currentFramePointerDown.get(pointerId) ?? false; } @@ -132,6 +135,9 @@ export class PointerEventReceiver { * @param pointerId */ public wasDown(pointerId: number) { + if (!this._enabled) { + return false; + } return this.lastFramePointerDown.get(pointerId) ?? false; } @@ -139,6 +145,9 @@ export class PointerEventReceiver { * Whether the Pointer is currently dragging. */ public isDragging(pointerId: number): boolean { + if (!this._enabled) { + return false; + } return this.isDown(pointerId); } @@ -146,6 +155,9 @@ export class PointerEventReceiver { * Whether the Pointer just started dragging. */ public isDragStart(pointerId: number): boolean { + if (!this._enabled) { + return false; + } return this.isDown(pointerId) && !this.wasDown(pointerId); } @@ -153,6 +165,9 @@ export class PointerEventReceiver { * Whether the Pointer just ended dragging. */ public isDragEnd(pointerId: number): boolean { + if (!this._enabled) { + return false; + } return !this.isDown(pointerId) && this.wasDown(pointerId); }