Browse Source

fix: 测量拖拽

xzw 2 years ago
parent
commit
21c6326943

+ 35 - 22
public/static/lib/potree/potree.js

@@ -54307,7 +54307,7 @@
 	        viewport.camera = info.midCamera;
 	        //viewport.camera.matrixWorld = info.endCamera.matrixWorld
 	        
-	        
+	         
 	        //viewer.setCameraMode(CameraMode.ORTHOGRAPHIC) 
 	        info.midCamera.projectionMatrix.copy(info.startCamera.projectionMatrix);
 	        
@@ -54323,10 +54323,13 @@
 	        
 	        let callback = info.callback;
 	        info.callback = ()=>{ 
-	            viewport.camera = info.endCamera; 
-	            viewer.scene.measurements.forEach((e)=>{
-	                Potree.Utils.updateVisible(e, 'tranCamera', true);  
-	            });
+	            viewport.camera = info.endCamera;  
+	            viewer.scene.measurements.forEach((e)=>{ 
+	                Potree.Utils.updateVisible(e, 'tranCamera', true); 
+	            }); 
+	            viewer.dispatchEvent({type:'camera_changed', viewport:viewer.mainViewport, changeInfo:{}});//update sprite
+	       
+	            
 	            callback && callback();
 	        }; 
 	        
@@ -57960,7 +57963,7 @@
 	                this.uniforms.resolution.value.copy(viewport.resolution);  
 	                this.uniforms.devicePixelRatio.value = window.devicePixelRatio; 
 	                this.lineWidth = this.lineWidth_; //update
-	                if(!this.useDepth || !e.viewport.camera.isPerspectiveCamera || !e.viewport)return
+	                if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera  */|| !e.viewport)return
 	                let viewportOffset = viewport.offset || new THREE.Vector2(); 
 	                this.uniforms.viewportOffset.value.copy(viewportOffset);
 	                
@@ -58031,7 +58034,7 @@
 	        var viewport = e.viewport || viewer.mainViewport;
 	        var camera = viewport.camera;
 	        
-	        let hasDepth = this.useDepth && camera.isPerspectiveCamera && 
+	        let hasDepth = this.useDepth/*  && camera.isPerspectiveCamera */ && 
 	                (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL);
 	        
 	        this.setRealDepth(hasDepth);
@@ -75246,7 +75249,7 @@ void main()
 	        
 	        this.events = {
 	            setSize:(e)=>{//如果出现横条状的异常,往往是viewportOffset出错  //地图不需要
-	                if(!this.useDepth || !e.viewport.camera.isPerspectiveCamera || !e.viewport)return
+	                if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera  */|| !e.viewport)return
 	                let viewport = e.viewport;
 	                let viewportOffset = viewport.offset || new Vector2(); 
 	                
@@ -75374,7 +75377,7 @@ void main()
 	        var viewport = e.viewport || viewer.mainViewport;
 	        var camera = viewport.camera;
 	        
-	        let hasDepth = this.useDepth && camera.isPerspectiveCamera && 
+	        let hasDepth = this.useDepth /* && camera.isPerspectiveCamera */ && 
 	                (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL);
 	        
 	        this.setRealDepth(hasDepth);
@@ -75478,8 +75481,8 @@ void main()
 	        return v;
 	    }
 	    
