xzw пре 3 година
родитељ
комит
8c69ec3c48
5 измењених фајлова са 109 додато и 147 уклоњено
  1. 7 7
      css/lzb.css
  2. 65 31
      js/Hot.js
  3. 32 24
      js/edit.js
  4. 3 65
      js/main_2020_edit.js
  5. 2 20
      js/main_2020_show.js

+ 7 - 7
css/lzb.css

@@ -276,9 +276,9 @@ ul.MenuOptions li.chosen {
 
 .tourList>ul{
     height: 100%;
-    overflow-y: scroll;
-    /* overflow-x: hidden; */
-    /* width: 100%; */
+    
+                             
+                      
 }
 
 .toolRight .input, .toolRight .editText {
@@ -641,10 +641,10 @@ ul.MenuOptions li.chosen {
 }
 
 .snapTour {
-    overflow-y: visible;
-    overflow: visible;
-    overflow-y: visible !important;
-    height: 82% !important;
+    
+     
+                                   
+                           
 }
 
 .toolRight .snapTour .tourList li.guideItem>div:first-child {

+ 65 - 31
js/Hot.js

@@ -721,7 +721,7 @@ window.initHot = function(model){
              
             let maxCount = browser.isMobile() ? 2000 : 5000
             let c = model.panos.list.length * model.colliders.length
-            if(settings.isEdit || c < maxCount){  
+            if(window.isEdit ||  c < maxCount){  //编辑页面保险起见还是全部算完后才可浏览,就能保证保存全部的visiblePano
                 this.info.visiblePanos = common.getVisiblePano(customPositions,  model.panos.list, {
                     model: model.colliders , posAtPanos  
                 })  
@@ -744,15 +744,15 @@ window.initHot = function(model){
                         console.log(window.hotsi ?(++window.hotsi): (window.hotsi = 1))
                         clearInterval(interval)
                     }
-                }, Hot.visiEveryDurSlice ) 
+                }, Hot.visiEveryDurSlice )// visiEveryDurSlice 等在main中定义
             }
             
         }
         
             
         updateVisible(panos, visibility) { 
-            if(settings.isEdit && editTool.hotpoint.editSpot == this){
-                return true
+            if(window.isEdit && editTool.hotpoint.editSpot == this){
+                return this.visible = true
             }
             
             this.visible = visibility != void 0 ? visibility : (!this.info.visiblePanos || !!panos.find(pano=>this.info.visiblePanos.includes(pano.id)))
@@ -881,7 +881,7 @@ window.initHot = function(model){
         
         inSight(){
             //return true
-            if(settings.isEdit)return true // 太容易move了
+            if(window.isEdit)return true // 太容易move了
              
             if(player.mode == 'panorama'){
                 if(!player.camera) return
@@ -1032,36 +1032,45 @@ window.initHot = function(model){
             var a = new THREE.Vector3;
             i.push(function(e) {
                     return Math.abs(e.position.x - r.x) > window._settings.tags.visibility.cameraClearance   || Math.abs(e.position.z - r.z) > window._settings.tags.visibility.cameraClearance  
-                }, function(e) {
+                },
+
+                function(e) {
                     a.copy(r).sub(e.position);
                     var t = -THREE.Math.radToDeg(Math.atan(a.y / Math.sqrt(a.x * a.x + a.z * a.z)))
                       , i = window._settings.tags.navigate.tiltTolerance 
                     return window._settings.insideLookLimitDown - i < t && t < window._settings.insideLookLimitUp + i
-                }, 
+                },
+                
                 (pano)=>{ // add
                     return player.checkHasNeighbor(pano) 
-                }
-     
-            ),
-            n.push(  function(t, i) {//scoreFunctions.distanceSquared
-                    return i = i || a.navigation.distanceFactor,
-                    function(e) {
-                        return t ? t.position.distanceToSquared(e.position) * i : 0
+                },
+                
+                (pano)=>{ // add
+                    return this.info.visiblePanos.includes(pano.id)
+                }    
+            )
+            n.push(
+                (function(hot, i) {   //scoreFunctions.distanceSquared
+                    return  function(pano) {
+                        //i = a.navigation.distanceFactor
+                        return hot ? hot.position.distanceToSquared(pano.position) * i : 0
                     }
-                }(this, -2));
+                })(this, -2)
+                ,
+                
+                (pano)=>{//尽量正对hot
+                    let dir = new THREE.Vector3(0,0,1).applyQuaternion(this.quaternion)
+                    let dir2 = new THREE.Vector3().subVectors(pano.position, this.position).normalize();
+                    let s = dir.dot(dir2) * 10;
+                    //console.log(pano.id + ":" + s)
+                    return s
+                } 
+            
+            );
+                
+                
             var s = t.model.panos.sortByScore(i, n);
-            /* if (s && window._settings.tags.navigate.lineOfSight) {
-                for (var l = 0; l < s.length; l++) {
-                    var c = s[l].pano
-                      , h = c.position.distanceTo(r);
-                    p.set(c.position, r.clone().sub(c.position).normalize());
-                    var u = p.intersectObjects(t.model.colliders);
-                    if (0 === u.length || u[0].distance > h)
-                        return console.log(l),
-                        c
-                }
-                return null
-            } */
+            console.log(s)
             return s && 0 < s.length && s[0].pano
         }
          
@@ -1299,15 +1308,19 @@ window.initHot = function(model){
                 }
             }
         } 
+        
         changeBoxHelperDisplay(show){
-            this.visible_ = this.visible
             if(show){
+                this.visible_ = this.visible
                 this.visible = true
                 this.mesh.boxHelper.visible = true
             }else{
-                this.visible = this.visible_
+                if(this.visible_ != void 0){
+                    this.visible = this.visible_
+                } 
                 this.mesh.boxHelper.visible = false
             }
+            
         } 
         
         
@@ -1347,7 +1360,7 @@ window.initHot = function(model){
                             e.texMedia = tex.image
 
                             {//animation不同致使的不能使用同一个texture 
-                                if(settings.isEdit){
+                                if(window.isEdit){
                                     if(animateTexSrcs[e.info.texSrc]){
                                         e.material_.map = tex.clone(); //编辑动画直接不用一个texture, 故而animation也不同
                                         e.material_.map.needsUpdate = true
@@ -1440,7 +1453,7 @@ window.initHot = function(model){
     }
     
     Hot.beginShineHot = function(){  
-        if(!settings.isEdit && shineMats.length == 0)return
+        if(!window.isEdit && shineMats.length == 0)return
         
         
         transitions.trigger({
@@ -1596,6 +1609,27 @@ window.initHot = function(model){
         $('#closepop').on("click",Hot.closePopup); 
     }
     
+    
+    
+    Hot.createHotList = function() {
+        var docFragment = document.createDocumentFragment();
+        var hots = hotGroup.children.filter(hot=>hot.info.actionType.openHot);
+        hots = hots.sort((a,b)=>{return a.order - b.order});
+        hots.forEach((hot)=>{
+            var li = document.createElement('li');
+            var span = document.createElement('span');
+            span.innerHTML = hot.info.title || '热点';
+            // console.log(span.innerHTML);
+            li.hot = hot;   // 列表每一项对应一个热点
+            li.appendChild(span);
+            docFragment.appendChild(li);
+             
+        })  
+        var ul = document.querySelector('#hotListContent ul');
+        ul && ul.appendChild(docFragment);
+         
+    }
+            
 
 }
 

+ 32 - 24
js/edit.js

@@ -98,8 +98,31 @@ EditTools.prototype.init = function() {
         $elem.addClass("chosen"); 
     }) */
     
+    //fyz 拖拽以改变顺序 
+    {
+        let tourListNode = $("#tourList>ul")[0];
+        let tourItemListNode = $("#tourItemList>ul")[0];
+        let callback = function(ul){
+            reIndexTourList(ul)
+            
+        }
+         
+        //导览拖拽
+        setDraggable({ul:tourListNode,  dragItemClassName:['guideItem', 'listItem'], callback})
+        setDraggable({ul:tourItemListNode,  dragItemClassName:['guideItem'], callback })
+        
+        
+        //热点媒体拖拽
+        setDraggable({ul:$('#hotpointDetail [name="video"] .list')[0],  dragItemClassName:['mediaItem'] })
+        setDraggable({ul:$('#hotpointDetail [name="photo"] .list')[0],  dragItemClassName:['mediaItem'] })
     
     
+        //热点列表拖拽
+         
+        setDraggable({ul:$('.toolRight .spotList')[0],  dragItemClassName:['listItem']})
+        
+    }
+    
 
 }
 //点击的时候激活状态
@@ -366,7 +389,7 @@ SceneInformation.prototype.init = function(data, data2) {
 
     /*************方奕卓 其他项的初始化操作 ************/
     initColorElem(data);
-    addListener();
+     
     // 给其他元素绑定事件
     if (data.momentTour === 'black') {
         momentTour.prop('checked', true);
@@ -561,7 +584,7 @@ function loadCAD(data) {
     grendCAD(data, $('#player')[0], $('#cadSignColor').val(), $('#cadBorderColor').val(), $('#cad-size').val())
 }
 
-function addListener() {}
+ 
 
 //设置初始界面
 function getSeft(seft) {
@@ -2671,7 +2694,7 @@ Hotpoint.prototype.addHot = function(that) {
 
 //添加热点列表
 Hotpoint.prototype.addHotList = function(hot) {
-    var li = $("<li class='listItem' data-spid=" + hot.sid + "><div class='icon'></div>" + "<div class=number>" + (++_hotNum) + "</div>" + "<div class=title >" + ( hot.info.title  ) + "</div>" + "<div class=DelConfirm title='删除'>确定删除</div>" + "<div class=del></div>" + "</li>");
+    var li = $("<li class='listItem' draggable='true' data-spid=" + hot.sid + "><div class='icon'></div>" + /* "<div class=number>" + (++_hotNum) + "</div>" + */ "<div class=title >" + ( hot.info.title  ) + "</div>" + "<div class=DelConfirm title='删除'>确定删除</div>" + "<div class=del></div>" + "</li>");
     li.hot = hot
     hot.$li = li
     this.setListLi(hot)
@@ -2992,13 +3015,16 @@ Hotpoint.prototype.ifNeedResetVisi = function(hot){//修改过贴图或位置,
 Hotpoint.prototype.getSavingInfo = function(){//保存全部
     var hots = {} // 热点数据
     
-    var shineHots = player.model.hotGroup.children.filter(e=>e.texType == 'shine')
+    /* var shineHots = player.model.hotGroup.children.filter(e=>e.texType == 'shine')
     var photoHots = player.model.hotGroup.children.filter(e=>e.texType == 'photo')
     var videoHots = player.model.hotGroup.children.filter(e=>e.texType == 'video')
 
     
-    shineHots.concat(photoHots).concat(videoHots).forEach((hot,index)=>{     
-         
+    shineHots.concat(photoHots).concat(videoHots).forEach((hot,index)=>{     */ 
+    //按列表顺序存储
+    Array.from(this.spotList.find('li.listItem')).forEach((li,index)=>{
+        var sid = $(li).attr("data-spid");
+        var hot = player.model.hots[sid]    
         var hotData = CloneObject(hot.info) 
         if(hotData.texSrc){
             hotData.texSrc = manage.removeSrcPostMark(hotData.texSrc)
@@ -3218,25 +3244,7 @@ EditGuide.prototype.init = function(data, data2) {
     
   
 
-    //fyz 拖拽以改变顺序  
     
-    {
-        let tourListNode = $("#tourList>ul")[0];
-        let tourItemListNode = $("#tourItemList>ul")[0];
-        let callback = function(ul){
-            reIndexTourList(ul)
-            
-        }
-         
-         
-        setDraggable({ul:tourListNode,  dragItemClassName:['guideItem', 'listItem'], callback})
-        setDraggable({ul:tourItemListNode,  dragItemClassName:['guideItem'], callback })
-        
-        
-        
-        setDraggable({ul:$('#hotpointDetail [name="video"] .list')[0],  dragItemClassName:['mediaItem'] })
-        setDraggable({ul:$('#hotpointDetail [name="photo"] .list')[0],  dragItemClassName:['mediaItem'] })
-    }
      
      
     

+ 3 - 65
js/main_2020_edit.js

@@ -16927,73 +16927,11 @@ function o(a, s, l) {
                 this.loadTexturesPromise
             }
             
-            /* t.prototype.shineHots = function() {
-                A.trigger({
-                    func: function(e) {
-                        var opa = e <= .5 ? 2 * e : -2 * e + 2
-                        for(var i in this.hots){
-                            this.hots[i].mesh.material.uniforms.opac.value = opa;
-                        } 
-                    }
-                    .bind(this),
-                    cycling: !0,
-                    duration: 3e3,
-                    name: "hotShine"
-                })
-            } */
+           
             ,
-           /*  t.prototype.createHotItem = function(e, t) {
-                for (var i = document.createDocumentFragment(), n = Object.keys(e), r = 0; r < n.length; r++) {
-                    var o = document.createElement("li")
-                      , a = document.createElement("span");
-                    a.innerHTML = e[n[r]].title || e[n[r]].infoAttribute && e[n[r]].infoAttribute.title  || "热点",
-                    o.hot = t[n[r]],
-                    o.appendChild(a),
-                    i.appendChild(o)
-                }
-                document.querySelector("#hotListContent ul").appendChild(i),
-                console.log(i)
-            } */
-            
-            
-            
-            t.prototype.createHotItem = function() {
-                var docFragment = document.createDocumentFragment();
-                
-                this.hotGroup.children.forEach(hot=>{
-                    if(hot.info.actionType.openHot){
-                        var li = document.createElement('li');
-                        var span = document.createElement('span');
-                        span.innerHTML = hot.info.title || '热点';
-                        // console.log(span.innerHTML);
-                        li.hot = hot;   // 列表每一项对应一个热点
-                        li.appendChild(span);
-                        docFragment.appendChild(li);
-                    }
-                })
-                  
-                var ul = document.querySelector('#hotListContent ul');
-                ul.appendChild(docFragment);
-                 
-            }
-            
-            
-            
             
+             
             
-            ,
-            /* t.prototype.loadOverlays = function(overlays){
-                var overlays = window.data2 && window.data2.overlays  
-                  
-                
-                overlays && overlays.forEach((info)=>{ 
-                    new Overlay(info)  
-                })
-                
-                
-                Overlay.load()
-            }
-             */
              
             t.prototype.loadhots = function() {
                 initHot(this)
@@ -17046,7 +16984,7 @@ function o(a, s, l) {
                                 new Hot(info, 'byOverlay')  
                             })
                         }
-                        this.createHotItem();
+                        Hot.createHotList();
                         
                         
                         /* if(e.multiOverlays){

+ 2 - 20
js/main_2020_show.js

@@ -17637,25 +17637,7 @@ window.Modernizr = function(n, e, t) {
 				})  
             },
             
-            n.prototype.createHotItem = function() {
-                var docFragment = document.createDocumentFragment();
-                
-                this.hotGroup.children.forEach(hot=>{
-                    if(hot.info.actionType.openHot){/* hot.texType == 'shine' */
-                        var li = document.createElement('li');
-                        var span = document.createElement('span');
-                        span.innerHTML = hot.info.title || '热点';
-                        // console.log(span.innerHTML);
-                        li.hot = hot;   // 列表每一项对应一个热点
-                        li.appendChild(span);
-                        docFragment.appendChild(li);
-                    }
-                })
-                  
-                var ul = document.querySelector('#hotListContent ul');
-                ul.appendChild(docFragment);
-                 
-            }
+            
 				
 
            /*  n.prototype.loadOverlays = function(overlays){
@@ -17703,7 +17685,7 @@ window.Modernizr = function(n, e, t) {
                                 new Hot(info, 'byOverlay')  
                             })
                         } 
-                        this.createHotItem( ); 
+                        Hot.createHotList();
                         Hot.startLoad()