@xeokit/xeokit-sdk 2.6.28 → 2.6.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/xeokit-sdk.cjs.js +1425 -649
- package/dist/xeokit-sdk.es.js +1420 -650
- package/dist/xeokit-sdk.es5.js +629 -552
- package/dist/xeokit-sdk.min.cjs.js +5 -5
- package/dist/xeokit-sdk.min.es.js +5 -5
- package/dist/xeokit-sdk.min.es5.js +4 -4
- package/package.json +1 -1
- package/src/extras/PointerCircle/PointerCircle.js +1 -1
- package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +22 -41
- package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js +3 -18
- package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +20 -41
- package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js +4 -20
- package/src/plugins/DistanceMeasurementsPlugin/index.js +1 -1
- package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +2 -110
- package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +252 -222
- package/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +31 -1
- package/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +20 -8
- package/src/plugins/ZonesPlugin/ZonesPlugin.js +1939 -0
- package/src/plugins/ZonesPlugin/index.js +1 -1875
- package/src/viewer/Viewer.js +2 -2
- package/src/viewer/metadata/MetaScene.js +0 -2
- package/src/viewer/scene/math/MeshSurfaceArea.js +90 -0
- package/src/viewer/scene/math/MeshVolume.js +102 -0
- package/src/viewer/scene/math/index.js +3 -0
- package/src/viewer/scene/math/isTriangleMeshSolid.js +162 -0
- package/src/viewer/scene/math/math.js +8 -0
- package/src/viewer/scene/model/SceneModel.js +73 -34
- package/src/viewer/scene/model/SceneModelEntity.js +46 -1
- package/src/viewer/scene/model/SceneModelMesh.js +74 -1
- package/src/viewer/scene/model/SceneModelTextureSet.js +5 -0
- package/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +7 -1
- package/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +77 -1
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +8 -0
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +8 -0
- package/src/viewer/scene/model/vbo/VBORenderer.js +10 -1
- package/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +6 -1
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +1 -1
- package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +6 -1
- package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +59 -18
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +40 -12
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +2 -3
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +25 -7
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +1 -1
- package/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +6 -1
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +1 -1
- package/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +6 -1
- package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +48 -14
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +74 -47
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +29 -14
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +5 -4
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +1 -1
- package/src/viewer/scene/scene/Scene.js +16 -5
- package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +1 -1
- package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +1 -5
- package/types/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.d.ts +7 -0
- package/types/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.d.ts +26 -1
- package/types/plugins/DistanceMeasurementsPlugin/index.d.ts +3 -1
package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js
CHANGED
|
@@ -4,7 +4,6 @@ import {TrianglesInstancingRenderer} from "./TrianglesInstancingRenderer.js";
|
|
|
4
4
|
* @private
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
9
8
|
_getHash() {
|
|
10
9
|
const scene = this._scene;
|
|
@@ -40,7 +39,7 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
40
39
|
|
|
41
40
|
this._addMatricesUniformBlockLines(src);
|
|
42
41
|
|
|
43
|
-
src.push("uniform mat3 uvDecodeMatrix;")
|
|
42
|
+
src.push("uniform mat3 uvDecodeMatrix;");
|
|
44
43
|
|
|
45
44
|
if (scene.logarithmicDepthBufferEnabled) {
|
|
46
45
|
src.push("uniform float logDepthBufFC;");
|
|
@@ -73,7 +72,7 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
73
72
|
src.push("vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); ");
|
|
74
73
|
src.push("worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);");
|
|
75
74
|
if (scene.entityOffsetsEnabled) {
|
|
76
|
-
src.push("
|
|
75
|
+
src.push("worldPosition.xyz = worldPosition.xyz + offset;");
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
src.push("vec4 viewPosition = viewMatrix * worldPosition; ");
|
|
@@ -101,11 +100,10 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
101
100
|
_buildFragmentShader() {
|
|
102
101
|
const scene = this._scene;
|
|
103
102
|
const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.
|
|
104
|
-
const sectionPlanesState = scene._sectionPlanesState;
|
|
105
103
|
const lightsState = scene._lightsState;
|
|
106
|
-
|
|
107
|
-
let len;
|
|
104
|
+
const sectionPlanesState = scene._sectionPlanesState;
|
|
108
105
|
const clipping = sectionPlanesState.getNumAllocatedSectionPlanes() > 0;
|
|
106
|
+
const useAlphaCutoff = this._useAlphaCutoff;
|
|
109
107
|
const src = [];
|
|
110
108
|
src.push("#version 300 es");
|
|
111
109
|
src.push("// Instancing geometry drawing fragment shader");
|
|
@@ -117,6 +115,7 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
117
115
|
src.push("precision mediump float;");
|
|
118
116
|
src.push("precision mediump int;");
|
|
119
117
|
src.push("#endif");
|
|
118
|
+
|
|
120
119
|
if (scene.logarithmicDepthBufferEnabled) {
|
|
121
120
|
src.push("in float isPerspective;");
|
|
122
121
|
src.push("uniform float logDepthBufFC;");
|
|
@@ -165,7 +164,7 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
165
164
|
this._addMatricesUniformBlockLines(src);
|
|
166
165
|
|
|
167
166
|
src.push("uniform vec4 lightAmbient;");
|
|
168
|
-
for (i = 0, len = lightsState.lights.length; i < len; i++) {
|
|
167
|
+
for (let i = 0, len = lightsState.lights.length; i < len; i++) {
|
|
169
168
|
const light = lightsState.lights[i];
|
|
170
169
|
if (light.type === "ambient") {
|
|
171
170
|
continue;
|
|
@@ -183,6 +182,10 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
183
182
|
}
|
|
184
183
|
}
|
|
185
184
|
|
|
185
|
+
if (useAlphaCutoff) {
|
|
186
|
+
src.push("uniform float materialAlphaCutoff;");
|
|
187
|
+
}
|
|
188
|
+
|
|
186
189
|
src.push("in vec4 vViewPosition;");
|
|
187
190
|
src.push("in vec4 vColor;");
|
|
188
191
|
src.push("in vec2 vUV;");
|
|
@@ -218,7 +221,7 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
218
221
|
src.push("vec3 yTangent = dFdy( vViewPosition.xyz );");
|
|
219
222
|
src.push("vec3 viewNormal = normalize( cross( xTangent, yTangent ) );");
|
|
220
223
|
|
|
221
|
-
for (i = 0, len = lightsState.lights.length; i < len; i++) {
|
|
224
|
+
for (let i = 0, len = lightsState.lights.length; i < len; i++) {
|
|
222
225
|
const light = lightsState.lights[i];
|
|
223
226
|
if (light.type === "ambient") {
|
|
224
227
|
continue;
|
|
@@ -244,16 +247,27 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
244
247
|
} else {
|
|
245
248
|
continue;
|
|
246
249
|
}
|
|
250
|
+
|
|
247
251
|
src.push("lambertian = max(dot(-viewNormal, viewLightDir), 0.0);");
|
|
248
252
|
src.push("reflectedColor += lambertian * (lightColor" + i + ".rgb * lightColor" + i + ".a);");
|
|
249
253
|
}
|
|
250
254
|
|
|
251
255
|
src.push("vec4 color = vec4((lightAmbient.rgb * lightAmbient.a * newColor.rgb) + (reflectedColor * newColor.rgb), newColor.a);");
|
|
256
|
+
|
|
257
|
+
src.push("vec4 sampleColor = texture(uColorMap, vUV);");
|
|
258
|
+
|
|
259
|
+
if (useAlphaCutoff) {
|
|
260
|
+
src.push("if (sampleColor.a < materialAlphaCutoff) {");
|
|
261
|
+
src.push(" discard;");
|
|
262
|
+
src.push("}");
|
|
263
|
+
}
|
|
264
|
+
|
|
252
265
|
if (gammaOutput) {
|
|
253
|
-
src.push("
|
|
254
|
-
} else {
|
|
255
|
-
src.push("vec4 colorTexel = color * texture(uColorMap, vUV);");
|
|
266
|
+
src.push("sampleColor = sRGBToLinear(sampleColor);");
|
|
256
267
|
}
|
|
268
|
+
|
|
269
|
+
src.push("vec4 colorTexel = color * sampleColor;");
|
|
270
|
+
|
|
257
271
|
src.push("float opacity = color.a;");
|
|
258
272
|
|
|
259
273
|
if (this._withSAO) {
|
|
@@ -265,9 +279,10 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
265
279
|
src.push(" float blendFactor = uSAOParams[3];");
|
|
266
280
|
src.push(" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);");
|
|
267
281
|
src.push(" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture(uOcclusionTexture, uv))) * blendFactor;");
|
|
268
|
-
|
|
282
|
+
|
|
283
|
+
src.push(" outColor = vec4(colorTexel.rgb * ambient, opacity);");
|
|
269
284
|
} else {
|
|
270
|
-
src.push(" outColor = vec4(
|
|
285
|
+
src.push(" outColor = vec4(colorTexel.rgb, opacity);");
|
|
271
286
|
}
|
|
272
287
|
|
|
273
288
|
if (gammaOutput) {
|
|
@@ -275,7 +290,7 @@ export class TrianglesColorTextureRenderer extends TrianglesInstancingRenderer {
|
|
|
275
290
|
}
|
|
276
291
|
|
|
277
292
|
if (scene.logarithmicDepthBufferEnabled) {
|
|
278
|
-
src.push("
|
|
293
|
+
src.push("gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;");
|
|
279
294
|
}
|
|
280
295
|
|
|
281
296
|
src.push("}");
|
package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js
CHANGED
|
@@ -4,8 +4,8 @@ import {VBORenderer} from "./../../../VBORenderer.js";
|
|
|
4
4
|
* @private
|
|
5
5
|
*/
|
|
6
6
|
export class TrianglesInstancingRenderer extends VBORenderer {
|
|
7
|
-
constructor(scene, withSAO, {edges = false} = {}) {
|
|
8
|
-
super(scene, withSAO, {instancing: true, edges});
|
|
7
|
+
constructor(scene, withSAO, {edges = false, useAlphaCutoff = false} = {}) {
|
|
8
|
+
super(scene, withSAO, {instancing: true, edges, useAlphaCutoff});
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
_draw(drawCfg) {
|
|
@@ -14,16 +14,17 @@ export class TrianglesInstancingRenderer extends VBORenderer {
|
|
|
14
14
|
const {
|
|
15
15
|
state,
|
|
16
16
|
frameCtx,
|
|
17
|
-
incrementDrawState
|
|
17
|
+
incrementDrawState
|
|
18
18
|
} = drawCfg;
|
|
19
19
|
|
|
20
20
|
if (this._edges) {
|
|
21
21
|
gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);
|
|
22
22
|
} else {
|
|
23
23
|
gl.drawElementsInstanced(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);
|
|
24
|
+
|
|
24
25
|
if (incrementDrawState) {
|
|
25
26
|
frameCtx.drawElements++;
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
}
|
|
30
|
+
}
|
|
@@ -230,7 +230,7 @@ export class TrianglesSnapRenderer extends VBORenderer {
|
|
|
230
230
|
// renderPass = PICK
|
|
231
231
|
src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);
|
|
232
232
|
src.push(`if (pickFlag != renderPass) {`);
|
|
233
|
-
src.push(" gl_Position = vec4(
|
|
233
|
+
src.push(" gl_Position = vec4(2.0, 0.0, 0.0, 0.0);"); // Cull vertex
|
|
234
234
|
src.push("} else {");
|
|
235
235
|
src.push(" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); ");
|
|
236
236
|
src.push(" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);");
|
|
@@ -368,6 +368,8 @@ class Scene extends Component {
|
|
|
368
368
|
|
|
369
369
|
this._aabbDirty = true;
|
|
370
370
|
|
|
371
|
+
this._readableGeometry = !!cfg.readableGeometryEnabled;
|
|
372
|
+
|
|
371
373
|
/**
|
|
372
374
|
* The {@link Viewer} this Scene belongs to.
|
|
373
375
|
* @type {Viewer}
|
|
@@ -1292,18 +1294,27 @@ class Scene extends Component {
|
|
|
1292
1294
|
}
|
|
1293
1295
|
|
|
1294
1296
|
/**
|
|
1295
|
-
* Whether
|
|
1297
|
+
* Whether geometry is readable.
|
|
1296
1298
|
*
|
|
1297
1299
|
* This is set via the {@link Viewer} constructor and is ````false```` by default.
|
|
1298
1300
|
*
|
|
1299
|
-
* The ````
|
|
1301
|
+
* The ````readableGeometryEnabled```` option for ````Scene#pick```` only works if this is set ````true````.
|
|
1300
1302
|
*
|
|
1301
1303
|
* Note that when ````true````, this configuration will increase the amount of browser memory used by the Viewer.
|
|
1302
1304
|
*
|
|
1303
|
-
* @returns {Boolean} True if
|
|
1305
|
+
* @returns {Boolean} True if geometry is readable.
|
|
1306
|
+
*/
|
|
1307
|
+
get readableGeometryEnabled() {
|
|
1308
|
+
return this._readableGeometry;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
/**
|
|
1312
|
+
* Whether precision surface picking is enabled.
|
|
1313
|
+
* @deprecated
|
|
1314
|
+
* @returns {*|boolean}
|
|
1304
1315
|
*/
|
|
1305
1316
|
get pickSurfacePrecisionEnabled() {
|
|
1306
|
-
return
|
|
1317
|
+
return this._readableGeometry;
|
|
1307
1318
|
}
|
|
1308
1319
|
|
|
1309
1320
|
/**
|
|
@@ -2284,7 +2295,7 @@ class Scene extends Component {
|
|
|
2284
2295
|
*
|
|
2285
2296
|
* @param {*} params Picking parameters.
|
|
2286
2297
|
* @param {Boolean} [params.pickSurface=false] Whether to find the picked position on the surface of the Entity.
|
|
2287
|
-
* @param {Boolean} [params.pickSurfacePrecision=false] When picking an Entity surface position, indicates whether or not we want full-precision {@link PickResult#worldPos}. Only works when {@link Scene#
|
|
2298
|
+
* @param {Boolean} [params.pickSurfacePrecision=false] When picking an Entity surface position, indicates whether or not we want full-precision {@link PickResult#worldPos}. Only works when {@link Scene#readableGeometryEnabled} is ````true````. If pick succeeds, the returned {@link PickResult} will have {@link PickResult#precision} set ````true````, to indicate that it contains full-precision surface pick results.
|
|
2288
2299
|
* @param {Boolean} [params.pickSurfaceNormal=false] Whether to find the picked normal on the surface of the Entity. Only works if ````pickSurface```` is given.
|
|
2289
2300
|
* @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis.
|
|
2290
2301
|
* @param {Number[]} [params.origin] World-space ray origin when ray-picking. Ignored when canvasPos given.
|
|
@@ -99,7 +99,7 @@ class OcclusionLayer {
|
|
|
99
99
|
for (let i = 0; i < this.numMarkers; i++) {
|
|
100
100
|
if (this.markerList[i]) {
|
|
101
101
|
const marker = this.markerList[i];
|
|
102
|
-
const worldPos = marker.
|
|
102
|
+
const worldPos = marker.rtcPos;
|
|
103
103
|
this.positions[j++] = worldPos[0];
|
|
104
104
|
this.positions[j++] = worldPos[1];
|
|
105
105
|
this.positions[j++] = worldPos[2];
|
|
@@ -2,7 +2,6 @@ import {math} from '../../math/math.js';
|
|
|
2
2
|
import {Program} from "./../Program.js";
|
|
3
3
|
import {OcclusionLayer} from "./OcclusionLayer.js";
|
|
4
4
|
import {createRTCViewMat, getPlaneRTCPos} from "../../math/rtcCoords.js";
|
|
5
|
-
import {WEBGL_INFO} from "../../webglInfo.js";
|
|
6
5
|
|
|
7
6
|
const TEST_MODE = false;
|
|
8
7
|
const MARKER_COLOR = math.vec3([1.0, 0.0, 0.0]);
|
|
@@ -333,10 +332,7 @@ class OcclusionTester {
|
|
|
333
332
|
continue;
|
|
334
333
|
}
|
|
335
334
|
|
|
336
|
-
|
|
337
|
-
// because OcclusionLayer markers' transformation is being applied through the
|
|
338
|
-
// OcclusionLayer::positions array. See XEOK-33
|
|
339
|
-
const origin = [ 0, 0, 0 ];
|
|
335
|
+
const origin = occlusionLayer.origin;
|
|
340
336
|
|
|
341
337
|
gl.uniformMatrix4fv(this._uViewMatrix, false, createRTCViewMat(camera.viewMatrix, origin));
|
|
342
338
|
|
|
@@ -231,4 +231,11 @@ export declare class DistanceMeasurement extends Component {
|
|
|
231
231
|
* @type {Boolean}
|
|
232
232
|
*/
|
|
233
233
|
get labelsOnWires() : boolean;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Sets the higlihted state on a measurement
|
|
237
|
+
*
|
|
238
|
+
* @type {String}
|
|
239
|
+
*/
|
|
240
|
+
setHighlighted(highlighted: boolean): void;
|
|
234
241
|
}
|
|
@@ -91,6 +91,31 @@ export declare type DistanceMeasurementMouseLeaveEvent = {
|
|
|
91
91
|
event: MouseEvent;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Event fire by {@link DistanceMeasurementsPlugin} when context menu is shown on {@link DistanceMeasurement}.
|
|
96
|
+
*/
|
|
97
|
+
export declare type DistanceMeasurementMouseContextMenuEvent = {
|
|
98
|
+
/**
|
|
99
|
+
* The plugin.
|
|
100
|
+
*/
|
|
101
|
+
plugin: DistanceMeasurementsPlugin;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The measurement.
|
|
105
|
+
*/
|
|
106
|
+
distanceMeasurement: DistanceMeasurement;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The measurement.
|
|
110
|
+
*/
|
|
111
|
+
measurement: DistanceMeasurement;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* The original mouse event.
|
|
115
|
+
*/
|
|
116
|
+
event: MouseEvent;
|
|
117
|
+
}
|
|
118
|
+
|
|
94
119
|
/**
|
|
95
120
|
* {@link Viewer} plugin for measuring point-to-point distances.
|
|
96
121
|
*/
|
|
@@ -206,7 +231,7 @@ export declare class DistanceMeasurementsPlugin extends Plugin {
|
|
|
206
231
|
* @param {String} event The contextMenu event
|
|
207
232
|
* @param {Function} callback Callback fired on the event
|
|
208
233
|
*/
|
|
209
|
-
on(event: "contextMenu", callback: (
|
|
234
|
+
on(event: "contextMenu", callback: (event: DistanceMeasurementMouseContextMenuEvent)=> void): string;
|
|
210
235
|
|
|
211
236
|
/**
|
|
212
237
|
* Fires when a measurement is created.
|