xzw před 1 rokem
rodič
revize
f363e1bdf5

+ 2 - 1
scene/public/static/js/main_2020_show.js

@@ -58848,7 +58848,8 @@ class PanTransGuide{
         this.player.model.heroLocations.splice(index,1)
         
         locations.forEach((e,i)=>{
-             
+            if(e.cameraMode != 'panorama')return
+          
             if(i>0){   
                 path.setWarpDestination(e)
                 path.setWarpDestPano()

+ 51 - 3
scene/public/static/js/manage.js

@@ -148,9 +148,9 @@ var settings = {
     
     
     
-    extractFloor : { //提取一部分chunk作为新的floor,该floor不在楼层列表里显示,一般用于飞出后隐藏屋顶
+/*     extractFloor : { //提取一部分chunk作为新的floor,该floor不在楼层列表里显示,一般用于飞出后隐藏屋顶
         'KJ-t-tHpdpKvb0ew' : [1,2,3,4,5,6,7,8], //第0层的第1,2,3个chunk是屋顶 
-    }
+    } */
 }
 
 
@@ -1856,7 +1856,7 @@ function initByTHREE(THREE){
          
         
         var updateArrowPose = function(from, to, mat ){
-             
+            
             var vec = to.floorPosition.clone().clone().sub(from.floorPosition).setY(0);
             let spaceDis = 0.4//箭头之间的间距
             let margin = 0.3 //marker端需要留一点距离
@@ -2110,6 +2110,8 @@ function initByTHREE(THREE){
             initRouteArrow()
             
             browser.urlHasValue('panoLabel') && player.model.panos.forEach(p=>p.addTextSprite())
+            
+            
             if(settings.extractFloor){ 
                 let data = settings.extractFloor[number]
                 if(data){ 
@@ -2155,6 +2157,7 @@ function initByTHREE(THREE){
                 
             }) 
             
+            
             //因为一部分漫游点在模型外,想居中模型,所以bound不加pano:
             {
                
@@ -2169,6 +2172,51 @@ function initByTHREE(THREE){
                 
             }
             
+            
+            {//根据漫游点切换音频
+                let curAudio  
+                let bgmObject = SoundManager.list.find(e=>e.name == 'bgm')
+                let setCurBgm = (pano)=>{
+                    if(!window.DATA.panoAreas)return
+                    let item = window.DATA.panoAreas.find(e=>e.panos.some(a=>a == pano.id))
+                    let areaAudio = item?.audio && item.audio[1]
+                    if(areaAudio != curAudio ){   
+                        let canPlay = !bgmObject.audio.paused || bgmObject.canplay() && !(SoundManager.currentAudio && SoundManager.currentAudio != bgmObject && SoundManager.currentAudio.src) //没有其他音频在播放的话就可以播      //!pl
+                        SoundManager.setSrc('bgm', areaAudio || window.DATA.backgroundMusic, areaAudio ? (item.name +':'+item.audio[0]) : '全局背景音') 
+                        curAudio = areaAudio
+                         
+                        if(canPlay){
+                            SoundManager.play('bgm')
+                            $("#volume").show();
+                        }
+                        
+                        if(areaAudio || window.DATA.backgroundMusic){
+                            $("#volume").show()
+                        }else{
+                            $("#volume").hide()
+                        }
+                        
+                    }
+                }
+                player.on("flying.ended",(a,b,pano,d)=>{
+                    setCurBgm(pano) 
+                })
+                
+                
+                manage.addEventListener('pauseSound',(e)=>{
+                    if(SoundManager.playHistory.length == 0 && e.object != bgmObject){//其他都停了的话
+                        //console.log('SoundManager.playHistory.length == 0')
+                        setCurBgm(player.currentPano) 
+                    }
+                })
+                
+                
+                player.currentPano && setCurBgm(player.currentPano)
+                
+                 
+            }
+            
+            
         }