Add locomotion state and volume checks to navigation controller

This commit is contained in:
2026-04-06 08:21:28 +02:00
parent c5d45fe51d
commit 85f6b4d74a

View File

@@ -9,15 +9,26 @@ export interface FirstPersonTelemetry {
feetPosition: Vec3;
eyePosition: Vec3;
grounded: boolean;
locomotionState: RuntimeLocomotionState;
inWaterVolume: boolean;
inFogVolume: boolean;
pointerLocked: boolean;
spawn: RuntimeSpawnPoint;
}
export type RuntimeLocomotionState = "grounded" | "swimming" | "flying";
export interface RuntimePlayerVolumeState {
inWater: boolean;
inFog: boolean;
}
export interface RuntimeControllerContext {
camera: PerspectiveCamera;
domElement: HTMLCanvasElement;
getRuntimeScene(): RuntimeSceneDefinition;
resolveFirstPersonMotion(feetPosition: Vec3, motion: Vec3, shape: FirstPersonPlayerShape): ResolvedPlayerMotion | null;
resolvePlayerVolumeState(feetPosition: Vec3): RuntimePlayerVolumeState;
setRuntimeMessage(message: string | null): void;
setFirstPersonTelemetry(telemetry: FirstPersonTelemetry | null): void;
}