|
|
@@ -42659,6 +42659,12 @@
|
|
|
this.add(o.edge);
|
|
|
this.edges = [...this.edges.slice(0, index), o.edge, ...this.edges.slice(index, this.edges.length)];
|
|
|
}
|
|
|
+ var event = {
|
|
|
+ type: 'marker_added',
|
|
|
+ marker: o.marker,
|
|
|
+ index
|
|
|
+ };
|
|
|
+ this.dispatchEvent(event);
|
|
|
}
|
|
|
dragMarker(e) {
|
|
|
var I, atMap;
|
|
|
@@ -43349,19 +43355,20 @@
|
|
|
if (result.length == count || count == void 0) return result;
|
|
|
}
|
|
|
getTotalDistance() {
|
|
|
- if (this.points.length === 0) {
|
|
|
+ var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.points;
|
|
|
+ if (points.length === 0) {
|
|
|
return 0;
|
|
|
}
|
|
|
var distance = 0;
|
|
|
- for (var i = 1; i < this.points.length; i++) {
|
|
|
- var prev = this.points[i - 1];
|
|
|
- var curr = this.points[i];
|
|
|
+ for (var i = 1; i < points.length; i++) {
|
|
|
+ var prev = points[i - 1];
|
|
|
+ var curr = points[i];
|
|
|
var d = prev.distanceTo(curr);
|
|
|
distance += d;
|
|
|
}
|
|
|
- if (this.closed && this.points.length > 1) {
|
|
|
- var first = this.points[0];
|
|
|
- var last = this.points[this.points.length - 1];
|
|
|
+ if (this.closed && points.length > 1) {
|
|
|
+ var first = points[0];
|
|
|
+ var last = points[points.length - 1];
|
|
|
var _d = last.distanceTo(first);
|
|
|
distance += _d;
|
|
|
}
|
|
|
@@ -44058,12 +44065,14 @@
|
|
|
coordinateLabel.setVisible(false);
|
|
|
this.coordinateLabels.push(coordinateLabel);
|
|
|
}
|
|
|
- var event = {
|
|
|
- type: 'marker_added',
|
|
|
- measurement: this,
|
|
|
- marker: marker
|
|
|
+
|
|
|
+ /* let event = {
|
|
|
+ type: 'marker_added',
|
|
|
+ measurement: this,
|
|
|
+ marker: marker
|
|
|
};
|
|
|
- this.dispatchEvent(event);
|
|
|
+ this.dispatchEvent(event); */
|
|
|
+
|
|
|
this.expands.forEach(e => e.addMarker(o));
|
|
|
//this.setMarker(this.points.length - 1, point);
|
|
|
this.update({
|
|
|
@@ -45328,13 +45337,14 @@
|
|
|
}
|
|
|
}
|
|
|
getPosByIntersect(e, type) {
|
|
|
+ var points = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.points;
|
|
|
//intersect落在线上的位置,以及在哪两个点之间
|
|
|
var modelMatrixInvert = this.edge.matrixWorld.clone().invert();
|
|
|
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]);
|
|
|
+ var point = math.getFootPoint(e.hoveredElement.point, points[prevIndex], points[nextIndex]);
|
|
|
return {
|
|
|
index,
|
|
|
prevIndex,
|
|
|
@@ -45355,7 +45365,7 @@
|
|
|
};
|
|
|
}
|
|
|
var _prevIndex, _nextIndex;
|
|
|
- var count = this.points.length - 1;
|
|
|
+ var count = 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中哪个点之后(可包含)
|
|
|
@@ -45382,7 +45392,7 @@
|
|
|
var searchIndex;
|
|
|
while (j <= _nextIndex) {
|
|
|
//根据APlen长度算区间
|
|
|
- var len = AB.clone().normalize().dot(new Vector3().subVectors(this.points[j + 1], A)); //在AB的投影长度
|
|
|
+ var len = AB.clone().normalize().dot(new Vector3().subVectors(points[j + 1], A)); //在AB的投影长度
|
|
|
if (len > APlen) {
|
|
|
searchIndex = j;
|
|
|
break;
|
|
|
@@ -45697,21 +45707,14 @@
|
|
|
this.removePoint(this.markers.indexOf(marker));
|
|
|
} else {
|
|
|
//点击选中点
|
|
|
- this.dispatchEvent({
|
|
|
- type: 'markerSelect',
|
|
|
- marker
|
|
|
+ this.markers.forEach(marker_ => {
|
|
|
+ marker_ != marker && this.setMarkerSelected(marker_, 'unclick');
|
|
|
});
|
|
|
this.setMarkerSelected(marker, 'click');
|
|
|
setTimeout(() => {
|
|
|
viewer.addEventListener('global_click', e => {
|
|
|
- var _e$clickElement;
|
|
|
//点击空白处取消全部
|
|
|
- if (((_e$clickElement = e.clickElement) === null || _e$clickElement === void 0 ? void 0 : _e$clickElement.oriObject) == marker) return;
|
|
|
- this.dispatchEvent({
|
|
|
- type: 'markerSelect',
|
|
|
- marker,
|
|
|
- cancel: true
|
|
|
- });
|
|
|
+ //if(e.clickElement?.oriObject == marker)return
|
|
|
this.setMarkerSelected(marker, 'unclick');
|
|
|
}, {
|
|
|
once: true
|
|
|
@@ -45721,7 +45724,7 @@
|
|
|
e.consume();
|
|
|
});
|
|
|
marker.addEventListener('startDragging', e => {
|
|
|
- this.isNew || this.setMarkerSelected(marker, 'click'); //选中
|
|
|
+ this.isNew || this.setMarkerSelected(marker, 'drag'); //选中
|
|
|
this.isNew || viewer.measuringTool.history.beforeChange(this);
|
|
|
this.arrows && Potree.Utils.updateVisible(this.arrows, 'dragging', false);
|
|
|
//Potree.Common.waitTool.cancel('pathUpdateArrowDelay')
|
|
|
@@ -45743,7 +45746,7 @@
|
|
|
});
|
|
|
this.lastDropTime = Date.now();
|
|
|
this.isNew || viewer.measuringTool.history.afterChange(this);
|
|
|
- this.setMarkerSelected(marker, 'unclick');
|
|
|
+ this.setMarkerSelected(marker, 'undrag');
|
|
|
});
|
|
|
var label = this.createMarkerLabel('');
|
|
|
this.markerLabels = [...this.markerLabels.slice(0, index), label, ...this.markerLabels.slice(index, this.points.length)];
|
|
|
@@ -45757,7 +45760,9 @@
|
|
|
return marker;
|
|
|
}
|
|
|
updateEndCaps() {
|
|
|
- var len = this.points.length;
|
|
|
+ var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.points;
|
|
|
+ //更新端点 (这把points提到参数里是因为有个隐藏点的项目)
|
|
|
+ var len = points.length;
|
|
|
var pts = this.geoPoints.length > 0 ? this.geoPoints : this.points;
|
|
|
var len2 = pts.length;
|
|
|
this.endCaps.forEach((e, i) => {
|
|
|
@@ -45870,9 +45875,18 @@
|
|
|
setMarkerSelected(marker, state) {
|
|
|
state == 'hover' && (marker.markerSelectStates.hover = true);
|
|
|
state == 'unhover' && (marker.markerSelectStates.hover = false);
|
|
|
- state == 'click' && (marker.markerSelectStates.click = true); //click or drag
|
|
|
- state == 'unclick' && (marker.markerSelectStates.click = false);
|
|
|
- if (marker.markerSelectStates.click) {
|
|
|
+ state == 'click' && (marker.markerSelectStates.click = true, this.dispatchEvent({
|
|
|
+ type: 'markerSelect',
|
|
|
+ marker
|
|
|
+ })); //click or drag
|
|
|
+ state == 'unclick' && (marker.markerSelectStates.click = false, this.dispatchEvent({
|
|
|
+ type: 'markerSelect',
|
|
|
+ marker,
|
|
|
+ cancel: true
|
|
|
+ }));
|
|
|
+ state == 'drag' && (marker.markerSelectStates.drag = true); //click or drag
|
|
|
+ state == 'undrag' && (marker.markerSelectStates.drag = false);
|
|
|
+ if (marker.markerSelectStates.click || marker.markerSelectStates.drag) {
|
|
|
marker.material = getMarkerMat('drag');
|
|
|
marker.renderOrder = marker.pickOrder = Potree.config.renderOrders.path.marker + 1;
|
|
|
} else if (marker.markerSelectStates.hover) {
|