|
@@ -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
|
|
|
|
|
|
|