From 21bcd3c5d128d570f9fc651f7894d9e390e6671a Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 11 Apr 2026 04:35:32 +0200 Subject: [PATCH] Add support for scene entry and exit in App component --- src/app/App.tsx | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/app/App.tsx b/src/app/App.tsx index 341c363a..e940218b 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1179,10 +1179,14 @@ export function App({ store, initialStatusMessage }: AppProps) { : null; const selectedTriggerVolume = selectedEntity?.kind === "triggerVolume" ? selectedEntity : null; + const selectedSceneEntry = + selectedEntity?.kind === "sceneEntry" ? selectedEntity : null; const selectedTeleportTarget = selectedEntity?.kind === "teleportTarget" ? selectedEntity : null; const selectedInteractable = selectedEntity?.kind === "interactable" ? selectedEntity : null; + const selectedSceneExit = + selectedEntity?.kind === "sceneExit" ? selectedEntity : null; const projectAssetList = Object.values(editorState.document.assets); const modelAssetList = projectAssetList.filter(isModelAsset); const imageAssetList = projectAssetList.filter(isImageAsset); @@ -1212,6 +1216,33 @@ export function App({ store, initialStatusMessage }: AppProps) { editorState.document.interactionLinks, selectedInteractable.id ); + const sceneTargetOptions = sceneList.map((scene) => ({ + id: scene.id, + name: scene.name + })); + const sceneEntryOptionsBySceneId = Object.fromEntries( + sceneTargetOptions.map(({ id }) => { + const scene = editorState.projectDocument.scenes[id]; + const sceneEntries = getSortedEntityDisplayLabels( + scene?.entities ?? {}, + editorState.projectDocument.assets + ).filter(({ entity }) => entity.kind === "sceneEntry"); + + return [ + id, + sceneEntries as Array<{ + entity: Extract; + label: string; + }> + ]; + }) + ) as Record< + string, + Array<{ + entity: Extract; + label: string; + }> + >; const teleportTargetOptions = entityDisplayList.filter( ({ entity }) => entity.kind === "teleportTarget" ); @@ -1483,6 +1514,12 @@ export function App({ store, initialStatusMessage }: AppProps) { useState(false); const [runtimeScene, setRuntimeScene] = useState(null); + const [runtimeSceneId, setRuntimeSceneId] = useState(null); + const [runtimeSceneName, setRuntimeSceneName] = useState(null); + const [runtimeSceneLoadingScreen, setRuntimeSceneLoadingScreen] = + useState(null); + const [runtimeGlobalState, setRuntimeGlobalState] = + useState(createDefaultRuntimeGlobalState()); const [runtimeMessage, setRuntimeMessage] = useState(null); const [firstPersonTelemetry, setFirstPersonTelemetry] = useState(null);