Update RunnerCanvas to include project assets and model assets
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
import { useEffect, useRef, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
|
||||||
|
import type { LoadedModelAsset } from "../assets/gltf-model-import";
|
||||||
|
import type { ProjectAssetRecord } from "../assets/project-assets";
|
||||||
import type { FirstPersonTelemetry } from "../runtime-three/navigation-controller";
|
import type { FirstPersonTelemetry } from "../runtime-three/navigation-controller";
|
||||||
import { RuntimeHost } from "../runtime-three/runtime-host";
|
import { RuntimeHost } from "../runtime-three/runtime-host";
|
||||||
import type { RuntimeInteractionPrompt } from "../runtime-three/runtime-interaction-system";
|
import type { RuntimeInteractionPrompt } from "../runtime-three/runtime-interaction-system";
|
||||||
@@ -8,6 +10,8 @@ import { createWorldBackgroundStyle } from "../shared-ui/world-background-style"
|
|||||||
|
|
||||||
interface RunnerCanvasProps {
|
interface RunnerCanvasProps {
|
||||||
runtimeScene: RuntimeSceneDefinition;
|
runtimeScene: RuntimeSceneDefinition;
|
||||||
|
projectAssets: Record<string, ProjectAssetRecord>;
|
||||||
|
loadedModelAssets: Record<string, LoadedModelAsset>;
|
||||||
navigationMode: RuntimeNavigationMode;
|
navigationMode: RuntimeNavigationMode;
|
||||||
onRuntimeMessageChange(message: string | null): void;
|
onRuntimeMessageChange(message: string | null): void;
|
||||||
onFirstPersonTelemetryChange(telemetry: FirstPersonTelemetry | null): void;
|
onFirstPersonTelemetryChange(telemetry: FirstPersonTelemetry | null): void;
|
||||||
@@ -16,6 +20,8 @@ interface RunnerCanvasProps {
|
|||||||
|
|
||||||
export function RunnerCanvas({
|
export function RunnerCanvas({
|
||||||
runtimeScene,
|
runtimeScene,
|
||||||
|
projectAssets,
|
||||||
|
loadedModelAssets,
|
||||||
navigationMode,
|
navigationMode,
|
||||||
onRuntimeMessageChange,
|
onRuntimeMessageChange,
|
||||||
onFirstPersonTelemetryChange,
|
onFirstPersonTelemetryChange,
|
||||||
@@ -51,6 +57,7 @@ export function RunnerCanvas({
|
|||||||
setInteractionPrompt(prompt);
|
setInteractionPrompt(prompt);
|
||||||
onInteractionPromptChange(prompt);
|
onInteractionPromptChange(prompt);
|
||||||
});
|
});
|
||||||
|
runtimeHost.updateAssets(projectAssets, loadedModelAssets);
|
||||||
setRunnerMessage(
|
setRunnerMessage(
|
||||||
hasWebGl ? null : "WebGL is unavailable in this browser environment. The runner shell is visible, but runtime rendering is disabled."
|
hasWebGl ? null : "WebGL is unavailable in this browser environment. The runner shell is visible, but runtime rendering is disabled."
|
||||||
);
|
);
|
||||||
@@ -66,12 +73,16 @@ export function RunnerCanvas({
|
|||||||
onInteractionPromptChange(null);
|
onInteractionPromptChange(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}, [onFirstPersonTelemetryChange, onInteractionPromptChange, onRuntimeMessageChange]);
|
}, [onFirstPersonTelemetryChange, onInteractionPromptChange, onRuntimeMessageChange, projectAssets, loadedModelAssets]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
hostRef.current?.loadScene(runtimeScene);
|
hostRef.current?.loadScene(runtimeScene);
|
||||||
}, [runtimeScene]);
|
}, [runtimeScene]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
hostRef.current?.updateAssets(projectAssets, loadedModelAssets);
|
||||||
|
}, [projectAssets, loadedModelAssets]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
hostRef.current?.setNavigationMode(navigationMode);
|
hostRef.current?.setNavigationMode(navigationMode);
|
||||||
}, [navigationMode]);
|
}, [navigationMode]);
|
||||||
|
|||||||
Reference in New Issue
Block a user