diff --git a/src/App.vue b/src/App.vue index f19efef..a601dd0 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ diff --git a/src/components/ControlPanel.vue b/src/components/ControlPanel.vue new file mode 100644 index 0000000..2764d66 --- /dev/null +++ b/src/components/ControlPanel.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/SpeckleViewer.vue b/src/components/SpeckleViewer.vue index 33c24b3..98d445b 100644 --- a/src/components/SpeckleViewer.vue +++ b/src/components/SpeckleViewer.vue @@ -14,6 +14,8 @@ const { init: initViewer, viewer, loadModelFromUrl } = useViewer() onMounted(async () => { if (!canvas.value) return await initViewer(canvas.value) - await loadModelFromUrl('https://app.speckle.systems/projects/24c98619ac/models/38639656b8') + await loadModelFromUrl( + 'https://app.speckle.systems/projects/24c98619ac/models/38639656b8' + ) }) diff --git a/src/composables/viewer.ts b/src/composables/viewer.ts index 19dffd5..767babd 100644 --- a/src/composables/viewer.ts +++ b/src/composables/viewer.ts @@ -8,9 +8,9 @@ import { Viewer, } from '@speckle/viewer' -export default function useViewer() { - const viewer = ref(null) +let viewer: Viewer | null = null +export default function useViewer() { /** * Initialize the viewer * @param element - HTMLDivElement to initialize the viewer on @@ -22,11 +22,13 @@ export default function useViewer() { params.verbose = true // Create the viewer instance on the element - viewer.value = new Viewer(element, params) + viewer = new Viewer(element, params) + + await viewer.init() // Add the stock camera controller and selection extensions - viewer.value.createExtension(CameraController) - viewer.value.createExtension(SelectionExtension) + viewer.createExtension(CameraController) + viewer.createExtension(SelectionExtension) } /** @@ -34,12 +36,12 @@ export default function useViewer() { * @param url - The URL of the Speckle model */ const loadModelFromUrl = async (url: string) => { - if (!viewer.value) return + if (!viewer) return const urls = await UrlHelper.getResourceUrls(url) urls.forEach(async (url) => { - const loader = new SpeckleLoader(viewer.value.getWorldTree(), url, '') - await viewer.value.loadObject(loader, true) + const loader = new SpeckleLoader(viewer.getWorldTree(), url, '') + await viewer.loadObject(loader, true) }) }