-	    update(e){
-	        if(!e){
+	    update(e={}){
+	        if(!e.viewport){
 	            let viewports = this.viewports || viewer.viewports;
 	            if(!viewports)return
 	            viewports.forEach(view=>{
@@ -80571,7 +80574,7 @@ void main()
 	    
 	    dropMarker(e){
 	        //console.log('dropMarker')
-	        if (this.isNew && e.pressDistance>Potree.config.clickMaxDragDis){//拖拽的话返回
+	        if (this.isNew && !browser.isMobile() && e.pressDistance>Potree.config.clickMaxDragDis){//拖拽的话返回
 	            return this.continueDrag(null,e)   
 	        } 
 	         
@@ -82682,7 +82685,7 @@ void main()
 	            });
 	            
 	            viewer.inputHandler.dispatchEvent({type:'isMeasuring',  v:false, cause:'stopInsertion'}  ); 
-	            
+	            viewer.controls.setEnable(true); 
 	            
 	            //var isIntersectSelf = measure.atPlane && measure.closed && !measure.isRect && measure.point2dInfo && measure.intersectSelf(measure.point2dInfo.points2d.slice(0,measure.point2dInfo.points2d.length-1))//检测除了最后一个点的相交情况
 	            var isIntersectSelf = measure.atPlane && measure.closed && !measure.isRect && measure.point2dInfo && measure.intersectSelf(measure.point2dInfo.points2d);
@@ -82751,7 +82754,7 @@ void main()
 	        let mouseleave = (e) => { 
 	            measure.setMarkerSelected(e.object, 'unhover', 'single'); 
 	        };  
-	          
+	        let isMobile = browser.isMobile();  
 	                 
 	        let click = (e)=>{//一旦点击就立刻增加两marker  
 	         
@@ -82761,6 +82764,10 @@ void main()
 	            
 	            if(e.button === MOUSE.RIGHT)return 
 	            
+	            if(isMobile){
+	                viewer.controls.setEnable(false);
+	            }
+	            
 	            //console.log('measure clicked33', !!e.intersectPoint)
 	             
 	            //var I = e.intersectPoint && (e.intersectPoint.orthoIntersect || e.intersectPoint.location)
@@ -82777,10 +82784,10 @@ void main()
 	             
 	            var marker = measure.addMarker({point:I});
 	            marker.isDragging = true; 
-	            this.viewer.inputHandler.startDragging(marker , {endDragFun, notPressMouse:true} ); //notPressMouse代表不是通过按下鼠标来拖拽
+	            this.viewer.inputHandler.startDragging(marker , {endDragFun, notPressMouse:!isMobile} ); //notPressMouse代表不是通过按下鼠标来拖拽
 	            e.drag = this.viewer.inputHandler.drag;
 	            e.drag.endDragFun = endDragFun;
-	            e.drag.notPressMouse = true;
+	            e.drag.notPressMouse = !isMobile;
 	            
 	            //if(!measure.dragMarker(e) || !measure.dropMarker(e))return
 	             
@@ -82799,7 +82806,7 @@ void main()
 	            
 	            
 	            this.viewer.removeEventListener('global_click', click);///* global_drop */
-	            
+	            this.viewer.removeEventListener('global_touchstart', click );//add  importance
 	            measure.dispatchEvent('firstClick');
 	            
 	            //console.log('measure clicked')
@@ -82812,7 +82819,12 @@ void main()
 	        
 	        viewer.inputHandler.dispatchEvent({type: 'isMeasuring', v: true, cause:'startInsertion'});
 	        
-	        this.viewer.addEventListener('global_click', click, {importance:10});//add  importance
+	            
+	        if( isMobile ){
+	            this.viewer.addEventListener('global_touchstart', click, {importance:10});//add  importance
+	        }else {
+	            this.viewer.addEventListener('global_click', click, {importance:10});//add  importance
+	        } 
 	            
 	        let ifAtWrongPlace = (e)=>{
 	            if(measure.unableDragAtMap && e.hoverViewport.name == 'mapViewport' ){ 
@@ -88250,7 +88262,7 @@ void main()
 	        const viewer = this.viewer; 
 			let camera = params.camera ? params.camera : viewer.scene.getActiveCamera();
 	        let rtEDL = (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL) && 
-	                    Features.EXT_DEPTH.isSupported() && camera.type != "OrthographicCamera" && !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport));  // 平面相机不用depthTex直接打开depthTest?且不使用edl
+	                    Features.EXT_DEPTH.isSupported() /* && camera.type != "OrthographicCamera"  */&& !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport));  // 平面相机不用depthTex直接打开depthTest?且不使用edl
 	        let useEDL = viewer.useEDL && rtEDL && Potree.settings.displayMode != 'showPanos';
 	        
 	        let target = params.target || null;
@@ -91757,7 +91769,7 @@ void main()
 	            viewer.focusOnObject(viewer.bound, 'boundingBox', 1000, {
 	                endPitch: pitch, endYaw: yaw , dir,  startCamera, endCamera
 	            }).promise.done(()=>{  
-	                
+	                viewer.dispatchEvent('reachTopView');
 	                done && done();
 	                navCubeViewer.dispatchEvent('content_changed');
 	            });
@@ -91781,10 +91793,11 @@ void main()
 	                let position = new Vector3().copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis)); 
 	                //view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis)); 
 	                this.controls.setEnable(true);
-
+	                viewer.dispatchEvent('leaveTopView');
 
 	                view.tranCamera(viewer.mainViewport,  { position ,   
 	                    callback:()=>{ 
+	                        
 	                    }, startCamera:viewer.scene.cameraO, endCamera:viewer.scene.cameraP, midCamera:viewer.scene.cameraBasic
 	                }, 500);
 
@@ -141380,7 +141393,7 @@ ENDSEC
 	    if(Potree.fileServer){ 
 	        path = '/vision.json';
 	    }else {
-	        path = '/floor_0_webcloud/floor_0_vision.txt';   //`${Potree.settings.urls.prefix1}/vision.json` 
+	        path = `${Potree.settings.urls.prefix1}/floor_0_webcloud/floor_0_vision.txt`; //'/floor_0_webcloud/floor_0_vision.txt'   //`${Potree.settings.urls.prefix1}/vision.json` 
 	    }
 	    return Potree.getRealUrl(path, (path)=>{
 	        loadFile(path, {  }, callback, );  

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


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

@@ -95,6 +95,13 @@ var enter = ({
             msg: e.msg
         });
     });
+    
+    viewer.addEventListener("reachTopView", (e) => {
+         sceneBus.emit("enterTopView") 
+    });
+    viewer.addEventListener("leaveTopView", (e) => {
+         sceneBus.emit("leaveTopView") 
+    });
 
     let cameraChange = (e) => {
         var camera = e.viewport.camera;
@@ -546,7 +553,7 @@ var enter = ({
                     ...getMeasureFunction(measure, bus),
                 };
                 
-                setTimeout(()=>{viewer.dispatchEvent('content_changed')},1)
+                viewer.dispatchEvent({type:'camera_changed', viewport:viewer.mainViewport, changeInfo:{}})//update sprite
                 
                 return ret;
             },