浏览代码

fix: 实时路径和历史路径的显示隐藏
fix: 切换路径显示

xzw 2 天之前
父节点
当前提交
46c7d87334
共有 1 个文件被更改,包括 31 次插入21 次删除
  1. 31 21
      src/sdk/cover/index.js

+ 31 - 21
src/sdk/cover/index.js

@@ -16,15 +16,13 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
          
     
     
-    let useModel = (model, i)=>{  
+    let useModel = (model, i, pos, qua)=>{  
         pathModels[i].model = model
         model.inUse = true //使用
         viewer.objs.add(model)
-        /* let qua = getQuaternion(aniPaths[i])
-        let pos = aniPaths[i].points[0]
-        model.position.copy(pos)
-        model.quaternion.copy(qua)  
-        model.dispatchEvent('position_changed')  */
+        pos && model.position.copy(pos)
+        qua && model.quaternion.copy(qua)
+        Potree.Utils.updateVisible(model,'live-display', livePathDisplay)
     }
     let unuseModel = (pathModel)=>{   
         if(!pathModel.model)return
@@ -53,7 +51,7 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
         let less = list.length - aniPaths.length //add or remove, 注意,path和设备没有一一对应。
         if(less>0){
             for(let i=0;i<less;i++){
-                let path = new Potree.Path({color:'#ff4399'})
+                let path = new Potree.Path({color:'#ff4399', type:'Path'})
                 path.setEditEnable(false)
                 path.setReverse(true)
                 path.setArrowDisplay(true)
@@ -73,7 +71,7 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
             }
         }
         
-        
+         
          
         list.forEach((data,i)=>{
             //收集到历史以保存
@@ -88,11 +86,12 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
             let modelInfo2 = modelList[data.characterModel.name]
             if(!modelInfo2) modelInfo2 = modelList[data.characterModel.name] = []
             if(modelInfo.model?.name != data.characterModel.name){
+                let qua = modelInfo.model?.quaternion, pos = modelInfo.model?.position
                 unuseModel(modelInfo)
                 
                 let idleItem = modelInfo2.find(model=>!model.inUse && model!='loading')
                 if(idleItem){
-                    useModel(idleItem, i)
+                    useModel(idleItem, i, pos, qua)
                 }else if(!modelInfo2.some(model=> model=='loading')){
                     modelInfo2.push('loading')
                     
@@ -108,7 +107,7 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
                         modelInfo2[waitingIndex] = model_ 
                         let needIndex = pathModels.findIndex((m,i)=>!m.model && pathDevices[i].characterModel.name == model_.name)
                         if(needIndex != -1){
-                            useModel(model_, needIndex) 
+                            useModel(model_, needIndex, pos, qua) 
                         } 
                         model_.lastPos = model_.position.clone(), model_.lastQua = model_.quaternion.clone()
                         model_.visible = true   
@@ -131,7 +130,7 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
             })  
             path.update() 
             path.name = 'ani_'+data.deviceName
-
+            Potree.Utils.updateVisible(path,'live-display', livePathDisplay)
              
             //写入历史
              
@@ -216,8 +215,7 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
     
     
     let transitionRatio = 0.1
-    viewer.addEventListener("update", ()=>{
-          
+    let update = ()=>{
         pathDevices?.forEach((e,i)=>{
             let model = pathModels[i].model 
             if(!model )return 
@@ -241,18 +239,26 @@ let createAnimatePath = (token)=>{//实时路径  保存:generateAniPathData
                 modelDisToCam = null //一次性
             }
         }
-    });
+    }
+    
+    viewer.addEventListener("update", ()=>{livePathDisplay && update() })
+    viewer.addEventListener("updateLivePath", update)
     
     viewer.addEventListener('global_drag', (e)=>{
         e.buttons == 2  && (camFollowDevice = null) //右键取消focus
     });
     
+    
+    
+    addPath()
+     
+    
     }catch(e){console.error(e)}
     
     
     
     
-    addPath()
+    
 }
 
 
@@ -339,7 +345,7 @@ let curSelectPath
 
 
 let addedPath, floorCountEmited
-let addPath = ()=>{//加个他们拍的路径 
+let addPath1 = ()=>{//加个他们拍的路径 
     if(addedPath)return
     let path = viewer.scene.measurements.find(e=>e.title == '行走路径')
     
@@ -2517,7 +2523,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             
             
             setTimeout(()=>{
-                addPath()
+                addPath1()
             },100) 
             
             return functions
@@ -2695,16 +2701,20 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             console.log('setLivePathDisplay',show)
             livePathDisplay = show
             viewer.scene.measurements.forEach(e=>{
-                let show_ = e.isAnimate && show
-                Potree.Utils.updateVisible(e,'live-display',show_)
+                if(e.type == 'Path' && e.isAnimate){ 
+                    Potree.Utils.updateVisible(e,'live-display',show)
+                }
             })
+            pathModels.forEach(e=>e.model && Potree.Utils.updateVisible(e.model,'live-display',show))
+            show && viewer.dispatchEvent('updateLivePath')
         },
         setHisPathDisplay(show){//在历史路径面板
             console.log('setHisPathDisplay',show)
             hisPathDisplay = show
             viewer.scene.measurements.forEach(e=>{
-                let show_ = !e.isAnimate && show
-                Potree.Utils.updateVisible(e,'live-display',show_)
+                if(e.type == 'Path' && !e.isAnimate){ 
+                    Potree.Utils.updateVisible(e,'history-display',show) //自己创建的也显示
+                }
             })
         },
         startRecordPath(){//开始录制