diff --git a/src/app/App.tsx b/src/app/App.tsx index 50b1f253..8ad75f1e 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -2406,6 +2406,64 @@ export function App({ store, initialStatusMessage }: AppProps) { + + + + Import GLB/GLTF + + + + {assetStatusMessage === null ? null : ( + + {assetStatusMessage} + + )} + + {projectAssetStorageReady && projectAssetStorage === null ? ( + Project asset storage is unavailable. Imported assets cannot be persisted. + ) : null} + + {modelAssetList.length === 0 ? ( + + No imported model assets yet. Import a GLB or GLTF to register the first project asset. + + ) : ( + + {modelAssetList.map((asset) => ( + + + {asset.sourceName} + Model Asset + + + {formatModelAssetSummary(asset)} + {formatModelBoundingBoxLabel(asset)} + {asset.metadata.warnings.length === 0 ? null : ( + {asset.metadata.warnings.join(" • ")} + )} + + + handlePlaceModelInstance(asset.id)} + > + Place Instance + + + + ))} + + )} + + Brushes @@ -2464,6 +2522,43 @@ export function App({ store, initialStatusMessage }: AppProps) { )} + + Model Instances + {modelInstanceDisplayList.length === 0 ? ( + No model instances placed yet. + ) : ( + + {modelInstanceDisplayList.map(({ modelInstance, label }) => ( + + applySelection( + { + kind: "modelInstances", + ids: [modelInstance.id] + }, + "outliner", + { + focusViewport: true + } + ) + } + > + {label} + {modelInstance.assetId} + + ))} + + )} + + Entities {entityDisplayList.length === 0 ? No entities authored yet. : null}