feat: Integrate climbing state and surface resolution into navigation controller

This commit is contained in:
2026-04-30 00:15:46 +02:00
parent 9229c78de2
commit 2d527db527

View File

@@ -13,6 +13,7 @@ import type {
RuntimeSceneDefinition, RuntimeSceneDefinition,
RuntimeSpawnPoint RuntimeSpawnPoint
} from "./runtime-scene-build"; } from "./runtime-scene-build";
import type { RuntimePlayerClimbSurface } from "./player-climbing";
export interface RuntimeMovementTransitionSignals { export interface RuntimeMovementTransitionSignals {
jumpStarted: boolean; jumpStarted: boolean;
@@ -81,7 +82,8 @@ export type RuntimeLocomotionMode =
| "airborne" | "airborne"
| "flying" | "flying"
| "swimming" | "swimming"
| "diving"; | "diving"
| "climbing";
export type RuntimeAirborneKind = "jumping" | "falling" | null; export type RuntimeAirborneKind = "jumping" | "falling" | null;
export type RuntimeLocomotionGait = export type RuntimeLocomotionGait =
| "idle" | "idle"
@@ -155,6 +157,12 @@ export interface RuntimeControllerContext {
feetPosition: Vec3, feetPosition: Vec3,
shape: FirstPersonPlayerShape shape: FirstPersonPlayerShape
): boolean; ): boolean;
resolvePlayerClimbSurface?(
feetPosition: Vec3,
facingDirection: Vec3,
shape: FirstPersonPlayerShape,
previousSurface?: RuntimePlayerClimbSurface | null
): RuntimePlayerClimbSurface | null;
resolvePlayerVolumeState(feetPosition: Vec3): RuntimePlayerVolumeState; resolvePlayerVolumeState(feetPosition: Vec3): RuntimePlayerVolumeState;
resolveThirdPersonCameraCollision( resolveThirdPersonCameraCollision(
pivot: Vec3, pivot: Vec3,