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);