|
@@ -22908,7 +22908,7 @@
|
|
|
showNeighSetGui: browser.urlHasValue('neighGui'),
|
|
|
selectShowBox: true,
|
|
|
//fastTran: isTest
|
|
|
- pathSmooth: false //true//true //smooth曲线, 非折线
|
|
|
+ pathSmooth: false // window.location.href.includes('192.168.0.59') //true //smooth曲线, 非折线
|
|
|
};
|
|
|
Potree.config = config$1;
|
|
|
Potree.settings = settings;
|
|
@@ -25055,8 +25055,7 @@
|
|
|
// check for a click
|
|
|
|
|
|
if (!Potree.settings.disableClick && pressDistance < Potree.config.clickMaxDragDis && pressTime < Potree.config.clickMaxPressTime && !e.unableClick) {
|
|
|
- var clickElement,
|
|
|
- _consumed = false;
|
|
|
+ var clickElement;
|
|
|
if (this.hoveredElements) {
|
|
|
clickElement = this.hoveredElements.find(e => e.object._listeners['click']);
|
|
|
if (clickElement) {
|
|
@@ -25069,7 +25068,8 @@
|
|
|
clickElement.object.dispatchEvent($.extend(this.getEventDesc(e, isTouch), {
|
|
|
type: 'click',
|
|
|
pressDistance,
|
|
|
- cancel
|
|
|
+ cancel,
|
|
|
+ consume
|
|
|
}));
|
|
|
if (canceled) {
|
|
|
//比如只需要右键的话,可以忽视左键的点击
|
|
@@ -25090,9 +25090,9 @@
|
|
|
this.deselectAll();
|
|
|
this.toggleSelection(selectable);
|
|
|
}
|
|
|
- _consumed = true; //add
|
|
|
+ consumed = true; //add
|
|
|
} else {
|
|
|
- if (this.selection.length > 0) _consumed = true; //add 取消选择后,阻断后续
|
|
|
+ if (this.selection.length > 0) consumed = true; //add 取消选择后,阻断后续
|
|
|
this.deselectAll();
|
|
|
}
|
|
|
//}
|
|
@@ -25100,22 +25100,19 @@
|
|
|
this.deselectAll();
|
|
|
}
|
|
|
}
|
|
|
- var _consume = () => {
|
|
|
- return _consumed = true;
|
|
|
- };
|
|
|
var desc = this.getEventDesc(e, isTouch);
|
|
|
- if (!_consumed) {
|
|
|
+ if (!consumed) {
|
|
|
this.viewer.dispatchEvent($.extend(desc, {
|
|
|
type: 'global_click',
|
|
|
pressDistance,
|
|
|
clickElement: clickElement /* || selectable */,
|
|
|
- consume: _consume
|
|
|
+ consume
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
//增加 单击:
|
|
|
this.needSingleClick = true;
|
|
|
- _consumed || setTimeout(() => {
|
|
|
+ consumed || setTimeout(() => {
|
|
|
if (this.needSingleClick) {
|
|
|
this.viewer.dispatchEvent($.extend(desc, {
|
|
|
type: 'global_single_click',
|
|
@@ -25127,10 +25124,10 @@
|
|
|
|
|
|
//自行执行双击:
|
|
|
|
|
|
- if (now - this.lastClickTime < Potree.config.doubleClickTime) {
|
|
|
+ if (!consumed && now - this.lastClickTime < Potree.config.doubleClickTime) {
|
|
|
this.onDoubleClick(e);
|
|
|
}
|
|
|
- this.lastClickTime = now;
|
|
|
+ consumed || (this.lastClickTime = now);
|
|
|
}
|
|
|
this.drag = null;
|
|
|
}
|
|
@@ -35310,7 +35307,7 @@
|
|
|
var easeName = arguments.length > 4 ? arguments[4] : undefined;
|
|
|
var callback = arguments.length > 5 ? arguments[5] : undefined;
|
|
|
//前两个参数有xy即可
|
|
|
- var z = Math.max(Potree.config.map.cameraHeight, endPosition.z + 1, endPosition.z + ((boundSize === null || boundSize === void 0 ? void 0 : boundSize.z) / 2 || 0));
|
|
|
+ var z = Math.max(Potree.config.map.cameraHeight, (endPosition.z || 0) + ((boundSize === null || boundSize === void 0 ? void 0 : boundSize.z) || 0) / 2 + 1);
|
|
|
endPosition = new Vector3(endPosition.x, endPosition.y, z);
|
|
|
this.view.moveOrthoCamera(this.viewports[0], {
|
|
|
endPosition,
|
|
@@ -35405,7 +35402,7 @@
|
|
|
}
|
|
|
viewer.viewports = [viewer.mainViewport, viewer.mapViewer.viewports[0]]; //因为mainViewer的相机变化会触发map的变化,所以先渲染mainViewer
|
|
|
}
|
|
|
- if (desc == 'measure') this.inputHandler.registerInteractiveScene(viewer.measuringTool.scene); //虽然用的是viewer的inputHandler,但借用了this.inputHandler的interactiveScenes
|
|
|
+ if (desc == 'measure') this.inputHandler.registerInteractiveScene(viewer.scene.overlayScene /* viewer.measuringTool.scene */); //虽然用的是viewer的inputHandler,但借用了this.inputHandler的interactiveScenes
|
|
|
else if (desc == 'split4Screens') {
|
|
|
this.inputHandler.registerInteractiveScene(viewer.scene.scene);
|
|
|
}
|
|
@@ -35419,7 +35416,7 @@
|
|
|
this.viewports[0].bottom = 0;
|
|
|
this.viewports[0].height = 1;
|
|
|
this.viewports[0].left = 0;
|
|
|
- this.renderMeasure || this.inputHandler.unregisterInteractiveScene(viewer.measuringTool.scene);
|
|
|
+ this.renderMeasure || this.inputHandler.unregisterInteractiveScene(viewer.scene.overlayScene /* viewer.measuringTool.scene */);
|
|
|
this.inputHandler.unregisterInteractiveScene(viewer.scene.scene);
|
|
|
viewer.viewports = [viewer.mainViewport];
|
|
|
this.updateScreenSize({
|
|
@@ -35444,9 +35441,9 @@
|
|
|
setDrawMeasure(draw) {
|
|
|
this.renderMeasure = !!draw;
|
|
|
if (draw) {
|
|
|
- this.inputHandler.registerInteractiveScene(viewer.measuringTool.scene);
|
|
|
+ this.inputHandler.registerInteractiveScene(viewer.scene.overlayScene /* viewer.measuringTool.scene */);
|
|
|
} else {
|
|
|
- this.inputHandler.unregisterInteractiveScene(viewer.measuringTool.scene);
|
|
|
+ this.inputHandler.unregisterInteractiveScene(viewer.scene.overlayScene /* viewer.measuringTool.scene */);
|
|
|
}
|
|
|
}
|
|
|
changeSplitScreenDir(dir, mapRatio) {
|
|
@@ -42648,6 +42645,7 @@
|
|
|
prevIndex,
|
|
|
point
|
|
|
} = this.getPosByIntersect(e);
|
|
|
+ viewer.measuringTool.history.beforeChange(this);
|
|
|
this.addMarker({
|
|
|
index,
|
|
|
point,
|
|
@@ -42663,6 +42661,7 @@
|
|
|
} else {
|
|
|
this.isNew || viewer.measuringTool.isAdding || this.setSelected('click'); //viewer.focusOnObject(this, 'measure') //正在添加测量线时不要focus其他线(容易误触)
|
|
|
}
|
|
|
+ e.consume(); //防止后续双击
|
|
|
});
|
|
|
};
|
|
|
this.edge.addEventListener('addHoverEvent', addHoverEvent, {
|
|
@@ -42715,64 +42714,76 @@
|
|
|
*/
|
|
|
getPosByIntersect(e, type) {
|
|
|
//intersect落在线上的位置
|
|
|
- /* let prevIndex = Math.floor(e.hoveredElement.faceIndex / 2) //端点1(可能是最后一个)
|
|
|
- let nextIndex = this.getIndex(prevIndex, 1) //端点2(可能是第一个)
|
|
|
- let index = prevIndex + 1 //新点在端点1后
|
|
|
- let point = math.getFootPoint(e.hoveredElement.point, this.points[prevIndex], this.points[nextIndex] );
|
|
|
- return {index, prevIndex, point } */
|
|
|
- var prevIndex0 = Math.floor(e.hoveredElement.faceIndex / 2); //端点1(可能是最后一个)
|
|
|
- var nextIndex0 = prevIndex0 + 1; //端点2(可能是第一个)
|
|
|
-
|
|
|
- var point = math.getFootPoint(e.hoveredElement.point, this.geoPoints[prevIndex0], this.geoPoints[nextIndex0]);
|
|
|
- //if(type == 'onlyPoint')return point
|
|
|
-
|
|
|
- var prevIndex, nextIndex;
|
|
|
- var count = this.points.length - 1;
|
|
|
- for (var i = 0; i < count; i++) {
|
|
|
- if (prevIndex == void 0 && i / count <= this.UtoTMapArr[prevIndex0] && (i + 1) / count > this.UtoTMapArr[prevIndex0]) {
|
|
|
- prevIndex = i; //在i之后
|
|
|
- }
|
|
|
- if (nextIndex == void 0 && i / count <= this.UtoTMapArr[nextIndex0] && (i + 1) / count > this.UtoTMapArr[nextIndex0]) {
|
|
|
- nextIndex = i;
|
|
|
- }
|
|
|
- }
|
|
|
- if (nextIndex == void 0) {
|
|
|
- //最后一段
|
|
|
- nextIndex = count - 1;
|
|
|
- }
|
|
|
- if (prevIndex != nextIndex) {
|
|
|
- //所在区跨点。
|
|
|
- console.log('跨点', prevIndex, nextIndex);
|
|
|
- this.geoPoints[prevIndex];
|
|
|
- var lengths = [];
|
|
|
- var j = prevIndex;
|
|
|
- var A = this.geoPoints[prevIndex0];
|
|
|
- var B = this.geoPoints[nextIndex0];
|
|
|
- var APlen = A.distanceTo(point); // 端点->点击点
|
|
|
- var AB = new Vector3().subVectors(B, A);
|
|
|
- var searchIndex;
|
|
|
- while (j < nextIndex) {
|
|
|
- var len = AB.clone().normalize().dot(new Vector3().subVectors(this.points[j + 1], A)); //在AB的投影长度
|
|
|
- if (len > APlen) {
|
|
|
- searchIndex = j;
|
|
|
- break;
|
|
|
+
|
|
|
+ if (!Potree.settings.pathSmooth) {
|
|
|
+ var prevIndex = Math.floor(e.hoveredElement.faceIndex / 2); //端点1(可能是最后一个)
|
|
|
+ var nextIndex = this.getIndex(prevIndex, 1); //端点2(可能是第一个)
|
|
|
+ var index = prevIndex + 1; //新点在端点1后
|
|
|
+ var point = math.getFootPoint(e.hoveredElement.point, this.points[prevIndex], this.points[nextIndex]);
|
|
|
+ return {
|
|
|
+ index,
|
|
|
+ prevIndex,
|
|
|
+ point
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ var prevIndex0 = Math.floor(e.hoveredElement.faceIndex / 2); //所在的mesh片段的端点1
|
|
|
+ var nextIndex0 = prevIndex0 + 1; //所在的mesh片段的端点2
|
|
|
+
|
|
|
+ var _point = math.getFootPoint(e.hoveredElement.point, this.geoPoints[prevIndex0], this.geoPoints[nextIndex0]);
|
|
|
+ if (type == 'onlyPoint') return {
|
|
|
+ point: _point
|
|
|
+ };
|
|
|
+ var _prevIndex, _nextIndex;
|
|
|
+ var count = this.points.length - 1;
|
|
|
+ for (var i = 0; i < count; i++) {
|
|
|
+ if (_prevIndex == void 0 && i / count <= this.UtoTMapArr[prevIndex0] && (i + 1) / count > this.UtoTMapArr[prevIndex0]) {
|
|
|
+ _prevIndex = i; //该片段端点1在原先points中哪个点之后(可包含)
|
|
|
+ }
|
|
|
+ if (_nextIndex == void 0 && i / count <= this.UtoTMapArr[nextIndex0] && (i + 1) / count > this.UtoTMapArr[nextIndex0]) {
|
|
|
+ _nextIndex = i; //该片段端点2在原先points中哪个点之后(可包含)
|
|
|
}
|
|
|
- j++;
|
|
|
}
|
|
|
- searchIndex || (searchIndex = nextIndex);
|
|
|
- nextIndex = searchIndex;
|
|
|
- prevIndex = nextIndex - 1;
|
|
|
- } else {
|
|
|
- nextIndex = prevIndex + 1;
|
|
|
+ if (_nextIndex == void 0) {
|
|
|
+ //最后一段
|
|
|
+ _nextIndex = count - 1;
|
|
|
+ }
|
|
|
+ if (_prevIndex == _nextIndex) {
|
|
|
+ //端点在相同区间。直接+1
|
|
|
+ _nextIndex = _prevIndex + 1;
|
|
|
+ } else {
|
|
|
+ //端点在不同points区间, 需要判断intersect的究竟在哪个区间
|
|
|
+ //console.log('跨点', prevIndex, nextIndex)
|
|
|
+ this.geoPoints[_prevIndex];
|
|
|
+ var lengths = [];
|
|
|
+ var j = _prevIndex;
|
|
|
+ var A = this.geoPoints[prevIndex0];
|
|
|
+ var B = this.geoPoints[nextIndex0];
|
|
|
+ var APlen = A.distanceTo(_point); // 端点->点击点
|
|
|
+ var AB = new Vector3().subVectors(B, A);
|
|
|
+ var searchIndex;
|
|
|
+ while (j <= _nextIndex) {
|
|
|
+ var len = AB.clone().normalize().dot(new Vector3().subVectors(this.points[j + 1], A)); //在AB的投影长度
|
|
|
+ if (len > APlen) {
|
|
|
+ searchIndex = j;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+ searchIndex == void 0 && (searchIndex = _nextIndex); //最后一个点之后
|
|
|
+ _prevIndex = searchIndex;
|
|
|
+ _nextIndex = _prevIndex + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //console.log(prevIndex, nextIndex)
|
|
|
+ var _index = _prevIndex + 1; //新点在端点1后
|
|
|
+ return {
|
|
|
+ index: _index,
|
|
|
+ prevIndex: _prevIndex,
|
|
|
+ point: _point
|
|
|
+ };
|
|
|
}
|
|
|
- console.log(prevIndex, nextIndex);
|
|
|
- var index = prevIndex0 + 1; //新点在端点1后
|
|
|
- return {
|
|
|
- index,
|
|
|
- prevIndex,
|
|
|
- point
|
|
|
- };
|
|
|
- }
|
|
|
+ } //如果后续还出现index错误的问题,可以改为绘制时用折线,完成后用曲线。
|
|
|
+
|
|
|
createMarkerLabel(text, hasHoverEvent) {
|
|
|
var label = new TextSprite$2($.extend({}, depthProps, {
|
|
|
sizeInfo: labelSizeInfo$1,
|
|
@@ -43086,8 +43097,7 @@
|
|
|
marker.addEventListener('click', e => {
|
|
|
if (this.isNew || e.button !== MOUSE.LEFT) return;
|
|
|
if (this.addOrRemovePoint) {
|
|
|
- //点击删除点
|
|
|
-
|
|
|
+ //点击删除点
|
|
|
this.removePoint(this.markers.indexOf(marker));
|
|
|
} else {
|
|
|
//点击选中点
|
|
@@ -43112,6 +43122,7 @@
|
|
|
});
|
|
|
}, 10);
|
|
|
}
|
|
|
+ e.consume();
|
|
|
});
|
|
|
marker.addEventListener('startDragging', e => {
|
|
|
this.isNew || this.setMarkerSelected(marker, 'click'); //选中
|
|
@@ -43243,6 +43254,9 @@
|
|
|
this.isEditing = state;
|
|
|
}
|
|
|
removePoint(index) {
|
|
|
+ if (index == -1) {
|
|
|
+ return; //双击会这样,加了迅速删除, 可能因为没来得及删
|
|
|
+ }
|
|
|
viewer.measuringTool.history.beforeChange(this);
|
|
|
this.removeMarker(index);
|
|
|
this.hideArrowUntilUpdate();
|
|
@@ -43278,7 +43292,7 @@
|
|
|
viewer.dispatchEvent('content_changed');
|
|
|
}
|
|
|
setSelected(state, byList) {
|
|
|
- if (state == 'click' && this.selectStates.click) return; //重复点击了
|
|
|
+ if (state == 'click' && this.selectStates.click) return this.setSelected('unclick'); //重复点击了
|
|
|
|
|
|
state == 'hover' && (this.selectStates.hover = true, byList || this.dispatchEvent({
|
|
|
type: 'highlight',
|
|
@@ -43966,7 +43980,8 @@
|
|
|
data.measure.reDraw();
|
|
|
data.measure.initData(data);
|
|
|
data.measure.isNew = data.isNew;
|
|
|
- console.log('changeByHistory points', data.points.length);
|
|
|
+
|
|
|
+ //console.log('changeByHistory points', data.points.length)
|
|
|
data.measure.dispatchEvent('changeByHistory');
|
|
|
|
|
|
/* if(data.measure.isPrism){
|
|
@@ -65737,7 +65752,7 @@
|
|
|
}
|
|
|
Potree.settings.unableNavigate = true;
|
|
|
Potree.settings.ifShowMarker = false;
|
|
|
- Potree.Utils.updateVisible(viewer.measuringTool.scene, 'clipModel', false);
|
|
|
+ Potree.Utils.updateVisible(viewer.scene.overlayScene /* viewer.measuringTool.scene */, 'clipModel', false);
|
|
|
//Potree.Utils.updateVisible(viewer.mapViewer.cursor, 'clipModel', false)//隐藏地图游标
|
|
|
viewer.inputHandler.toggleSelection(this.box);
|
|
|
viewer.inputHandler.fixSelection = true;
|
|
@@ -65823,7 +65838,7 @@
|
|
|
this.switchView('mainView');
|
|
|
Potree.settings.unableNavigate = false;
|
|
|
Potree.settings.ifShowMarker = this.previousView.ifShowMarker;
|
|
|
- Potree.Utils.updateVisible(viewer.measuringTool.scene, 'clipModel', true);
|
|
|
+ Potree.Utils.updateVisible(viewer.scene.overlayScene /* viewer.measuringTool.scene */, 'clipModel', true);
|
|
|
//Potree.Utils.updateVisible(viewer.mapViewer.cursor, 'clipModel', true)
|
|
|
viewer.setView(this.previousView);
|
|
|
viewer.setLimitFar(true);
|
|
@@ -87613,7 +87628,7 @@
|
|
|
path = sceneCode;
|
|
|
} else {
|
|
|
var prefix = Potree.settings.urls.panoPrefix || 'https://4dkk.4dage.com';
|
|
|
- path = "".concat(prefix, "/scene_view_data/").concat(sceneCode, "/images/vision.txt");
|
|
|
+ path = "".concat(prefix, "/swkk/").concat(sceneCode, "/wwwroot/scene_view_data/").concat(sceneCode, "/images/vision.txt");
|
|
|
}
|
|
|
model.sceneCode = sceneCode;
|
|
|
loadFile(path, {}, data => {
|