Implement options parameter in FirstPersonNavigationController deactivate method

This commit is contained in:
2026-04-11 05:16:30 +02:00
parent 6f329ed1c1
commit 5dbd68e0ce

View File

@@ -4,6 +4,7 @@ import type { Vec3 } from "../core/vector";
import { getFirstPersonPlayerEyeHeight } from "./player-collision";
import type {
NavigationControllerDeactivateOptions,
NavigationController,
RuntimeControllerContext,
RuntimeLocomotionState
@@ -86,7 +87,10 @@ export class FirstPersonNavigationController implements NavigationController {
this.publishTelemetry();
}
deactivate(ctx: RuntimeControllerContext): void {
deactivate(
ctx: RuntimeControllerContext,
options: NavigationControllerDeactivateOptions = {}
): void {
window.removeEventListener("keydown", this.handleKeyDown);
window.removeEventListener("keyup", this.handleKeyUp);
window.removeEventListener("blur", this.handleBlur);
@@ -102,7 +106,10 @@ export class FirstPersonNavigationController implements NavigationController {
ctx.domElement.removeEventListener("pointerdown", this.handlePointerDown);
this.pressedKeys.clear();
if (document.pointerLockElement === ctx.domElement) {
if (
(options.releasePointerLock ?? true) &&
document.pointerLockElement === ctx.domElement
) {
document.exitPointerLock();
}