Browse Source

Merge branch 'v1.2.0-ga' of http://192.168.0.115:3000/bill/fuse-code into v1.2.0-ga

xzw 4 months ago
parent
commit
818a52d975

+ 13 - 10
src/components/drawing-time-line/check.ts

@@ -68,18 +68,21 @@ export const checkTLItem = (items: TLItem[], cur: TLItem, i?: number) => {
 
 export const getAddTLItemTime = (items: TLItem[], refNdx = 0, dur = 0.5) => {
   const ref = items[refNdx];
-  items = [...items].sort((a, b) => a.time - b.time);
-  refNdx = items.indexOf(ref);
+  return getAddTLItemTimeByTime(items, ref.time + (ref.duration || 0) + 0.001, dur)
 
-  let time = 0;
-  for (let i = refNdx; i < items.length; i++) {
-    time = items[i].time + (items[i].duration || 0.5);
-    if (checkTLItem([...items].splice(i), { time, duration: dur })) {
-      break;
-    }
-  }
+  // items = [...items].sort((a, b) => a.time - b.time);
+  // refNdx = items.indexOf(ref);
+
+  // console.log(items, refNdx)
+  // let time = 0;
+  // for (let i = refNdx; i < items.length; i++) {
+  //   time = items[i].time + (items[i].duration || 0.5);
+  //   if (checkTLItem([...items].splice(i), { time, duration: dur })) {
+  //     break;
+  //   }
+  // }
 
-  return time;
+  // return time;
 };
 
 

+ 1 - 1
src/components/drawing-time-line/index.vue

@@ -114,7 +114,7 @@ watchEffect((onCleanup) => {
 const copyHandler = (ndx: number) => {
   const newFrame = {
     ...props.items[ndx],
-    time: getAddTLItemTime(props.items, ndx, props.items[ndx].duration),
+    ...getAddTLItemTime(props.items, ndx, props.items[ndx].duration)!
   };
   emit("add", newFrame);
 };

+ 17 - 12
src/layout/model-list/sign.vue

@@ -48,7 +48,7 @@ import { custom } from "@/env";
 import { getSceneModel } from "@/sdk";
 
 import type { FuseModel } from "@/store";
-import { computed, ref, watchEffect } from "vue";
+import { computed, onMounted, ref, watchEffect } from "vue";
 import { currentModel, fuseModel } from "@/model";
 
 type ModelProps = { model: FuseModel; canChange?: boolean; search?: boolean };
@@ -57,18 +57,7 @@ const props = defineProps<ModelProps>();
 const active = computed(
   () => custom.currentModel === props.model && currentModel.value === fuseModel
 );
-const show = getFuseModelShowVariable(props.model);
 const supportPano = ref(false);
-watchEffect(() => {
-  if (!show.value) {
-    supportPano.value = false;
-    return;
-  }
-  const sceneModel = getSceneModel(props.model);
-  const support = sceneModel?.supportPano();
-  console.error("sceneModel", props.model.title, sceneModel, sceneModel?.supportPano());
-  supportPano.value = !!support;
-});
 // if (sceneModel) {
 //   sceneModel.bus.on("loadDone", () => {
 //     supportPano.value = sceneModel.supportPano();
@@ -81,6 +70,22 @@ type ModelEmits = {
   (e: "click", mode: "pano" | "fuse"): void;
 };
 defineEmits<ModelEmits>();
+const show = getFuseModelShowVariable(props.model);
+onMounted(() => console.error("mount", custom.showModelsMap.get(props.model)));
+
+watchEffect(() => {
+  if (!show.value) {
+    supportPano.value = false;
+    return;
+  }
+  const sceneModel = getSceneModel(props.model);
+  const support = sceneModel?.supportPano();
+  supportPano.value = !!support;
+
+  sceneModel?.bus.on("loadDone", () => {
+    supportPano.value = sceneModel?.supportPano();
+  });
+});
 </script>
 
 <style lang="scss" scoped src="./style.scss"></style>

+ 1 - 1
src/sdk/association/animation.ts

@@ -407,7 +407,7 @@ export const addSubtitle = (data: AnimationModelSubtitle) => {
           show.value = false;
         } else if (
           currentTime.value >= data.time &&
-          currentTime.value <= data.time + data.duration
+          currentTime.value < data.time + data.duration
         ) {
           update();
           show.value = true;

+ 1 - 1
src/sdk/cover/index.js

@@ -1663,7 +1663,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                         }, */
                         
                         
-                        getCurrentSubtitlePixel({width , height}){// 获取当前模型旁白出现的适合位置,传入旁边dom的宽高,返回像素位置
+                        getCurrentSubtitlePixel({width , height}){// 获取当前模型字幕出现的适合位置,传入旁边dom的宽高,返回像素位置
                            
                             
                             // let startTime = performance.now()

+ 1 - 1
src/sdk/sdk.ts

@@ -423,7 +423,7 @@ export type AnimationModel3D = {
     frame: Omit<AnimationModelPath, "pathId"> & { path: Path }
   ) => AnimationModelPath3D;
 
-  // 获取当前模型旁白出现的适合位置,传入旁边dom的宽高,返回像素位置
+  // 获取当前模型字幕出现的适合位置,传入旁边dom的宽高,返回像素位置
   getCurrentSubtitlePixel: (size: { width: number; height: number }) => {
     x: number;
     y: number;

+ 23 - 16
src/store/fuse-model.ts

@@ -57,7 +57,7 @@ export const createFuseModels = (model: Partial<FuseModel> = {}): FuseModel =>
     id: createTemploraryID(),
     modelId: 0,
     fusionNumId: 0,
-    url:[ ""],
+    url: [""],
     fusionId: 0,
     title: "",
     modelType: "glb",
@@ -75,9 +75,11 @@ let setModel: FuseModel;
 export const getFuseModelShowVariable = (model: FuseModel) =>
   computed({
     get: () => {
-      return false && custom.modelsChangeStore
-        ? model.show
-        : custom.showModelsMap.get(model) || false;
+      const data =
+        false && custom.modelsChangeStore
+          ? model.show
+          : custom.showModelsMap.get(model);
+      return data || false;
     },
     set: (show: boolean) => {
       if (false && custom.modelsChangeStore) {
@@ -91,7 +93,12 @@ export const getFuseModelShowVariable = (model: FuseModel) =>
 
 watchEffect(
   () => {
-    fuseModels.value.forEach((item) => custom.showModelsMap.get(item));
+    fuseModels.value.forEach((item) =>
+      custom.showModelsMap.set(
+        item,
+        custom.showModelsMap.has(item) ? custom.showModelsMap.get(item)! : true
+      )
+    );
   },
   { flush: "sync" }
 );
@@ -101,16 +108,16 @@ watchPostEffect(() => {
   const loaded = fuseModels.value
     .filter((model) => getFuseModelShowVariable(model).value)
     .every((model) => model.loaded || model.error);
-    console.log('a?')
+  console.log("a?");
   fuseModelsLoaded.value = loaded;
 });
 
 let bcModels: FuseModels = [];
 export const getBackupFuseModels = () => bcModels;
 export const backupFuseModels = () => {
-  console.error('???')
-  bcModels = JSON.parse(JSON.stringify(fuseModels.value))
-  console.log('bcModels', bcModels)
+  console.error("???");
+  bcModels = JSON.parse(JSON.stringify(fuseModels.value));
+  console.log("bcModels", bcModels);
   for (const model of fuseModels.value) {
     initFuseModel(model);
   }
@@ -167,8 +174,8 @@ export const addFuseModel = async (model: FuseModel) => {
     fuseModels.value.push(addModel);
     dynamicAddedModelIds.value.push(addModel.id);
   });
-  backupFuseModels()
-  return addModel
+  backupFuseModels();
+  return addModel;
 };
 
 export const initialFuseModels = fetchStoreItems(
@@ -203,17 +210,17 @@ export const autoSaveFuseModels = autoSetModeCallback(fuseModels, {
         error: true,
         progress: 0,
       }))
-    )
+    );
   },
   backup: backupFuseModels,
   recovery: async () => {
-    recoverFuseModels()
+    recoverFuseModels();
 
     await new Promise<void>((resolve) => {
       setTimeout(() => {
-        resolve()
-      }, 100)
-    })
+        resolve();
+      }, 100);
+    });
   },
   save: async () => {
     await saveFuseModels();

+ 3 - 3
src/views/animation/right/subtitle.vue

@@ -1,6 +1,6 @@
 <template>
   <Tabs activeKey="t" width="100%">
-    <TabPane key="t" tab="设置旁白">
+    <TabPane key="t" tab="设置字幕">
       <ui-group>
         <ui-group-option>
           <SignItem label="名称" not-apply>
@@ -17,13 +17,13 @@
         </ui-group-option>
 
         <ui-group-option>
-          <SignItem label="旁白" not-apply>
+          <SignItem label="字幕" not-apply>
             <ui-input
               class="input"
               width="100%"
               height="158px"
               type="richtext"
-              placeholder="请输入旁白"
+              placeholder="请输入字幕"
               v-model="data.content"
               :maxlength="500"
             />