Browse Source

编写单模型页面

bill 3 years ago
parent
commit
e3e295bc17
2 changed files with 41 additions and 20 deletions
  1. 5 1
      src/sdk/association.ts
  2. 36 19
      src/views/sign-model/index.vue

+ 5 - 1
src/sdk/association.ts

@@ -70,6 +70,7 @@ const associationModels = (sdk: SDK) => {
         continue;
       }
 
+      console.error('added', item)
       const itemRaw = toRaw(item)
       const sceneModel = sdk.addModel({
         ...itemRaw,
@@ -166,7 +167,10 @@ const associationModels = (sdk: SDK) => {
           )
           watch(
             () => modelShow.value, 
-            () => isUnSet || getSceneModel(item)?.changeShow(modelShow.value), 
+            () => {
+              console.error(item, modelShow.value)
+              isUnSet || getSceneModel(item)?.changeShow(modelShow.value)
+            }, 
             { immediate: true }
           )
 

+ 36 - 19
src/views/sign-model/index.vue

@@ -3,29 +3,46 @@
 </template>
 
 <script setup lang="ts">
-import { loadModel, fuseModel } from '@/model'
+import { ref } from 'vue'
+import { loadModel, fuseModel as FModel } from '@/model'
 import { initialScenes, createFuseModels, fuseModels, scenes } from '@/store'
-import { params } from '@/env'
+import { params, showModelsMapStack } from '@/env'
 import { Dialog } from 'bill/index'
-import { useViewStack } from '@/hook';
+import { useViewStack, useActive } from '@/hook';
 import { sdk } from '@/sdk'
 
-useViewStack(() => {
-  initialScenes()
-    .then(() => params.modelId && scenes.value.find(scene => scene.modelId === Number(params.modelId)))
-    .then(scene => {
-      if (!scene) {
-        return Dialog.alert(`模型不存在!`)
-      }
-      const fuseModel = createFuseModels({
-        modelId: scene.modelId,
-        show: true,
-        url: scene.modelObjUrl || scene.modelGlbUrl,
-        type: scene.type
-      })
-      fuseModels.value.push(fuseModel)
+const active = useActive()
+let pop: () => void
+const loadSignModel = async () => {
+  await initialScenes()
+  const scene = params.modelId && scenes.value.find(scene => scene.modelId === Number(params.modelId))
+  if (!scene) {
+    return Dialog.alert(`模型不存在!`)
+  }
+  if (active.value) {
+    const fuseModel = createFuseModels({
+      modelId: scene.modelId,
+      show: true,
+      url: scene.modelGlbUrl || scene.modelObjUrl,
+      type: scene.type
     })
-    .then(() => loadModel(fuseModel))
-    .then(() => (window as any).__sdk = sdk)
+    fuseModels.value.push(fuseModel)
+
+    await loadModel(FModel)
+    pop = showModelsMapStack.push(ref(new Map([[fuseModel, true]])))
+    ;(window as any).__sdk = sdk
+  }
+}
+
+
+useViewStack(() => {
+  const bcModels = fuseModels.value
+  fuseModels.value = []
+
+  loadSignModel()
+  return () => {
+    fuseModels.value = bcModels
+    pop && pop()
+  }
 })
 </script>