Browse Source

fix: 路径多折线

xzw 1 year ago
parent
commit
63bf1a5e25

+ 42 - 15
public/static/lib/potree/potree.js

@@ -82376,7 +82376,7 @@ void main()
 	        marker.measure = this;
 	        let edge;
 			{ // edges 
-	            edge = LineDraw.createFatLine( [ ],{material:this.getLineMat('edgeDefault')} ); 
+	            edge = LineDraw.createFatLine( [ ],{material: this.getLineMat(this.clickSelected?'edgeSelect':'edgeDefault')} ); 
 	            edge.pickOrder = 0;
 	            Potree.Utils.setObjectLayers(edge, 'measure' ); 
 
@@ -82486,12 +82486,26 @@ void main()
 	                absoluteState = true; break;
 	            }
 	        }
-	        if(absoluteState){
-	            marker.material = this.getMarkerMaterial('select');
-	        }else {
-	            marker.material = this.getMarkerMaterial('default');
-	        }
 	        
+	        
+	        if(this.measureType == 'MulDistance_shape'){
+	            if(absoluteState){
+	                if(hoverObject == 'single'){
+	                    marker.material = this.getMarkerMaterial('select'); //路径选中后marker是非选中状态, 但是颜色一样
+	                }else {
+	                    marker.material = this.getMarkerMaterial('default');
+	                }  
+	            }else {
+	                 
+	            }
+	        }else {
+	            if(absoluteState){
+	                marker.material = this.getMarkerMaterial('select');
+	            }else {
+	                marker.material = this.getMarkerMaterial('default');
+	            } 
+	        } 
+	         
 	        marker.selected = absoluteState;
 	        
 	        viewer.mapViewer && viewer.mapViewer.dispatchEvent('content_changed'); 
@@ -82749,20 +82763,27 @@ void main()
 	    
 	    
 	    focus({dontMoveCamera=false}={}){ 
-	        if(this.clickSelected)return    
-	        if(Potree.settings.displayMode == 'showPanos')dontMoveCamera = true;  //2023.10.24 新需求:点击后不移动,否则经常跳到别的点。且在app上会反应一秒才选中。
 	        
+	        if(Potree.settings.displayMode == 'showPanos')dontMoveCamera = true;  //2023.10.24 新需求:点击后不移动,否则经常跳到别的点。且在app上会反应一秒才选中。
 	        if(!dontMoveCamera){
 	            let dontChangeCamDir = viewer.mainViewport.camera.type == 'OrthographicCamera'; /* && math.closeTo( viewer.mainViewport.view.pitch , -1.57079632)  */ // 不改角度
 	            viewer.focusOnObject(this, 'measure', null, {dontChangeCamDir});
 	        }
-	        
+	        if(this.clickSelected)return    
 	        this.setSelected(true, 'focus');
 	        this.dispatchEvent({type:'selected', state:true});
 	        this.clickSelected = true;
+	        if(this.measureType == 'MulDistance_shape'){
+	            this.markers.forEach(e=>e.visible = true);
+	        }
+	        
 	        //viewer.dispatchEvent({type:'selectMeasure', measure:this})
 	        let cancelSelect = ()=>{
+	            if(this.isNew)return;//添加过程中保持选中  主要for多路径
 	            this.clickSelected = false;
+	            if(this.measureType == 'MulDistance_shape'){
+	                this.markers.forEach(e=>e.visible = false);
+	            }
 	            this.removeEventListener('cancelSelect', cancelSelect);
 	            viewer.removeEventListener('global_click', cancelSelect); 
 	            this.setSelected(false, 'focus'); 
@@ -82848,7 +82869,7 @@ void main()
 	    getMarkerMaterial(type){ 
 	        let color = this.color.getHexString(); 
 	        let name;   
-	        if(this.measureType == 'MulDistance'){
+	        if(this.measureType == 'MulDistance_shape'){//多线段路径
 	             name = type + '_circle_' + color;
 	        }else {
 	             name = type + '_arrow_' + color;
@@ -82861,7 +82882,7 @@ void main()
 	                opacity: 1,
 	                map: texLoader$2.load(Potree.resourcePath+'/textures/pic_point_s32.png' ),  
 	                useDepth:true,
-	                replaceColor:this.color,
+	                replaceColor:new Color(Potree.config.measure.highlight.color),
 	                beReplacedRed: 0.184,  //0.18431372
 	                mapColorReplace:true,
 	            })),
@@ -83018,10 +83039,13 @@ void main()
 	            prop.showEdges = true,
 	            prop.maxMarkers = 2,
 	            prop.minMarkers = 2; 
-	        }else if(prop.measureType == 'MulDistance'){//new 
+	        }else if(prop.measureType == 'MulDistance' ){//new 
 	            prop.showDistances = true,  
 	            prop.showEdges = true, 
 	            prop.minMarkers = 2; 
+	        }else if(prop.measureType == 'MulDistance_shape' ){//new 
+	            prop.showEdges = true, 
+	            prop.minMarkers = 2; 
 	        }else if(prop.measureType == 'Ver MulDistance'){ 
 	            prop.showDistances = true,
 	            prop.atPlane = true,                
@@ -83896,7 +83920,7 @@ void main()
 
 			let end = (e={}) => {//确定、结束 
 	            if(!measure.isNew )return
-	       console.log('end');      
+	            console.log('end');      
 	            if(args.minMarkers != void 0 ){
 	                
 	                if(!e.finish && measure.markers.length<=args.minMarkers ){//右键  当个数不够时取消
@@ -83965,7 +83989,7 @@ void main()
 	            if(isIntersectSelf) return cancelFun && cancelFun() //请求删除,不重建 
 	            
 	            
-	            
+	            measure.editStateChange(false);
 	            e.remove || callback && callback();  
 	            /* this.viewer.dispatchEvent({
 	                type: 'finish_inserting_measurement',
@@ -84033,7 +84057,10 @@ void main()
 	          
 	            if(ifAtWrongPlace(e))return  
 	            if(e.clickElement || e.drag.object)return  //如点击label时focusOnObject, 或拖拽marker
-	              
+	            measure.focus({dontMoveCamera:true});
+
+
+	            
 	            if(e.button === MOUSE.RIGHT )return  
 	            
 	            

File diff suppressed because it is too large
+ 1 - 1
public/static/lib/potree/potree.js.map


+ 8 - 6
src/sdk/laser/core/enter.js

@@ -715,14 +715,13 @@ var enter = ({
             createFixPoint({measure, graph, pos, basePoint}){//创建固定点或多线段
              
                 console.log('createFixPoint',measure, graph, pos, basePoint)
-                const bus = mitt();
-                let info = {
-                    measureType : 'MulDistance', color : pointMeasureColor
-                }
+                const bus = mitt(); 
                 let measureFun, fixPoint 
-  
-
+   
                 if(graph){ //多线段
+                    let info = {
+                        measureType : 'MulDistance_shape', color : pointMeasureColor
+                    }
                     if(graph.length == 0){
                         measure = viewer.measuringTool.startInsertion( info,
                             () => { 
@@ -739,6 +738,9 @@ var enter = ({
                     }
                     
                     measureFun = getMeasureFunction(measure, bus, true) 
+                    //和普通MulDistance不同点:选中才能拖拽 非选中时不展示marker (clickSelected);选中后marker是非选中状态, 但是颜色一样
+                    
+                    
                 }else{
                     fixPoint = new THREE.Vector3().copy(pos) 
                     THREE.EventDispatcher.call(fixPoint)