From f86cb8cadf62c6b9731e5cb9a78e2eb77397d0cc Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 11 Apr 2026 19:06:34 +0200 Subject: [PATCH] Update runtime-host.ts with new telemetry and hook states --- src/runtime-three/runtime-host.ts | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/runtime-three/runtime-host.ts b/src/runtime-three/runtime-host.ts index 28755832..e4a5e74c 100644 --- a/src/runtime-three/runtime-host.ts +++ b/src/runtime-three/runtime-host.ts @@ -64,12 +64,15 @@ import { import { FirstPersonNavigationController } from "./first-person-navigation-controller"; import type { - FirstPersonTelemetry, NavigationController, + PlayerControllerTelemetry, + RuntimePlayerAnimationHookState, RuntimeControllerContext, + RuntimePlayerAudioHookState, RuntimePlayerVolumeState } from "./navigation-controller"; import { RapierCollisionWorld } from "./rapier-collision-world"; +import { createEmptyRuntimeMovementTransitionSignals } from "./player-controller-telemetry"; import { RuntimeInteractionSystem, type RuntimeInteractionDispatcher, @@ -185,8 +188,8 @@ export class RuntimeHost { private activeController: NavigationController | null = null; private runtimeMessageHandler: ((message: string | null) => void) | null = null; - private firstPersonTelemetryHandler: - | ((telemetry: FirstPersonTelemetry | null) => void) + private playerControllerTelemetryHandler: + | ((telemetry: PlayerControllerTelemetry | null) => void) | null = null; private interactionPromptHandler: | ((prompt: RuntimeInteractionPrompt | null) => void) @@ -198,9 +201,19 @@ export class RuntimeHost { | ((request: RuntimeSceneExitTransitionRequest) => void) | null = null; private currentRuntimeMessage: string | null = null; - private currentFirstPersonTelemetry: FirstPersonTelemetry | null = null; + private currentPlayerControllerTelemetry: PlayerControllerTelemetry | null = + null; private currentInteractionPrompt: RuntimeInteractionPrompt | null = null; private currentSceneLoadState: RuntimeSceneLoadState | null = null; + private currentPlayerAnimationHooks: RuntimePlayerAnimationHookState | null = + null; + private currentPlayerAudioHooks: RuntimePlayerAudioHookState | null = null; + private cameraEffectVerticalOffset = 0; + private cameraEffectVerticalVelocity = 0; + private cameraEffectPitchOffset = 0; + private cameraEffectPitchVelocity = 0; + private cameraEffectRollOffset = 0; + private baseCameraFov = 70; constructor(options: { enableRendering?: boolean } = {}) { const enableRendering = options.enableRendering ?? true; @@ -274,9 +287,11 @@ export class RuntimeHost { this.currentRuntimeMessage = message; this.runtimeMessageHandler?.(message); }, - setFirstPersonTelemetry: (telemetry) => { - this.currentFirstPersonTelemetry = telemetry; - this.firstPersonTelemetryHandler?.(telemetry); + setPlayerControllerTelemetry: (telemetry) => { + this.currentPlayerControllerTelemetry = telemetry; + this.currentPlayerAnimationHooks = telemetry?.hooks.animation ?? null; + this.currentPlayerAudioHooks = telemetry?.hooks.audio ?? null; + this.playerControllerTelemetryHandler?.(telemetry); } }; }