|
@@ -47,6 +47,8 @@ export default class ConvertViews extends THREE.EventDispatcher{
|
|
|
}
|
|
|
|
|
|
bindWithSameType(sourceApp,targetApp){
|
|
|
+ let lastSourceApp = this.sourceApp
|
|
|
+ let lastTargetApp = this.targetApp
|
|
|
this.sourceApp = sourceApp
|
|
|
this.targetApp = targetApp
|
|
|
|
|
@@ -70,7 +72,9 @@ export default class ConvertViews extends THREE.EventDispatcher{
|
|
|
|
|
|
var flyToPano = (e)=>{//同步点位
|
|
|
if(master != this.masterApp )return
|
|
|
- customer.viewer.images360.flyToPano({pano: customer.viewer.images360.panos[e.toPano.pano.id]} )
|
|
|
+ let pano = customer.viewer.images360.panos[e.toPano.pano.id]
|
|
|
+ if(!pano)return console.error('找不到该e.panoId', e.toPano.pano.id)
|
|
|
+ customer.viewer.images360.flyToPano({pano} )
|
|
|
}
|
|
|
master.viewer.images360.addEventListener('flyToPano',flyToPano)
|
|
|
|
|
@@ -115,9 +119,12 @@ export default class ConvertViews extends THREE.EventDispatcher{
|
|
|
|
|
|
var player1 = master.app.core.get('Player')
|
|
|
var player2 = customer.app.core.get('Player')
|
|
|
+ let this_ = this
|
|
|
var flyToPano = (e)=>{//同步点位
|
|
|
- if(master != this.masterApp )return
|
|
|
- player2.flyToPano({pano: player2.model.panos.index[e.panoId]} )
|
|
|
+ if(master != this_.masterApp )return
|
|
|
+ let pano = player2.model.panos.index[e.panoId]
|
|
|
+ if(!pano)return console.error('找不到该e.panoId',e.panoId)
|
|
|
+ player2.flyToPano({pano} )
|
|
|
}
|
|
|
player1.on("flying.started",flyToPano)
|
|
|
|
|
@@ -146,11 +153,11 @@ export default class ConvertViews extends THREE.EventDispatcher{
|
|
|
let changeMaster = ()=>{
|
|
|
this.masterApp = master //主控方。只有主控方能控制被控方。鼠标操作过mousedown mousewheel等才能认定为主控方
|
|
|
}
|
|
|
- //let dom = sourceApp.sceneType == 'laser' ? master.viewer.inputHandler.domElement : player1.domElement
|
|
|
- master.addEventListener('mousedown',changeMaster)
|
|
|
- master.addEventListener('mousewheel',changeMaster)
|
|
|
-
|
|
|
+ let dom = sourceApp.sceneType == 'laser' ? master.viewer.inputHandler.domElement : master.app.core.get('Player').domElement
|
|
|
+ dom.addEventListener('pointerdown',changeMaster )
|
|
|
+ dom.addEventListener('mousewheel',changeMaster )
|
|
|
|
|
|
+
|
|
|
let dispose = ()=>{
|
|
|
if(sourceApp.sceneType == 'laser'){
|
|
|
if(!master.viewer)return //master已被替换成别的类型的场景
|
|
@@ -175,8 +182,20 @@ export default class ConvertViews extends THREE.EventDispatcher{
|
|
|
bind(targetApp, sourceApp)
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ //同步初始漫游点
|
|
|
+ let master = lastSourceApp == this.sourceApp ? sourceApp : targetApp
|
|
|
+ let customer = lastSourceApp == this.sourceApp ? targetApp : sourceApp
|
|
|
+ if(master.sceneType == 'laser'){
|
|
|
+ let pano = master.viewer.images360.nextPano || master.viewer.images360.currentPano
|
|
|
+ let pano2 = pano && customer.viewer.images360.panos[pano.id]
|
|
|
+ master.viewer.dispatchEvent('camera_changed') //朝向同步
|
|
|
+ pano2 && customer.viewer.images360.flyToPano({pano : pano2 })
|
|
|
+ }else{
|
|
|
+ let pano = master.app.core.get('Player').nextPano || master.app.core.get('Player').currentPano
|
|
|
+ let pano2 = pano && customer.app.core.get('Player').model.panos.index[pano.id]
|
|
|
+ master.app.core.get('Player').emit("update")//朝向同步
|
|
|
+ pano2 && customer.app.core.get('Player').flyToPano({pano: pano2})
|
|
|
+ }
|
|
|
|
|
|
|
|
|
this.loaded = true
|