@itwin/ecschema-rpcinterface-tests 4.8.0-dev.4 → 4.8.0-dev.6
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/lib/dist/_bea9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +151 -73
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_1_6_node_modules_loaders_gl_draco_di-0642a6.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_meshoptimizer_0_20_0_node_modules_meshoptimizer_index_m-a5ae61.bundled-tests.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_bea9.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\
|
|
1
|
+
{"version":3,"file":"_bea9.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\14\\s\\common\\temp\\node_modules\\.pnpm\\@loaders.gl+worker-utils@3.1.6\\node_modules\\@loaders.gl\\worker-utils\\dist\\esm\\lib\\library-utils|../node/require-utils.node"],"names":[],"sourceRoot":""}
|
|
@@ -33600,6 +33600,16 @@ class FeatureOverrides {
|
|
|
33600
33600
|
getSubCategoryPriority(idLo, idHi) {
|
|
33601
33601
|
return this._subCategoryPriorities.get(idLo, idHi) ?? 0;
|
|
33602
33602
|
}
|
|
33603
|
+
/** Adds all fully transparent elements to the _neverDrawn set. This is used for BatchedModels planar masks.
|
|
33604
|
+
* @internal
|
|
33605
|
+
*/
|
|
33606
|
+
addInvisibleElementOverridesToNeverDrawn() {
|
|
33607
|
+
this._elementOverrides.forEach((lo, hi) => {
|
|
33608
|
+
const app = this.getElementOverrides(lo, hi, 0);
|
|
33609
|
+
if (app?.isFullyTransparent)
|
|
33610
|
+
this._neverDrawn.add(lo, hi);
|
|
33611
|
+
});
|
|
33612
|
+
}
|
|
33603
33613
|
/** Construct a new Overrides that overrides nothing.
|
|
33604
33614
|
* @see [FeatureSymbology.Overrides]($frontend) to construct overrides based on a [ViewState]($frontend) or [Viewport]($frontend).
|
|
33605
33615
|
*/
|
|
@@ -38290,15 +38300,24 @@ var PlanarClipMaskMode;
|
|
|
38290
38300
|
/** Mask based on priority. Different types of models have different default priorities as enumerated by [[PlanarClipMaskPriority]].
|
|
38291
38301
|
* For example, background maps have the lowest priority, so they are masked by all other types, while design models have the highest priority and are therefore never masked.
|
|
38292
38302
|
* The priority of a reality model can be overridden by [[PlanarClipMaskSettings.priority]]. This is useful to allow one reality model to mask another overlapping one.
|
|
38303
|
+
* Everything visible in the view creates the mask, so turning off models, categories, or elements (via fully transparent overrides) will make things not be in the mask.
|
|
38293
38304
|
*/
|
|
38294
38305
|
PlanarClipMaskMode[PlanarClipMaskMode["Priority"] = 1] = "Priority";
|
|
38295
|
-
/** Indicates that masks should be produced from the geometry in a set of [GeometricModel]($backend)s.
|
|
38306
|
+
/** Indicates that masks should be produced from the geometry in a set of [GeometricModel]($backend)s, regardless of what model is on or off in the view.
|
|
38307
|
+
* However, things that are off from category settings or element feature overrides in the view will not be in the mask for these models.
|
|
38308
|
+
*/
|
|
38296
38309
|
PlanarClipMaskMode[PlanarClipMaskMode["Models"] = 2] = "Models";
|
|
38297
|
-
/** Indicates that masks should be produced from geometry belonging to a set of subcategories.
|
|
38310
|
+
/** Indicates that masks should be produced from geometry belonging to a set of subcategories.
|
|
38311
|
+
* View settings do not affect what is in the mask, unless [[PlanarClipMaskSettings.subCategoryOrElementIds]] is undefined, in which case it behaves like Models mode.
|
|
38312
|
+
*/
|
|
38298
38313
|
PlanarClipMaskMode[PlanarClipMaskMode["IncludeSubCategories"] = 3] = "IncludeSubCategories";
|
|
38299
|
-
/** Indicates that masks should be produced from the geometry of a set of [GeometricElement]($backend)s.
|
|
38314
|
+
/** Indicates that masks should be produced from the geometry of a set of [GeometricElement]($backend)s.
|
|
38315
|
+
* View settings do not affect what is in the mask, unless [[PlanarClipMaskSettings.subCategoryOrElementIds]] is undefined, in which case it behaves like Models mode.
|
|
38316
|
+
*/
|
|
38300
38317
|
PlanarClipMaskMode[PlanarClipMaskMode["IncludeElements"] = 4] = "IncludeElements";
|
|
38301
|
-
/** Indicates that masks should be produced from the geometry of all [GeometricElement]($backend)s in a view, **except** for a specified set of excluded elements.
|
|
38318
|
+
/** Indicates that masks should be produced from the geometry of all [GeometricElement]($backend)s in a view, **except** for a specified set of excluded elements.
|
|
38319
|
+
* View settings do not affect what is in the mask, unless [[PlanarClipMaskSettings.subCategoryOrElementIds]] is undefined, in which case it behaves like Models mode.
|
|
38320
|
+
*/
|
|
38302
38321
|
PlanarClipMaskMode[PlanarClipMaskMode["ExcludeElements"] = 5] = "ExcludeElements";
|
|
38303
38322
|
})(PlanarClipMaskMode || (PlanarClipMaskMode = {}));
|
|
38304
38323
|
/** The default priority values for a [[PlanarClipMaskSettings]], based on model type. Models with a lower priority are masked by models with a higher priority.
|
|
@@ -44446,7 +44465,8 @@ class TextAnnotation {
|
|
|
44446
44465
|
/** Compute the transform that positions and orients this annotation relative to its anchor point, based on the [[textBlock]]'s computed bounding box.
|
|
44447
44466
|
* The anchor point is computed as specified by this annotation's [[anchor]] setting. For example, if the text block is anchored
|
|
44448
44467
|
* at the bottom left, then the transform will be relative to the bottom-left corner of `textBlockExtents`.
|
|
44449
|
-
* The text block will be rotated around the fixed anchor point according to [[orientation]], then
|
|
44468
|
+
* The text block will be rotated around the fixed anchor point according to [[orientation]], then translated by [[offset]].
|
|
44469
|
+
* The anchor point will coincide with (0, 0, 0).
|
|
44450
44470
|
* @param boundingBox A box fully containing the [[textBlock]].
|
|
44451
44471
|
* @see [[computeAnchorPoint]] to compute the transform's anchor point.
|
|
44452
44472
|
*/
|
|
@@ -44454,7 +44474,7 @@ class TextAnnotation {
|
|
|
44454
44474
|
const anchorPt = this.computeAnchorPoint(boundingBox);
|
|
44455
44475
|
const matrix = this.orientation.toMatrix3d();
|
|
44456
44476
|
const rotation = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_0__.Transform.createFixedPointAndMatrix(anchorPt, matrix);
|
|
44457
|
-
const translation = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_0__.Transform.createTranslation(this.offset);
|
|
44477
|
+
const translation = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_0__.Transform.createTranslation(this.offset.minus(anchorPt));
|
|
44458
44478
|
return translation.multiplyTransformTransform(rotation, rotation);
|
|
44459
44479
|
}
|
|
44460
44480
|
/** Compute the anchor point of this annotation as specified by [[anchor]].
|
|
@@ -85081,10 +85101,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
85081
85101
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
85082
85102
|
/* harmony export */ "PlanarClipMaskState": () => (/* binding */ PlanarClipMaskState)
|
|
85083
85103
|
/* harmony export */ });
|
|
85084
|
-
/* harmony import */ var
|
|
85085
|
-
/* harmony import */ var
|
|
85086
|
-
/* harmony import */ var _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./render/FeatureSymbology */ "../../core/frontend/lib/esm/render/FeatureSymbology.js");
|
|
85087
|
-
/* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
|
|
85104
|
+
/* harmony import */ var _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-common */ "../../core/common/lib/esm/core-common.js");
|
|
85105
|
+
/* harmony import */ var _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./render/FeatureSymbology */ "../../core/frontend/lib/esm/render/FeatureSymbology.js");
|
|
85088
85106
|
/*---------------------------------------------------------------------------------------------
|
|
85089
85107
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
85090
85108
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -85094,8 +85112,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
85094
85112
|
*/
|
|
85095
85113
|
|
|
85096
85114
|
|
|
85097
|
-
|
|
85098
|
-
|
|
85099
85115
|
/** The State of Planar Clip Mask applied to a reality model or background map.
|
|
85100
85116
|
* Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.
|
|
85101
85117
|
* @beta
|
|
@@ -85109,16 +85125,18 @@ class PlanarClipMaskState {
|
|
|
85109
85125
|
return new PlanarClipMaskState(settings);
|
|
85110
85126
|
}
|
|
85111
85127
|
static fromJSON(props) {
|
|
85112
|
-
return this.create(
|
|
85128
|
+
return this.create(_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskSettings.fromJSON(props));
|
|
85113
85129
|
}
|
|
85114
85130
|
discloseTileTrees(trees) {
|
|
85115
85131
|
if (this._tileTreeRefs)
|
|
85116
85132
|
this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));
|
|
85117
85133
|
}
|
|
85134
|
+
// Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask.
|
|
85118
85135
|
getTileTrees(view, classifiedModelId) {
|
|
85119
|
-
if (this.settings.mode ===
|
|
85136
|
+
if (this.settings.mode === _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Priority) {
|
|
85137
|
+
// For priority mode we simply want refs for all viewed models if the priority is higher than the mask priority.
|
|
85120
85138
|
const viewTrees = new Array();
|
|
85121
|
-
const thisPriority = this.settings.priority === undefined ?
|
|
85139
|
+
const thisPriority = this.settings.priority === undefined ? _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskPriority.RealityModel : this.settings.priority;
|
|
85122
85140
|
view.forEachTileTreeRef((ref) => {
|
|
85123
85141
|
const tree = ref.treeOwner.load();
|
|
85124
85142
|
if (tree && tree.modelId !== classifiedModelId && ref.planarclipMaskPriority > thisPriority)
|
|
@@ -85126,38 +85144,55 @@ class PlanarClipMaskState {
|
|
|
85126
85144
|
});
|
|
85127
85145
|
return viewTrees;
|
|
85128
85146
|
}
|
|
85147
|
+
// For all other modes we need to let the tree refs in the view state decide which refs need to be drawn
|
|
85148
|
+
// since batched tiles cannot turn on/off individual models just by their tile tree refs.
|
|
85129
85149
|
if (!this._tileTreeRefs) {
|
|
85130
85150
|
this._tileTreeRefs = new Array();
|
|
85131
|
-
if (this.settings.modelIds)
|
|
85132
|
-
|
|
85133
|
-
const model = view.iModel.models.getLoaded(modelId);
|
|
85134
|
-
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(model !== undefined); // Models should be loaded by RealityModelTileTree
|
|
85135
|
-
if (model?.asGeometricModel)
|
|
85136
|
-
this._tileTreeRefs.push((0,_tile_internal__WEBPACK_IMPORTED_MODULE_3__.createMaskTreeReference)(view, model.asGeometricModel));
|
|
85137
|
-
}
|
|
85138
|
-
}
|
|
85151
|
+
if (this.settings.modelIds)
|
|
85152
|
+
view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs);
|
|
85139
85153
|
}
|
|
85140
85154
|
if (!this._allLoaded)
|
|
85141
85155
|
this._allLoaded = this._tileTreeRefs.every((treeRef) => treeRef.treeOwner.load() !== undefined);
|
|
85142
85156
|
return this._allLoaded ? this._tileTreeRefs : undefined;
|
|
85143
85157
|
}
|
|
85144
|
-
|
|
85145
|
-
|
|
85158
|
+
// Returns any potential FeatureSymbology overrides for drawing the planar clip mask.
|
|
85159
|
+
getPlanarClipMaskSymbologyOverrides(view, context) {
|
|
85160
|
+
// First obtain a list of models that will need to be turned off for drawing the planar clip mask (only used for batched tile trees).
|
|
85161
|
+
const overrideModels = view.getModelsNotInMask(this.settings.modelIds, _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Priority === this.settings.mode);
|
|
85162
|
+
const noSubCategoryOrElementIds = !this.settings.subCategoryOrElementIds;
|
|
85163
|
+
if (noSubCategoryOrElementIds && !overrideModels)
|
|
85146
85164
|
return undefined;
|
|
85165
|
+
const overrides = new _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_1__.FeatureSymbology.Overrides();
|
|
85166
|
+
if (overrideModels) {
|
|
85167
|
+
// overrideModels is used for batched models. For those, we need to create model overrides to turn off models that are
|
|
85168
|
+
// not wanted in the mask (using transparency) no matter what mask mode is being used.
|
|
85169
|
+
const appOff = _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.FeatureAppearance.fromTransparency(1.0);
|
|
85170
|
+
// For Priority or Models mode, we need to start with the current overrides and modify them
|
|
85171
|
+
if (_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Priority === this.settings.mode || _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Models === this.settings.mode || noSubCategoryOrElementIds) {
|
|
85172
|
+
const curOverrides = new _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_1__.FeatureSymbology.Overrides(context.viewport);
|
|
85173
|
+
curOverrides.addInvisibleElementOverridesToNeverDrawn(); // need this for fully trans element overrides to not participate in mask
|
|
85174
|
+
overrideModels.forEach((modelId) => {
|
|
85175
|
+
curOverrides.override({ modelId, appearance: appOff, onConflict: "replace" });
|
|
85176
|
+
});
|
|
85177
|
+
return curOverrides;
|
|
85178
|
+
}
|
|
85179
|
+
// Otherwise, we just start with a default overrides and modify it.
|
|
85180
|
+
overrideModels.forEach((modelId) => {
|
|
85181
|
+
overrides.override({ modelId, appearance: appOff, onConflict: "replace" });
|
|
85182
|
+
});
|
|
85183
|
+
}
|
|
85184
|
+
// Add overrides to turn things on or off based on the subcategories or elements in the mask settings.
|
|
85147
85185
|
switch (this.settings.mode) {
|
|
85148
|
-
case
|
|
85149
|
-
const overrides = new _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_2__.FeatureSymbology.Overrides();
|
|
85186
|
+
case _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.IncludeElements: {
|
|
85150
85187
|
overrides.setAlwaysDrawnSet(this.settings.subCategoryOrElementIds, true);
|
|
85151
85188
|
return overrides;
|
|
85152
85189
|
}
|
|
85153
|
-
case
|
|
85154
|
-
const overrides = new _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_2__.FeatureSymbology.Overrides();
|
|
85190
|
+
case _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.ExcludeElements: {
|
|
85155
85191
|
overrides.ignoreSubCategory = true;
|
|
85156
85192
|
overrides.setNeverDrawnSet(this.settings.subCategoryOrElementIds);
|
|
85157
85193
|
return overrides;
|
|
85158
85194
|
}
|
|
85159
|
-
case
|
|
85160
|
-
const overrides = new _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_2__.FeatureSymbology.Overrides();
|
|
85195
|
+
case _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.IncludeSubCategories: {
|
|
85161
85196
|
for (const subCategoryId of this.settings.subCategoryOrElementIds)
|
|
85162
85197
|
overrides.setVisibleSubCategory(subCategoryId);
|
|
85163
85198
|
return overrides;
|
|
@@ -87407,6 +87442,22 @@ class SpatialViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_6__.ViewState
|
|
|
87407
87442
|
setTileTreeReferencesDeactivated(modelIds, deactivated, which) {
|
|
87408
87443
|
this._treeRefs.setDeactivated(modelIds, deactivated, which);
|
|
87409
87444
|
}
|
|
87445
|
+
/** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
|
|
87446
|
+
* @param modelIds modelIds for which to get the TileTreeReferences
|
|
87447
|
+
* @param maskTreeRefs where to store the TileTreeReferences
|
|
87448
|
+
* @internal
|
|
87449
|
+
*/
|
|
87450
|
+
collectMaskRefs(modelIds, maskTreeRefs) {
|
|
87451
|
+
this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs);
|
|
87452
|
+
}
|
|
87453
|
+
/** For getting a list of modelIds which do not participate in masking for planar classification.
|
|
87454
|
+
* @param maskModels models which DO participate in planar clip masking
|
|
87455
|
+
* @param useVisible when true, use visible models to set flag
|
|
87456
|
+
* @internal
|
|
87457
|
+
*/
|
|
87458
|
+
getModelsNotInMask(maskModels, useVisible) {
|
|
87459
|
+
return this._treeRefs.getModelsNotInMask(maskModels, useVisible);
|
|
87460
|
+
}
|
|
87410
87461
|
registerModelSelectorListeners() {
|
|
87411
87462
|
const models = this.modelSelector.observableModels;
|
|
87412
87463
|
const func = () => {
|
|
@@ -117473,7 +117524,7 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
|
|
|
117473
117524
|
if (undefined === context.viewingSpace)
|
|
117474
117525
|
return;
|
|
117475
117526
|
const viewState = context.viewingSpace.view;
|
|
117476
|
-
if (
|
|
117527
|
+
if (!viewState.isSpatialView())
|
|
117477
117528
|
return;
|
|
117478
117529
|
const requiredHeight = context.target.viewRect.height;
|
|
117479
117530
|
const requiredWidth = context.target.viewRect.width;
|
|
@@ -117493,7 +117544,7 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
|
|
|
117493
117544
|
this._projectionMatrix = projection.projectionMatrix;
|
|
117494
117545
|
this._frustum = projection.textureFrustum;
|
|
117495
117546
|
this._debugFrustum = projection.debugFrustum;
|
|
117496
|
-
this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides();
|
|
117547
|
+
this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides(viewState, context);
|
|
117497
117548
|
const drawTree = (treeRef, graphics) => {
|
|
117498
117549
|
this._graphics = graphics;
|
|
117499
117550
|
const frustumPlanes = this._frustum ? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.FrustumPlanes.fromFrustum(this._frustum) : _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.FrustumPlanes.createEmpty();
|
|
@@ -140773,8 +140824,11 @@ class GraphicsCollectorDrawArgs extends _internal__WEBPACK_IMPORTED_MODULE_0__.T
|
|
|
140773
140824
|
this._collector.addGraphic(this.context.createBranch(graphics, this.location));
|
|
140774
140825
|
}
|
|
140775
140826
|
drawGraphics() {
|
|
140776
|
-
if (!this.graphics.isEmpty)
|
|
140777
|
-
|
|
140827
|
+
if (!this.graphics.isEmpty) {
|
|
140828
|
+
const graphics = this.produceGraphics();
|
|
140829
|
+
if (undefined !== graphics)
|
|
140830
|
+
this._collector.addGraphic(graphics);
|
|
140831
|
+
}
|
|
140778
140832
|
}
|
|
140779
140833
|
static create(context, collector, ref, planes, worldToViewMap) {
|
|
140780
140834
|
const args = ref.createDrawArgs(context);
|
|
@@ -144160,6 +144214,26 @@ class SpatialRefs {
|
|
|
144160
144214
|
for (const modelId of modelIds)
|
|
144161
144215
|
this._refs.get(modelId)?.setDeactivated(deactivated, refs);
|
|
144162
144216
|
}
|
|
144217
|
+
/** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
|
|
144218
|
+
* @param modelIds modelIds for which to get the TileTreeReferences
|
|
144219
|
+
* @param maskTreeRefs where to store the TileTreeReferences
|
|
144220
|
+
* @internal
|
|
144221
|
+
*/
|
|
144222
|
+
collectMaskRefs(modelIds, maskTreeRefs) {
|
|
144223
|
+
for (const modelId of modelIds) {
|
|
144224
|
+
if (!this._excludedModels?.has(modelId)) {
|
|
144225
|
+
const model = this._view.iModel.models.getLoaded(modelId);
|
|
144226
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(model !== undefined); // Models should be loaded by RealityModelTileTree
|
|
144227
|
+
if (model?.asGeometricModel)
|
|
144228
|
+
maskTreeRefs.push(createMaskTreeReference(this._view, model.asGeometricModel));
|
|
144229
|
+
}
|
|
144230
|
+
}
|
|
144231
|
+
}
|
|
144232
|
+
/** For getting a list of modelIds which do not participate in masking, for planar classification.
|
|
144233
|
+
* For non-batched tile trees this is not needed, so just return undefined.
|
|
144234
|
+
* @internal
|
|
144235
|
+
*/
|
|
144236
|
+
getModelsNotInMask(_maskModels, _useVisible) { return undefined; }
|
|
144163
144237
|
load() {
|
|
144164
144238
|
if (!this._allLoaded) {
|
|
144165
144239
|
this._allLoaded = true;
|
|
@@ -190270,11 +190344,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190270
190344
|
/* harmony export */ "AnnotatedLineString3d": () => (/* binding */ AnnotatedLineString3d),
|
|
190271
190345
|
/* harmony export */ "LineString3d": () => (/* binding */ LineString3d)
|
|
190272
190346
|
/* harmony export */ });
|
|
190273
|
-
/* harmony import */ var
|
|
190347
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
190274
190348
|
/* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
|
|
190275
190349
|
/* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
|
|
190276
190350
|
/* harmony import */ var _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/GrowableXYArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYArray.js");
|
|
190277
|
-
/* harmony import */ var
|
|
190351
|
+
/* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
|
|
190278
190352
|
/* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
|
|
190279
190353
|
/* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
|
|
190280
190354
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
@@ -190284,7 +190358,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190284
190358
|
/* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
|
|
190285
190359
|
/* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
|
|
190286
190360
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
190287
|
-
/* harmony import */ var
|
|
190361
|
+
/* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
|
|
190288
190362
|
/* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
|
|
190289
190363
|
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
190290
190364
|
/* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
|
|
@@ -190309,10 +190383,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190309
190383
|
|
|
190310
190384
|
|
|
190311
190385
|
/**
|
|
190312
|
-
* Starting with
|
|
190313
|
-
* If the vector
|
|
190314
|
-
*
|
|
190315
|
-
*
|
|
190386
|
+
* Starting with the segment at (baseIndex, baseIndex + 1):
|
|
190387
|
+
* * If the segment vector and vectorA determine a normal, accumulate it (scaled) to normal, and return.
|
|
190388
|
+
* * Otherwise move to next/previous segment if stepDirection is positive/negative and repeat.
|
|
190389
|
+
* * Do nothing if everything is parallel through the end of the array.
|
|
190316
190390
|
*/
|
|
190317
190391
|
function accumulateGoodUnitPerpendicular(points, vectorA, baseIndex, stepDirection, weight, normal, workVector) {
|
|
190318
190392
|
const n = points.length;
|
|
@@ -190322,6 +190396,8 @@ function accumulateGoodUnitPerpendicular(points, vectorA, baseIndex, stepDirecti
|
|
|
190322
190396
|
vectorA.crossProduct(workVector, workVector);
|
|
190323
190397
|
if (workVector.normalizeInPlace()) {
|
|
190324
190398
|
normal.addScaledInPlace(workVector, weight);
|
|
190399
|
+
if (normal.isAlmostEqualXYZ(0, 0, 0, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFraction))
|
|
190400
|
+
workVector.scale(-weight, normal); // Concavity changed! Revert to previous
|
|
190325
190401
|
return true;
|
|
190326
190402
|
}
|
|
190327
190403
|
}
|
|
@@ -190334,6 +190410,8 @@ function accumulateGoodUnitPerpendicular(points, vectorA, baseIndex, stepDirecti
|
|
|
190334
190410
|
workVector.crossProduct(vectorA, workVector);
|
|
190335
190411
|
if (workVector.normalizeInPlace()) {
|
|
190336
190412
|
normal.addScaledInPlace(workVector, weight);
|
|
190413
|
+
if (normal.isAlmostEqualXYZ(0, 0, 0, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFraction))
|
|
190414
|
+
workVector.scale(-weight, normal); // Concavity changed! Revert to previous
|
|
190337
190415
|
return true;
|
|
190338
190416
|
}
|
|
190339
190417
|
}
|
|
@@ -190352,7 +190430,7 @@ function accumulateGoodUnitPerpendicular(points, vectorA, baseIndex, stepDirecti
|
|
|
190352
190430
|
* * Use `moveSignedDistanceFromFraction` to do true-length evaluations.
|
|
190353
190431
|
* @public
|
|
190354
190432
|
*/
|
|
190355
|
-
class LineString3d extends
|
|
190433
|
+
class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive {
|
|
190356
190434
|
/** test if `other` is an instance of `LineString3d` */
|
|
190357
190435
|
isSameGeometryClass(other) {
|
|
190358
190436
|
return other instanceof LineString3d;
|
|
@@ -190409,7 +190487,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190409
190487
|
if (points)
|
|
190410
190488
|
this._points = points;
|
|
190411
190489
|
else
|
|
190412
|
-
this._points = new
|
|
190490
|
+
this._points = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
|
|
190413
190491
|
}
|
|
190414
190492
|
/** Clone this linestring and apply the transform to the clone points. */
|
|
190415
190493
|
cloneTransformed(transform) {
|
|
@@ -190440,7 +190518,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190440
190518
|
if (enforceClosure && points.length > 1) {
|
|
190441
190519
|
const distance = xyz.distanceIndexIndex(0, xyz.length - 1);
|
|
190442
190520
|
if (distance !== undefined && distance !== 0.0) {
|
|
190443
|
-
if (
|
|
190521
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(0, distance)) {
|
|
190444
190522
|
xyz.pop(); // nonzero but small distance -- to be replaced by point 0 exactly.
|
|
190445
190523
|
const xyzA = xyz.front();
|
|
190446
190524
|
xyz.push(xyzA);
|
|
@@ -190515,7 +190593,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190515
190593
|
ensureEmptySurfaceNormals() {
|
|
190516
190594
|
const n = this.numPoints();
|
|
190517
190595
|
if (!this._surfaceNormals) {
|
|
190518
|
-
this._surfaceNormals = new
|
|
190596
|
+
this._surfaceNormals = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray(n);
|
|
190519
190597
|
return this._surfaceNormals;
|
|
190520
190598
|
}
|
|
190521
190599
|
this._surfaceNormals.clear();
|
|
@@ -190526,7 +190604,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190526
190604
|
ensureEmptyDerivatives() {
|
|
190527
190605
|
const n = this.numPoints();
|
|
190528
190606
|
if (!this._derivatives) {
|
|
190529
|
-
this._derivatives = new
|
|
190607
|
+
this._derivatives = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray(n);
|
|
190530
190608
|
return this._derivatives;
|
|
190531
190609
|
}
|
|
190532
190610
|
this._derivatives.clear();
|
|
@@ -190590,7 +190668,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190590
190668
|
*/
|
|
190591
190669
|
addDerivative(vector) {
|
|
190592
190670
|
if (!this._derivatives)
|
|
190593
|
-
this._derivatives = new
|
|
190671
|
+
this._derivatives = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
|
|
190594
190672
|
this._derivatives.push(vector);
|
|
190595
190673
|
}
|
|
190596
190674
|
/**
|
|
@@ -190599,13 +190677,13 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190599
190677
|
*/
|
|
190600
190678
|
addSurfaceNormal(vector) {
|
|
190601
190679
|
if (!this._surfaceNormals)
|
|
190602
|
-
this._surfaceNormals = new
|
|
190680
|
+
this._surfaceNormals = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
|
|
190603
190681
|
this._surfaceNormals.push(vector);
|
|
190604
190682
|
}
|
|
190605
190683
|
/** If the linestring is not already closed, add a closure point. */
|
|
190606
190684
|
addClosurePoint() {
|
|
190607
190685
|
const distance = this._points.distanceIndexIndex(0, this._points.length - 1);
|
|
190608
|
-
if (distance !== undefined && !
|
|
190686
|
+
if (distance !== undefined && !_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(distance, 0))
|
|
190609
190687
|
this._points.pushWrap(1);
|
|
190610
190688
|
}
|
|
190611
190689
|
/** Eliminate (but do not return!!) the final point of the linestring */
|
|
@@ -190894,7 +190972,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190894
190972
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createIdentity(result);
|
|
190895
190973
|
}
|
|
190896
190974
|
if (n === 2)
|
|
190897
|
-
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createRefs(this._points.interpolate(0, fraction, 1), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_10__.Matrix3d.createRigidHeadsUp(this._points.vectorIndexIndex(0, 1),
|
|
190975
|
+
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createRefs(this._points.interpolate(0, fraction, 1), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_10__.Matrix3d.createRigidHeadsUp(this._points.vectorIndexIndex(0, 1), _Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisOrder.XYZ));
|
|
190898
190976
|
/** 3 or more points. */
|
|
190899
190977
|
const numSegment = n - 1;
|
|
190900
190978
|
const df = 1.0 / numSegment;
|
|
@@ -190927,7 +191005,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190927
191005
|
accumulateGoodUnitPerpendicular(this._points, vectorA, baseIndex - 1, -1, (1.0 - localFraction), normal, workVector);
|
|
190928
191006
|
accumulateGoodUnitPerpendicular(this._points, vectorA, baseIndex + 1, 1, (localFraction), normal, workVector);
|
|
190929
191007
|
}
|
|
190930
|
-
const matrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_10__.Matrix3d.createRigidFromColumns(normal, vectorA,
|
|
191008
|
+
const matrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_10__.Matrix3d.createRigidFromColumns(normal, vectorA, _Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisOrder.ZXY);
|
|
190931
191009
|
if (matrix)
|
|
190932
191010
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createOriginAndMatrix(origin, matrix, result);
|
|
190933
191011
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createTranslation(origin, result);
|
|
@@ -191062,7 +191140,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191062
191140
|
moveSignedDistanceFromFraction(startFraction, signedDistance, allowExtension, result) {
|
|
191063
191141
|
const numSegments = this._points.length - 1;
|
|
191064
191142
|
const scaledFraction = startFraction * numSegments;
|
|
191065
|
-
let leftPointIndex =
|
|
191143
|
+
let leftPointIndex = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.restrictToInterval(Math.floor(scaledFraction), 0, numSegments - 1); // lower point index on active segment.
|
|
191066
191144
|
const localFraction = scaledFraction - leftPointIndex;
|
|
191067
191145
|
const point0 = this._points.interpolate(leftPointIndex, localFraction, leftPointIndex + 1, LineString3d._workPointA);
|
|
191068
191146
|
const point1 = LineString3d._workPointB;
|
|
@@ -191148,7 +191226,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191148
191226
|
}
|
|
191149
191227
|
/** Test if all points of the linestring are in a plane. */
|
|
191150
191228
|
isInPlane(plane) {
|
|
191151
|
-
return this._points.isCloseToPlane(plane,
|
|
191229
|
+
return this._points.isCloseToPlane(plane, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance);
|
|
191152
191230
|
}
|
|
191153
191231
|
/** Push a hit, fixing up the prior entry if needed. */
|
|
191154
191232
|
static pushVertexHit(result, counter, cp, fraction, point) {
|
|
@@ -191187,7 +191265,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191187
191265
|
let segmentFraction = 0;
|
|
191188
191266
|
for (let i = 0; i < this._points.length; i++, pointA.setFrom(pointB), hA = hB) {
|
|
191189
191267
|
this._points.getPoint3dAtUncheckedPointIndex(i, pointB);
|
|
191190
|
-
hB =
|
|
191268
|
+
hB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.correctSmallMetricDistance(plane.altitude(pointB));
|
|
191191
191269
|
if (hB === 0.0)
|
|
191192
191270
|
LineString3d.pushVertexHit(result, numConsecutiveZero++, this, i / divisor, pointB);
|
|
191193
191271
|
else {
|
|
@@ -191211,7 +191289,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191211
191289
|
isAlmostEqual(other) {
|
|
191212
191290
|
if (!(other instanceof LineString3d))
|
|
191213
191291
|
return false;
|
|
191214
|
-
if (!
|
|
191292
|
+
if (!_geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray.isAlmostEqual(this._points, other._points))
|
|
191215
191293
|
return false;
|
|
191216
191294
|
return true;
|
|
191217
191295
|
}
|
|
@@ -191225,7 +191303,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191225
191303
|
let add = true;
|
|
191226
191304
|
const addFraction = fraction !== undefined && this._fractions !== undefined;
|
|
191227
191305
|
if (n > 0) {
|
|
191228
|
-
if (addFraction &&
|
|
191306
|
+
if (addFraction && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(fraction, this._fractions.back()))
|
|
191229
191307
|
add = false;
|
|
191230
191308
|
if (point.isAlmostEqual(this._points.getPoint3dAtUncheckedPointIndex(n - 1)))
|
|
191231
191309
|
add = false;
|
|
@@ -191237,7 +191315,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191237
191315
|
}
|
|
191238
191316
|
}
|
|
191239
191317
|
/** Compress out duplicate points (according to point.isAlmostEqual) */
|
|
191240
|
-
removeDuplicatePoints(tolerance =
|
|
191318
|
+
removeDuplicatePoints(tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
|
|
191241
191319
|
const n = this._points.length;
|
|
191242
191320
|
if (n < 2)
|
|
191243
191321
|
return;
|
|
@@ -191311,8 +191389,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191311
191389
|
ls._uvParams = new _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_4__.GrowableXYArray(capacity);
|
|
191312
191390
|
}
|
|
191313
191391
|
if (options.needNormals) {
|
|
191314
|
-
ls._derivatives = new
|
|
191315
|
-
ls._surfaceNormals = new
|
|
191392
|
+
ls._derivatives = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray(capacity);
|
|
191393
|
+
ls._surfaceNormals = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray(capacity);
|
|
191316
191394
|
}
|
|
191317
191395
|
}
|
|
191318
191396
|
return ls;
|
|
@@ -191441,7 +191519,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191441
191519
|
const numStrokeOnSegment = applyOptions ? options.applyMaxEdgeLength(1, segmentLength) : 1;
|
|
191442
191520
|
myData.addToCountAndLength(numStrokeOnSegment, segmentLength);
|
|
191443
191521
|
}
|
|
191444
|
-
|
|
191522
|
+
_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive.installStrokeCountMap(this, myData, parentStrokeMap);
|
|
191445
191523
|
}
|
|
191446
191524
|
/** Second step of double dispatch: call `handler.handleLineString3d(this)` */
|
|
191447
191525
|
dispatchToGeometryHandler(handler) {
|
|
@@ -191464,7 +191542,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191464
191542
|
let globalFractionB = 1.0;
|
|
191465
191543
|
const capture = (localFraction0, localFraction1) => {
|
|
191466
191544
|
if (announce)
|
|
191467
|
-
announce(
|
|
191545
|
+
announce(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.interpolate(globalFractionA, localFraction0, globalFractionB), _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.interpolate(globalFractionA, localFraction1, globalFractionB), this);
|
|
191468
191546
|
};
|
|
191469
191547
|
const pointA = LineString3d._workPointA;
|
|
191470
191548
|
const pointB = LineString3d._workPointB;
|
|
@@ -191527,7 +191605,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191527
191605
|
index0 = 1; // first original vertex is not in clone
|
|
191528
191606
|
}
|
|
191529
191607
|
else if (0 <= fractionA && fractionA <= 1) {
|
|
191530
|
-
index0 =
|
|
191608
|
+
index0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallRelative(1 - localA.fraction) ? localA.index + 2 : localA.index + 1;
|
|
191531
191609
|
}
|
|
191532
191610
|
else { // 1 < fractionA
|
|
191533
191611
|
index0 = n; // no original vertices in clone
|
|
@@ -191536,7 +191614,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191536
191614
|
index1 = -1; // no original vertices in clone
|
|
191537
191615
|
}
|
|
191538
191616
|
else if (0 <= fractionB && fractionB <= 1) {
|
|
191539
|
-
index1 =
|
|
191617
|
+
index1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallRelative(localB.fraction) ? localB.index - 1 : localB.index;
|
|
191540
191618
|
}
|
|
191541
191619
|
else { // 1 < fractionB
|
|
191542
191620
|
index1 = n - 2; // last original vertex is not in clone
|
|
@@ -191560,7 +191638,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191560
191638
|
}
|
|
191561
191639
|
/** Returns true if first and last points are within metric tolerance. */
|
|
191562
191640
|
get isPhysicallyClosed() {
|
|
191563
|
-
return this._points.length > 0 &&
|
|
191641
|
+
return this._points.length > 0 && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallMetricDistance(this._points.distanceIndexIndex(0, this._points.length - 1));
|
|
191564
191642
|
}
|
|
191565
191643
|
/**
|
|
191566
191644
|
* Evaluate strokes at fractions indicated in a StrokeCountMap.
|
|
@@ -191646,7 +191724,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
191646
191724
|
for (const seg of this.collectCurvePrimitives(undefined, true, true)) {
|
|
191647
191725
|
const offset = seg.constructOffsetXY(options);
|
|
191648
191726
|
if (offset !== undefined) {
|
|
191649
|
-
if (offset instanceof
|
|
191727
|
+
if (offset instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
|
|
191650
191728
|
offsets.push(offset);
|
|
191651
191729
|
else if (Array.isArray(offset))
|
|
191652
191730
|
offset.forEach((cp) => offsets.push(cp));
|
|
@@ -191711,7 +191789,7 @@ class MoveByDistanceContext {
|
|
|
191711
191789
|
}
|
|
191712
191790
|
// Return CurveSearchStatus indicating whether the accumulated distance has reached the target.
|
|
191713
191791
|
distanceStatus() {
|
|
191714
|
-
return
|
|
191792
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(this.distance0, this.targetDistance) ?
|
|
191715
191793
|
_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveSearchStatus.success : _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveSearchStatus.stoppedAtBoundary;
|
|
191716
191794
|
}
|
|
191717
191795
|
/**
|
|
@@ -191730,16 +191808,16 @@ class MoveByDistanceContext {
|
|
|
191730
191808
|
announcePoint(point1, fraction1) {
|
|
191731
191809
|
const a = this.point0.distance(point1);
|
|
191732
191810
|
const distance1 = this.distance0 + a;
|
|
191733
|
-
if (distance1 < this.targetDistance && !
|
|
191811
|
+
if (distance1 < this.targetDistance && !_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(distance1, this.targetDistance)) {
|
|
191734
191812
|
this.point0.setFromPoint3d(point1);
|
|
191735
191813
|
this.distance0 = distance1;
|
|
191736
191814
|
this.fraction0 = fraction1;
|
|
191737
191815
|
return false;
|
|
191738
191816
|
}
|
|
191739
191817
|
const b = this.targetDistance - this.distance0;
|
|
191740
|
-
const intervalFraction =
|
|
191818
|
+
const intervalFraction = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(b, a, 0.0);
|
|
191741
191819
|
this.point0.interpolate(intervalFraction, point1, this.point0);
|
|
191742
|
-
this.fraction0 =
|
|
191820
|
+
this.fraction0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.interpolate(this.fraction0, intervalFraction, fraction1);
|
|
191743
191821
|
this.distance0 = this.targetDistance;
|
|
191744
191822
|
return true;
|
|
191745
191823
|
}
|
|
@@ -191759,14 +191837,14 @@ class MoveByDistanceContext {
|
|
|
191759
191837
|
const d01 = points.distanceIndexIndex(index0, index1);
|
|
191760
191838
|
if (!d01)
|
|
191761
191839
|
return false;
|
|
191762
|
-
const extensionFraction =
|
|
191840
|
+
const extensionFraction = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(residual, d01);
|
|
191763
191841
|
if (extensionFraction === undefined)
|
|
191764
191842
|
return false;
|
|
191765
191843
|
// (Remark: indices are swapped and extensionFraction negated to prevent incidental precision
|
|
191766
191844
|
// loss with the alternative call with (index0, 1 + extensionFraction, index1);
|
|
191767
191845
|
points.interpolate(index1, -extensionFraction, index0, this.point0);
|
|
191768
191846
|
this.distance0 = this.targetDistance;
|
|
191769
|
-
this.fraction0 =
|
|
191847
|
+
this.fraction0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.interpolate(fraction1, -extensionFraction, fraction0);
|
|
191770
191848
|
return true;
|
|
191771
191849
|
}
|
|
191772
191850
|
}
|
|
@@ -297773,7 +297851,7 @@ var loadLanguages = instance.loadLanguages;
|
|
|
297773
297851
|
/***/ ((module) => {
|
|
297774
297852
|
|
|
297775
297853
|
"use strict";
|
|
297776
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.8.0-dev.
|
|
297854
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.8.0-dev.6","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.8.0-dev.6","@itwin/core-bentley":"workspace:^4.8.0-dev.6","@itwin/core-common":"workspace:^4.8.0-dev.6","@itwin/core-geometry":"workspace:^4.8.0-dev.6","@itwin/core-orbitgt":"workspace:^4.8.0-dev.6","@itwin/core-quantity":"workspace:^4.8.0-dev.6"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.1","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.2.2","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
|
|
297777
297855
|
|
|
297778
297856
|
/***/ })
|
|
297779
297857
|
|