Kaynağa Gözat

fix: bugID=46788

xzw 1 yıl önce
ebeveyn
işleme
c925002d15
1 değiştirilmiş dosya ile 44 ekleme ve 27 silme
  1. 44 27
      src/utils/sync.js

+ 44 - 27
src/utils/sync.js

@@ -3,9 +3,23 @@ import browser from '@/utils/browser'
 
 const views = new ConvertViews(browser.isMobile())
 
-let sourceApp = null,
-    targetApp = null 
-  
+
+let sourceApp_ = null
+let global_ = { sourceApp : null, targetApp: null}
+         
+Object.defineProperty(global_, 'sourceApp', {
+    get: function () {
+        return sourceApp_
+    },
+    set: function (b) {
+        sourceApp_ = b
+        //console.log('setSource', !!b) 
+        /* if(!b){
+            console.log('?')
+        } */
+    }
+})
+
 const isEdit = browser.urlHasValue('adjust')
 
 let panoData 
@@ -18,7 +32,7 @@ export function setPanoWithBim(data){
 }
 export function flyToP1P2(data){
     //left
-    views.flyToPano(sourceApp, data.id, data.pos1, {duration : views.settings.durations.flyToPano}) 
+    views.flyToPano(global_.sourceApp, data.id, data.pos1, {duration : views.settings.durations.flyToPano}) 
     
     //right
     views.bimFlyTo({position: data.pos2 || data.position,  duration : views.settings.durations.flyToPano}) 
@@ -28,13 +42,13 @@ export function flyToP1P2(data){
  
 const initConvertView = (isSwitchScene) => {  
 
-    if (sourceApp && targetApp) {
-        if(targetApp.sceneType == 'bim'){  
-            views.bindWithBim( sourceApp, targetApp, panoData ) 
+    if (global_.sourceApp && global_.targetApp) {
+        if(global_.targetApp.sceneType == 'bim'){  
+            views.bindWithBim( global_.sourceApp, global_.targetApp, panoData ) 
             
-        }else if(sourceApp.sceneType == targetApp.sceneType){
+        }else if(global_.sourceApp.sceneType == global_.targetApp.sceneType){
             
-            views.bindWithSameType(sourceApp,targetApp, isSwitchScene)
+            views.bindWithSameType(global_.sourceApp,global_.targetApp, isSwitchScene)
              
         }
             
@@ -43,9 +57,9 @@ const initConvertView = (isSwitchScene) => {
 
 export function singleConvert(lastFakeApp, targetApp ){//单屏转换
 
-    if(targetApp.sceneType == 'bim'){
+    if(global_.targetApp.sceneType == 'bim'){
          
-        views.fakeWithBim(lastFakeApp, targetApp, getSourcePanos(sourceApp), targetPano)
+        views.fakeWithBim(lastFakeApp, global_.targetApp, getSourcePanos(global_.sourceApp), targetPano)
     } 
     
 }
@@ -56,7 +70,7 @@ let isSwitchScene
 export function beforeChangeURL(which  ){
     //if (views.loaded ) {
         isSwitchScene = true
-        views.clear({ dontClearTarget: targetApp && targetApp.sceneType == 'bim' })
+        views.clear({ dontClearTarget: global_.targetApp && global_.targetApp.sceneType == 'bim' })
     //} 
 }
 
@@ -68,17 +82,17 @@ export function loadSourceScene(sourceFrame,type,mode) {
      
     /* if (views.loaded ) {
         isSwitchScene = true
-        views.clear({ dontClearTarget: targetApp.sceneType == 'bim' })
+        views.clear({ dontClearTarget: global_.targetApp.sceneType == 'bim' })
     } */
     
     Log('loadSourceScene, ' + type)
-    sourceApp = null 
+    global_.sourceApp = null 
     let win = sourceFrame.value.contentWindow  
     win.sceneType = type
     
     
     let loaded = ()=>{ 
-        sourceApp = win
+        global_.sourceApp = win
         initConvertView(isSwitchScene && 'source')  
     }
     
@@ -111,14 +125,14 @@ export function loadTargetScene(targetFrame, type, mode) {
         
         views.clear( )
     }
-    targetApp = null 
+    global_.targetApp = null 
     
     
     let win = targetFrame.value.contentWindow   //其实只用赋值一次
     win.sceneType = type
     
     let loaded = ()=>{
-        targetApp = win
+        global_.targetApp = win
          
        
         initConvertView( 'target')
@@ -127,12 +141,15 @@ export function loadTargetScene(targetFrame, type, mode) {
     
     
     if(type == 'kankan'){  
-        win.app.Scene.on('loaded', () => { 
+        if(win.app.Scene.loaded){
             loaded()
-        })
+        }else{
+         win.app.Scene.on('loaded', () => { 
+            loaded()
+        })}
     }else{
         win.loaded.then(sdk => {
-            //targetApp.viewer.scene.changeMode(mode)  
+            //global_.targetApp.viewer.scene.changeMode(mode)  
             if(type == 'laser'){
                 views.laserInit(win,mode)
             }else if(type == 'bim'){
@@ -147,9 +164,9 @@ export function loadTargetScene(targetFrame, type, mode) {
 
 /* views.addEventListener('sendCameraData', e => {
     //同步右侧数据到左侧
-    if(sourceApp.sceneType == 'laser'){
-        sourceApp.viewer.mainViewport.view.position.copy(e.data.position)
-        sourceApp.viewer.mainViewport.view.lookAt(e.data.target)
+    if(global_.sourceApp.sceneType == 'laser'){
+        global_.sourceApp.viewer.mainViewport.view.position.copy(e.data.position)
+        global_.sourceApp.viewer.mainViewport.view.lookAt(e.data.target)
     }
 }) */
 
@@ -166,8 +183,8 @@ window.Log = function(value, color, fontSize){
 
 window.addEventListener('mouseup',(e)=>{//拖拽出窗口外才执行
     //iframe的window的mouseup 在拖拽出窗口外居然不执行,只好用全局的通知它们
-    sourceApp && sourceApp.sceneType == 'laser' && sourceApp.viewer && sourceApp.viewer.inputHandler.onMouseUp(e)  
-    targetApp && targetApp.sceneType == 'laser' && targetApp.viewer && targetApp.viewer.inputHandler.onMouseUp(e) 
+    global_.sourceApp && global_.sourceApp.sceneType == 'laser' && global_.sourceApp.viewer && global_.sourceApp.viewer.inputHandler.onMouseUp(e)  
+    global_.targetApp && global_.targetApp.sceneType == 'laser' && global_.targetApp.viewer && global_.targetApp.viewer.inputHandler.onMouseUp(e) 
     views.dispatchEvent({type:'mouseupOutOfWin', evt:e})
 
 })
@@ -176,10 +193,10 @@ window.addEventListener('mouseup',(e)=>{//拖拽出窗口外才执行
 export default {
     views,
     get sourceInst() {
-        return sourceApp
+        return global_.sourceApp
     },
     get targetInst() {
-        return targetApp
+        return global_.targetApp
     },
     
 }