@itwin/ecschema-rpcinterface-tests 4.1.0-dev.73 → 4.1.0-dev.75

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.
@@ -150698,6 +150698,7 @@ __webpack_require__.r(__webpack_exports__);
150698
150698
 
150699
150699
 
150700
150700
 
150701
+ const loggerCategory = "ImageryMapTileTree";
150701
150702
  /** @internal */
150702
150703
  class ImageryMapTile extends _internal__WEBPACK_IMPORTED_MODULE_4__.RealityTile {
150703
150704
  constructor(params, imageryTree, quadId, rectangle) {
@@ -150988,9 +150989,17 @@ class ImageryMapLayerTreeSupplier {
150988
150989
  /** The first time a tree of a particular imagery type is requested, this function creates it. */
150989
150990
  async createTileTree(id, iModel) {
150990
150991
  const imageryProvider = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);
150991
- if (undefined === imageryProvider)
150992
+ if (undefined === imageryProvider) {
150993
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(loggerCategory, `Failed to create imagery provider for format '${id.settings.formatId}'`);
150992
150994
  return undefined;
150993
- await imageryProvider.initialize();
150995
+ }
150996
+ try {
150997
+ await imageryProvider.initialize();
150998
+ }
150999
+ catch (e) {
151000
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(loggerCategory, `Could not initialize imagery provider for map layer '${id.settings.name}' : ${e}`);
151001
+ throw e;
151002
+ }
150994
151003
  const modelId = iModel.transientIds.getNext();
150995
151004
  const tilingScheme = imageryProvider.tilingScheme;
150996
151005
  const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;
@@ -180790,7 +180799,7 @@ __webpack_require__.r(__webpack_exports__);
180790
180799
  /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.BSplineWrapMode),
180791
180800
  /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.BagOfCurves),
180792
180801
  /* harmony export */ BarycentricTriangle: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.BarycentricTriangle),
180793
- /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__.BentleyGeometryFlatBuffer),
180802
+ /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_131__.BentleyGeometryFlatBuffer),
180794
180803
  /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__.Bezier1dNd),
180795
180804
  /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.BezierBezierIntersectionXYRRToRRD),
180796
180805
  /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierCoffs),
@@ -180812,7 +180821,7 @@ __webpack_require__.r(__webpack_exports__);
180812
180821
  /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStepAction),
180813
180822
  /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipUtilities),
180814
180823
  /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.ClipVector),
180815
- /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.ClippedPolyfaceBuilders),
180824
+ /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_123__.ClippedPolyfaceBuilders),
180816
180825
  /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__.ClusterableArray),
180817
180826
  /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__.Complex),
180818
180827
  /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_92__.Cone),
@@ -180842,12 +180851,12 @@ __webpack_require__.r(__webpack_exports__);
180842
180851
  /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveSearchStatus),
180843
180852
  /* harmony export */ CutLoop: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoop),
180844
180853
  /* harmony export */ CutLoopMergeContext: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoopMergeContext),
180845
- /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__.DeepCompare),
180854
+ /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_129__.DeepCompare),
180846
180855
  /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree2PowerPolynomial),
180847
180856
  /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree3PowerPolynomial),
180848
180857
  /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree4PowerPolynomial),
180849
180858
  /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__.DirectSpiral3d),
180850
- /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.DuplicateFacetClusterSelector),
180859
+ /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_122__.DuplicateFacetClusterSelector),
180851
180860
  /* harmony export */ Ellipsoid: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.Ellipsoid),
180852
180861
  /* harmony export */ EllipsoidPatch: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.EllipsoidPatch),
180853
180862
  /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__.FacetFaceData),
@@ -180859,14 +180868,16 @@ __webpack_require__.r(__webpack_exports__);
180859
180868
  /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.Geometry),
180860
180869
  /* harmony export */ GeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.GeometryHandler),
180861
180870
  /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__.GeometryQuery),
180871
+ /* harmony export */ GriddedRaggedRange2dSet: () => (/* reexport safe */ _polyface_multiclip_GriddedRaggedRange2dSet__WEBPACK_IMPORTED_MODULE_118__.GriddedRaggedRange2dSet),
180872
+ /* harmony export */ GriddedRaggedRange2dSetWithOverflow: () => (/* reexport safe */ _polyface_multiclip_GriddedRaggedRange2dSetWithOverflow__WEBPACK_IMPORTED_MODULE_119__.GriddedRaggedRange2dSetWithOverflow),
180862
180873
  /* harmony export */ GrowableBlockedArray: () => (/* reexport safe */ _geometry3d_GrowableBlockedArray__WEBPACK_IMPORTED_MODULE_9__.GrowableBlockedArray),
180863
180874
  /* harmony export */ GrowableFloat64Array: () => (/* reexport safe */ _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_10__.GrowableFloat64Array),
180864
180875
  /* harmony export */ GrowableXYArray: () => (/* reexport safe */ _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYArray),
180865
180876
  /* harmony export */ GrowableXYZArray: () => (/* reexport safe */ _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray),
180866
- /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdge),
180867
- /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeGraph),
180868
- /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeMask),
180869
- /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__.IModelJson),
180877
+ /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_125__.HalfEdge),
180878
+ /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_125__.HalfEdgeGraph),
180879
+ /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_125__.HalfEdgeMask),
180880
+ /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_128__.IModelJson),
180870
180881
  /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.ImplicitLineXY),
180871
180882
  /* harmony export */ IndexedCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedCollectionInterval),
180872
180883
  /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyface),
@@ -180903,7 +180914,7 @@ __webpack_require__.r(__webpack_exports__);
180903
180914
  /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.NonConvexFacetLocationDetail),
180904
180915
  /* harmony export */ NullGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.NullGeometryHandler),
180905
180916
  /* harmony export */ NumberArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.NumberArray),
180906
- /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.OffsetMeshOptions),
180917
+ /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_122__.OffsetMeshOptions),
180907
180918
  /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.OffsetOptions),
180908
180919
  /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order2Bezier),
180909
180920
  /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order3Bezier),
@@ -180931,10 +180942,10 @@ __webpack_require__.r(__webpack_exports__);
180931
180942
  /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__.PointString3d),
180932
180943
  /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.Polyface),
180933
180944
  /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.PolyfaceAuxData),
180934
- /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__.PolyfaceBuilder),
180935
- /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.PolyfaceClip),
180936
- /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__.PolyfaceData),
180937
- /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.PolyfaceQuery),
180945
+ /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_120__.PolyfaceBuilder),
180946
+ /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_123__.PolyfaceClip),
180947
+ /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_121__.PolyfaceData),
180948
+ /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_122__.PolyfaceQuery),
180938
180949
  /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.PolygonLocation),
180939
180950
  /* harmony export */ PolygonLocationDetail: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonLocationDetail),
180940
180951
  /* harmony export */ PolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonOps),
@@ -180957,25 +180968,25 @@ __webpack_require__.r(__webpack_exports__);
180957
180968
  /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionOps),
180958
180969
  /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__.RotationalSweep),
180959
180970
  /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__.RuledSweep),
180960
- /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.Sample),
180971
+ /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_130__.Sample),
180961
180972
  /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__.Segment1d),
180962
180973
  /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.SimpleNewton),
180963
180974
  /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SineCosinePolynomial),
180964
180975
  /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SmallSystem),
180965
180976
  /* harmony export */ SmoothTransformBetweenFrusta: () => (/* reexport safe */ _geometry3d_FrustumAnimation__WEBPACK_IMPORTED_MODULE_7__.SmoothTransformBetweenFrusta),
180966
180977
  /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__.SolidPrimitive),
180967
- /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__.SpacePolygonTriangulation),
180978
+ /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_127__.SpacePolygonTriangulation),
180968
180979
  /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__.Sphere),
180969
180980
  /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SphereImplicit),
180970
180981
  /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.StandardViewIndex),
180971
- /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.SteppedIndexFunctionFactory),
180982
+ /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_130__.SteppedIndexFunctionFactory),
180972
180983
  /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.StringifiedClipVector),
180973
180984
  /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__.StrokeCountMap),
180974
180985
  /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__.StrokeOptions),
180975
180986
  /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__.SweepContour),
180976
- /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.SweepLineStringToFacetsOptions),
180977
- /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericConstants),
180978
- /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericData),
180987
+ /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_122__.SweepLineStringToFacetsOptions),
180988
+ /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_124__.TaggedNumericConstants),
180989
+ /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_124__.TaggedNumericData),
180979
180990
  /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TorusImplicit),
180980
180991
  /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__.TorusPipe),
180981
180992
  /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__.Transform),
@@ -180983,7 +180994,7 @@ __webpack_require__.r(__webpack_exports__);
180983
180994
  /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__.TriDiagonalSystem),
180984
180995
  /* harmony export */ TriangleLocationDetail: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.TriangleLocationDetail),
180985
180996
  /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.TriangularFacetLocationDetail),
180986
- /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__.Triangulator),
180997
+ /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_126__.Triangulator),
180987
180998
  /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TrigPolynomial),
180988
180999
  /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.UVSelect),
180989
181000
  /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__.UVSurfaceOps),
@@ -181119,18 +181130,20 @@ __webpack_require__.r(__webpack_exports__);
181119
181130
  /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
181120
181131
  /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
181121
181132
  /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
181122
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
181123
- /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
181124
- /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
181125
- /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
181126
- /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
181127
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
181128
- /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
181129
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
181130
- /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
181131
- /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
181132
- /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
181133
- /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
181133
+ /* harmony import */ var _polyface_multiclip_GriddedRaggedRange2dSet__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/multiclip/GriddedRaggedRange2dSet */ "../../core/geometry/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js");
181134
+ /* harmony import */ var _polyface_multiclip_GriddedRaggedRange2dSetWithOverflow__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/multiclip/GriddedRaggedRange2dSetWithOverflow */ "../../core/geometry/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js");
181135
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
181136
+ /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
181137
+ /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
181138
+ /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
181139
+ /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
181140
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
181141
+ /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
181142
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
181143
+ /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
181144
+ /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
181145
+ /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
181146
+ /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
181134
181147
  /*---------------------------------------------------------------------------------------------
181135
181148
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
181136
181149
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -181382,6 +181395,8 @@ __webpack_require__.r(__webpack_exports__);
181382
181395
 
181383
181396
 
181384
181397
 
181398
+
181399
+
181385
181400
 
181386
181401
 
181387
181402
 
@@ -214922,6 +214937,33 @@ class IndexedXYZCollectionPolygonOps {
214922
214937
  work.clear();
214923
214938
  return numCrossings;
214924
214939
  }
214940
+ /** Return an array containing
214941
+ * * All points that are exactly on the plane.
214942
+ * * Crossing points between adjacent points that are (strictly) on opposite sides.
214943
+ */
214944
+ static polygonPlaneCrossings(plane, xyz, crossings) {
214945
+ crossings.length = 0;
214946
+ if (xyz.length >= 2) {
214947
+ const xyz0 = this._xyz0Work;
214948
+ xyz.getPoint3dAtUncheckedPointIndex(xyz.length - 1, xyz0);
214949
+ let a0 = plane.altitude(xyz0);
214950
+ const xyz1 = this._xyz1Work;
214951
+ for (let i = 0; i < xyz.length; i++) {
214952
+ xyz.getPoint3dAtUncheckedPointIndex(i, xyz1);
214953
+ const a1 = plane.altitude(xyz1);
214954
+ if (a0 * a1 < 0.0) {
214955
+ // simple crossing. . .
214956
+ const f = -a0 / (a1 - a0);
214957
+ crossings.push(xyz0.interpolate(f, xyz1));
214958
+ }
214959
+ if (a1 === 0.0) { // IMPORTANT -- every point is directly tested here
214960
+ crossings.push(xyz1.clone());
214961
+ }
214962
+ xyz0.setFromPoint3d(xyz1);
214963
+ a0 = a1;
214964
+ }
214965
+ }
214966
+ }
214925
214967
  /**
214926
214968
  * * Input a "clipped" polygon (from clipConvexPolygonInPlace) with more than 2 crossings, i.e. is from a non-convex polygon with configurations like:
214927
214969
  * * multiple distinct polygons
@@ -215061,25 +215103,8 @@ class Point3dArrayPolygonOps {
215061
215103
  * * Crossing points between adjacent points that are (strictly) on opposite sides.
215062
215104
  */
215063
215105
  static polygonPlaneCrossings(plane, xyz, crossings) {
215064
- crossings.length = 0;
215065
- if (xyz.length >= 2) {
215066
- const xyz0 = this._xyz0Work;
215067
- xyz0.setFromPoint3d(xyz[xyz.length - 1]);
215068
- let a0 = plane.altitude(xyz0);
215069
- for (const xyz1 of xyz) {
215070
- const a1 = plane.altitude(xyz1);
215071
- if (a0 * a1 < 0.0) {
215072
- // simple crossing. . .
215073
- const f = -a0 / (a1 - a0);
215074
- crossings.push(xyz0.interpolate(f, xyz1));
215075
- }
215076
- if (a1 === 0.0) { // IMPORTANT -- every point is directly tested here
215077
- crossings.push(xyz1.clone());
215078
- }
215079
- xyz0.setFromPoint3d(xyz1);
215080
- a0 = a1;
215081
- }
215082
- }
215106
+ const xyzSource = new _Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_4__.Point3dArrayCarrier(xyz);
215107
+ return IndexedXYZCollectionPolygonOps.polygonPlaneCrossings(plane, xyzSource, crossings);
215083
215108
  }
215084
215109
  /**
215085
215110
  * Clip a polygon, returning the clip result in the same object.
@@ -232986,32 +233011,33 @@ __webpack_require__.r(__webpack_exports__);
232986
233011
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
232987
233012
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
232988
233013
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
232989
- /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
233014
+ /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
232990
233015
  /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
233016
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
232991
233017
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
232992
233018
  /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
232993
233019
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
232994
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
233020
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
232995
233021
  /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
232996
233022
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
232997
233023
  /* harmony import */ var _numerics_UnionFind__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../numerics/UnionFind */ "../../core/geometry/lib/esm/numerics/UnionFind.js");
232998
233024
  /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
232999
233025
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
233000
- /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
233026
+ /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
233001
233027
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
233002
233028
  /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
233003
233029
  /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
233004
- /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
233005
- /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
233030
+ /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
233031
+ /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
233006
233032
  /* harmony import */ var _IndexedEdgeMatcher__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./IndexedEdgeMatcher */ "../../core/geometry/lib/esm/polyface/IndexedEdgeMatcher.js");
233007
233033
  /* harmony import */ var _IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
233008
- /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
233009
- /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
233034
+ /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
233035
+ /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
233010
233036
  /* harmony import */ var _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./multiclip/SweepLineStringToFacetContext */ "../../core/geometry/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js");
233011
- /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
233037
+ /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
233012
233038
  /* harmony import */ var _Polyface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
233013
233039
  /* harmony import */ var _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
233014
- /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
233040
+ /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
233015
233041
  /*---------------------------------------------------------------------------------------------
233016
233042
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
233017
233043
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -233053,6 +233079,7 @@ __webpack_require__.r(__webpack_exports__);
233053
233079
 
233054
233080
 
233055
233081
 
233082
+
233056
233083
 
233057
233084
 
233058
233085
  /**
@@ -233893,13 +233920,13 @@ class PolyfaceQuery {
233893
233920
  matcher.sortAndCollectClusters(allEdges, allEdges, allEdges, allEdges);
233894
233921
  return this.partitionFacetIndicesBySortableEdgeClusters(allEdges, numFacets);
233895
233922
  }
233896
- /** Find segments (within the linestring) which project to facets.
233897
- * * Assemble each segment pair as a facet in a new polyface
233898
- * * Facets are ASSUMED to be convex and planar, and not overlap in the z direction.
233923
+ /** Find segments (within the line string) which project to facets.
233924
+ * * Assemble each input segment paired with its projected segment/point as a quad/triangle facet in a new polyface.
233925
+ * * Input facets are ASSUMED to be convex and planar, and not overlap in the z direction.
233899
233926
  */
233900
- static sweepLineStringToFacetsXYReturnSweptFacets(linestringPoints, polyface) {
233927
+ static sweepLineStringToFacetsXYReturnSweptFacets(lineStringPoints, polyface) {
233901
233928
  const builder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create();
233902
- this.announceSweepLinestringToConvexPolyfaceXY(linestringPoints, polyface, (_linestring, _segmentIndex, _polyface, _facetIndex, points) => {
233929
+ this.announceSweepLinestringToConvexPolyfaceXY(lineStringPoints, polyface, (_linestring, _segmentIndex, _polyface, _facetIndex, points) => {
233903
233930
  if (points.length === 4)
233904
233931
  builder.addQuadFacet(points);
233905
233932
  else if (points.length === 3)
@@ -233912,13 +233939,13 @@ class PolyfaceQuery {
233912
233939
  return this.sweepLineStringToFacetsXYReturnSweptFacets(linestringPoints, polyface);
233913
233940
  }
233914
233941
  /**
233915
- * Sweeps the linestring to intersections with a mesh.
233942
+ * Sweep the line string to intersections with a mesh.
233916
233943
  * * Return collected line segments.
233917
233944
  * * If no options are given, the default sweep direction is the z-axis, and chains are assembled and returned.
233918
233945
  * * See [[SweepLineStringToFacetsOptions]] for input and output options, including filtering by forward/side/rear facets.
233919
233946
  * * Facets are ASSUMED to be convex and planar, and not overlap in the sweep direction.
233920
233947
  */
233921
- static sweepLineStringToFacets(linestringPoints, polyface, options) {
233948
+ static sweepLineStringToFacets(linestringPoints, polyfaceOrVisitor, options) {
233922
233949
  let result = [];
233923
233950
  // setup default options:
233924
233951
  if (options === undefined)
@@ -233930,7 +233957,11 @@ class PolyfaceQuery {
233930
233957
  chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
233931
233958
  const context = _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__.ClipSweptLineStringContext.create(linestringPoints, options.vectorToEye);
233932
233959
  if (context) {
233933
- const visitor = polyface.createVisitor(0);
233960
+ let visitor;
233961
+ if (polyfaceOrVisitor instanceof _Polyface__WEBPACK_IMPORTED_MODULE_6__.Polyface)
233962
+ visitor = polyfaceOrVisitor.createVisitor(0);
233963
+ else
233964
+ visitor = polyfaceOrVisitor;
233934
233965
  const workNormal = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Vector3d.createZero();
233935
233966
  for (visitor.reset(); visitor.moveToNextFacet();) {
233936
233967
  if (options.collectFromThisFacetNormal(_geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.areaNormalGo(visitor.point, workNormal))) {
@@ -233949,6 +233980,54 @@ class PolyfaceQuery {
233949
233980
  }
233950
233981
  return result;
233951
233982
  }
233983
+ /**
233984
+ * Sweep the line string in the z-direction to intersections with a mesh, using a search object for speedup.
233985
+ * @param lineStringPoints input line string to drape on the mesh
233986
+ * @param polyfaceOrVisitor mesh, or mesh visitor to traverse only part of a mesh
233987
+ * @param searchByReadIndex object for searching facet 2D ranges tagged by mesh read index
233988
+ * @example Using a 5x5 indexed search grid:
233989
+ * ```
233990
+ * const xyRange = Range2d.createFrom(myPolyface.range());
233991
+ * const searcher = GriddedRaggedRange2dSetWithOverflow.create<number>(xyRange, 5, 5)!;
233992
+ * for (const visitor = myPolyface.createVisitor(0); visitor.moveToNextFacet();) {
233993
+ * searcher.addRange(visitor.point.getRange(), visitor.currentReadIndex());
233994
+ * }
233995
+ * const drapedLineStrings = PolyfaceQuery.sweepLineStringToFacetsXY(lineString, myPolyface, searcher);
233996
+ * ```
233997
+ * @returns collected line strings
233998
+ */
233999
+ static sweepLineStringToFacetsXY(lineStringPoints, polyfaceOrVisitor, searchByReadIndex) {
234000
+ const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
234001
+ const sweepVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Vector3d.create(0, 0, 1);
234002
+ const searchRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_26__.Range3d.create();
234003
+ let visitor;
234004
+ if (polyfaceOrVisitor instanceof _Polyface__WEBPACK_IMPORTED_MODULE_6__.Polyface)
234005
+ visitor = polyfaceOrVisitor.createVisitor(0);
234006
+ else
234007
+ visitor = polyfaceOrVisitor;
234008
+ let lineStringSource;
234009
+ if (Array.isArray(lineStringPoints))
234010
+ lineStringSource = new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayCarrier(lineStringPoints);
234011
+ else
234012
+ lineStringSource = lineStringPoints;
234013
+ for (let i = 1; i < lineStringSource.length; i++) {
234014
+ const point0 = lineStringSource.getPoint3dAtUncheckedPointIndex(i - 1);
234015
+ const point1 = lineStringSource.getPoint3dAtUncheckedPointIndex(i);
234016
+ const edgeClipper = _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__.EdgeClipData.createPointPointSweep(point0, point1, sweepVector);
234017
+ if (edgeClipper !== undefined) {
234018
+ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_26__.Range3d.createNull(searchRange);
234019
+ searchRange.extendPoint(point0);
234020
+ searchRange.extendPoint(point1);
234021
+ searchByReadIndex.searchRange2d(searchRange, (_facetRange, readIndex) => {
234022
+ if (visitor.moveToReadIndex(readIndex))
234023
+ edgeClipper.processPolygon(visitor.point, (pointA, pointB) => chainContext.addSegment(pointA, pointB));
234024
+ return true;
234025
+ });
234026
+ }
234027
+ }
234028
+ chainContext.clusterAndMergeVerticesXYZ();
234029
+ return chainContext.collectMaximalChains();
234030
+ }
233952
234031
  /** Find segments (within the linestring) which project to facets.
233953
234032
  * * Return collected line segments.
233954
234033
  * * This calls [[sweepLineStringToFacets]] with options created by
@@ -233995,7 +234074,7 @@ class PolyfaceQuery {
233995
234074
  if (polyface instanceof _Polyface__WEBPACK_IMPORTED_MODULE_6__.Polyface) {
233996
234075
  return this.collectRangeLengthData(polyface.createVisitor(0));
233997
234076
  }
233998
- const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__.RangeLengthData();
234077
+ const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_28__.RangeLengthData();
233999
234078
  // polyface is a visitor ...
234000
234079
  for (polyface.reset(); polyface.moveToNextFacet();)
234001
234080
  rangeData.accumulateGrowableXYZArrayRange(polyface.point);
@@ -234007,9 +234086,9 @@ class PolyfaceQuery {
234007
234086
  static cloneWithTVertexFixup(polyface) {
234008
234087
  const oldFacetVisitor = polyface.createVisitor(1); // This is to visit the existing facets.
234009
234088
  const newFacetVisitor = polyface.createVisitor(0); // This is to build the new facets.
234010
- const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__.XYPointBuckets.create(polyface.data.point, 30);
234089
+ const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_29__.XYPointBuckets.create(polyface.data.point, 30);
234011
234090
  const builder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create();
234012
- const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d.createNull();
234091
+ const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_26__.Range3d.createNull();
234013
234092
  const point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
234014
234093
  const point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
234015
234094
  const spacePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
@@ -234374,7 +234453,7 @@ class PolyfaceQuery {
234374
234453
  * @internal
234375
234454
  */
234376
234455
  static convertToHalfEdgeGraph(mesh) {
234377
- const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__.HalfEdgeGraphFromIndexedLoopsContext();
234456
+ const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_30__.HalfEdgeGraphFromIndexedLoopsContext();
234378
234457
  const visitor = mesh.createVisitor(0);
234379
234458
  for (visitor.reset(); visitor.moveToNextFacet();) {
234380
234459
  builder.insertLoop(visitor.pointIndex);
@@ -234395,14 +234474,14 @@ class PolyfaceQuery {
234395
234474
  * @param mesh
234396
234475
  */
234397
234476
  static reorientVertexOrderAroundFacetsForConsistentOrientation(mesh) {
234398
- return _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__.FacetOrientationFixup.doFixup(mesh);
234477
+ return _FacetOrientation__WEBPACK_IMPORTED_MODULE_31__.FacetOrientationFixup.doFixup(mesh);
234399
234478
  }
234400
234479
  /**
234401
234480
  * Set up indexed normals with one normal in the plane of each facet of the mesh.
234402
234481
  * @param polyface
234403
234482
  */
234404
234483
  static buildPerFaceNormals(polyface) {
234405
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
234484
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_32__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
234406
234485
  }
234407
234486
  /**
234408
234487
  * * At each vertex of the mesh
@@ -234415,7 +234494,7 @@ class PolyfaceQuery {
234415
234494
  * @param toleranceAngle averaging is done between normals up to this angle.
234416
234495
  */
234417
234496
  static buildAverageNormals(polyface, toleranceAngle = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(31.0)) {
234418
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
234497
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_32__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
234419
234498
  }
234420
234499
  /**
234421
234500
  * Offset the faces of the mesh.
@@ -234427,7 +234506,7 @@ class PolyfaceQuery {
234427
234506
  static cloneOffset(source, signedOffsetDistance, offsetOptions = OffsetMeshOptions.create()) {
234428
234507
  const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
234429
234508
  const offsetBuilder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create(strokeOptions);
234430
- _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
234509
+ _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_33__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
234431
234510
  return offsetBuilder.claimPolyface();
234432
234511
  }
234433
234512
  /** Search facets for the first one that intersects the infinite line.
@@ -234451,17 +234530,17 @@ class PolyfaceQuery {
234451
234530
  const numEdges = visitor.pointCount; // #vertices = #edges since numWrap is zero
234452
234531
  const vertices = visitor.point;
234453
234532
  if (3 === numEdges) {
234454
- const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
234533
+ const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_34__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
234455
234534
  const detail3 = this._workTriDetail = tri.intersectRay3d(ray, this._workTriDetail);
234456
234535
  tri.snapLocationToEdge(detail3, options?.distanceTolerance, options?.parameterTolerance);
234457
- detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
234536
+ detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_35__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
234458
234537
  }
234459
234538
  else {
234460
234539
  const detailN = this._workPolyDetail = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.intersectRay3d(vertices, ray, options?.distanceTolerance, this._workPolyDetail);
234461
234540
  if (_geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.isConvex(vertices))
234462
- detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
234541
+ detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_35__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
234463
234542
  else
234464
- detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
234543
+ detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_35__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
234465
234544
  }
234466
234545
  if (detail.isInsideOrOn) { // set optional caches, process the intersection
234467
234546
  if (options?.needNormal && visitor.normal)
@@ -235044,6 +235123,7 @@ __webpack_require__.r(__webpack_exports__);
235044
235123
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
235045
235124
  /* harmony export */ GriddedRaggedRange2dSet: () => (/* binding */ GriddedRaggedRange2dSet)
235046
235125
  /* harmony export */ });
235126
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
235047
235127
  /* harmony import */ var _LinearSearchRange2dArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LinearSearchRange2dArray */ "../../core/geometry/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js");
235048
235128
  /*---------------------------------------------------------------------------------------------
235049
235129
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -235053,14 +235133,15 @@ __webpack_require__.r(__webpack_exports__);
235053
235133
  * @module RangeSearch
235054
235134
  */
235055
235135
 
235136
+
235056
235137
  /**
235057
- * A GriddedRaggedRange2dSet is
235058
- * * A doubly dimensioned array of LinearSearchRange2dArray
235059
- * * Each entry represents a block in a uniform grid within the master range of the GriddedRaggedRange2dSet.
235138
+ * A GriddedRaggedRange2dSet is:
235139
+ * * A doubly dimensioned array of Range2dSearchInterface.
235140
+ * * Each entry represents a block in a uniform grid within the master range.
235060
235141
  * * Member ranges are noted in the grid block containing the range's lower left corner.
235061
235142
  * * Member ranges larger than twice the grid size are rejected by the insert method.
235062
235143
  * * Hence a search involving a point in grid block (i,j) must examine ranges in grid blocks left and below, i.e. (i-1,j-1), (i-1,j), (i,j-1)
235063
- * @internal
235144
+ * @public
235064
235145
  */
235065
235146
  class GriddedRaggedRange2dSet {
235066
235147
  constructor(range, numXEdge, numYEdge) {
@@ -235078,9 +235159,9 @@ class GriddedRaggedRange2dSet {
235078
235159
  }
235079
235160
  /**
235080
235161
  * Create an (empty) set of ranges.
235081
- * @param range
235082
- * @param numXEdge
235083
- * @param numYEdge
235162
+ * @param range master range
235163
+ * @param numXEdge size of grid in x direction
235164
+ * @param numYEdge size of grid in y direction
235084
235165
  */
235085
235166
  static create(range, numXEdge, numYEdge) {
235086
235167
  if (numXEdge < 1 || numYEdge < 1 || range.isNull || range.isSinglePoint)
@@ -235104,13 +235185,13 @@ class GriddedRaggedRange2dSet {
235104
235185
  return undefined;
235105
235186
  }
235106
235187
  /** If possible, insert a range into the set.
235107
- * * Decline to insert (and return false) if
235108
- * * range is null
235109
- * * range is not completely contained in the overall range of this set.
235110
- * * range x or y extent is larger than 2 grid blocks.
235188
+ * * Decline to insert (and return false) if:
235189
+ * * range is null
235190
+ * * range is not completely contained in the overall range of this set
235191
+ * * range x or y extent is larger than 2 grid blocks
235111
235192
  */
235112
235193
  conditionalInsert(range, tag) {
235113
- if (range.isNull)
235194
+ if (_geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__.Range2d.isNull(range))
235114
235195
  return false;
235115
235196
  if (!this._range.containsRange(range))
235116
235197
  return false;
@@ -235129,6 +235210,10 @@ class GriddedRaggedRange2dSet {
235129
235210
  }
235130
235211
  return false;
235131
235212
  }
235213
+ /** Add a range to the search set. */
235214
+ addRange(range, tag) {
235215
+ this.conditionalInsert(range, tag);
235216
+ }
235132
235217
  /**
235133
235218
  * * Search a single block
235134
235219
  * * Pass each range and tag to handler
@@ -235194,6 +235279,19 @@ class GriddedRaggedRange2dSet {
235194
235279
  }
235195
235280
  return true;
235196
235281
  }
235282
+ /** Return the overall range of all members. */
235283
+ totalRange(result) {
235284
+ if (result)
235285
+ result.setNull();
235286
+ else
235287
+ result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__.Range2d.createNull();
235288
+ this.visitChildren(0, (_depth, child) => {
235289
+ const childRange = GriddedRaggedRange2dSet._workRange = child.totalRange(GriddedRaggedRange2dSet._workRange);
235290
+ result.extendRange(childRange);
235291
+ });
235292
+ return result;
235293
+ }
235294
+ /** Call the handler on each defined block in the grid. */
235197
235295
  visitChildren(initialDepth, handler) {
235198
235296
  for (const row of this._rangesInBlock) {
235199
235297
  for (const block of row) {
@@ -235218,6 +235316,7 @@ __webpack_require__.r(__webpack_exports__);
235218
235316
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
235219
235317
  /* harmony export */ GriddedRaggedRange2dSetWithOverflow: () => (/* binding */ GriddedRaggedRange2dSetWithOverflow)
235220
235318
  /* harmony export */ });
235319
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
235221
235320
  /* harmony import */ var _GriddedRaggedRange2dSet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GriddedRaggedRange2dSet */ "../../core/geometry/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js");
235222
235321
  /* harmony import */ var _LinearSearchRange2dArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LinearSearchRange2dArray */ "../../core/geometry/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js");
235223
235322
  /*---------------------------------------------------------------------------------------------
@@ -235229,13 +235328,14 @@ __webpack_require__.r(__webpack_exports__);
235229
235328
  */
235230
235329
 
235231
235330
 
235331
+
235232
235332
  /**
235233
- * Use GriddedRaggedRange2dSetWithOverflow for searching among many ranges for which
235333
+ * Use GriddedRaggedRange2dSetWithOverflow for searching among many ranges for which:
235234
235334
  * * Most ranges are of somewhat consistent size.
235235
235335
  * * A modest number of oversizes.
235236
235336
  * * Maintain the smallish ones in a GriddedRaggedRange2dSet.
235237
- * * Maintain the overflows in a LinearSearchRange2dArray
235238
- * @internal
235337
+ * * Maintain the overflows in a Range2dSearchInterface.
235338
+ * @public
235239
235339
  */
235240
235340
  class GriddedRaggedRange2dSetWithOverflow {
235241
235341
  constructor(gridSet, overflowSet) {
@@ -235283,11 +235383,24 @@ class GriddedRaggedRange2dSetWithOverflow {
235283
235383
  * * range x or y extent is larger than 2 grid blocks.
235284
235384
  */
235285
235385
  addRange(range, tag) {
235286
- if (!range.isNull) {
235386
+ if (!_geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range2d.isNull(range)) {
235287
235387
  if (!this._gridSet.conditionalInsert(range, tag))
235288
235388
  this._overflowSet.addRange(range, tag);
235289
235389
  }
235290
235390
  }
235391
+ /** Return the overall range of all members. */
235392
+ totalRange(result) {
235393
+ if (result)
235394
+ result.setNull();
235395
+ else
235396
+ result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range2d.createNull();
235397
+ this.visitChildren(0, (_depth, child) => {
235398
+ const childRange = GriddedRaggedRange2dSetWithOverflow._workRange = child.totalRange(GriddedRaggedRange2dSetWithOverflow._workRange);
235399
+ result.extendRange(childRange);
235400
+ });
235401
+ return result;
235402
+ }
235403
+ /** Call the handler on the overflow set, and on each defined block in the grid. */
235291
235404
  visitChildren(initialDepth, handler) {
235292
235405
  handler(initialDepth, this._overflowSet);
235293
235406
  this._gridSet.visitChildren(initialDepth + 1, handler);
@@ -235318,11 +235431,10 @@ __webpack_require__.r(__webpack_exports__);
235318
235431
  */
235319
235432
 
235320
235433
  /**
235321
- * * Array of Range2d
235322
- * * user data tag attached to each range via cast as (any).userTag.
235434
+ * An array of decorated Range2d.
235435
+ * * User data is attached to each range via `(myRange as any).tag = myTag`.
235323
235436
  * * Search operations are simple linear.
235324
235437
  * * This class can be used directly for "smallish" range sets, or as the leaf level of hierarchical structures for larger range sets.
235325
- * *
235326
235438
  * @internal
235327
235439
  */
235328
235440
  class LinearSearchRange2dArray {
@@ -235335,9 +235447,8 @@ class LinearSearchRange2dArray {
235335
235447
  updateForSearch() {
235336
235448
  this._isDirty = false;
235337
235449
  }
235338
- /** Return the overall range of all member ranges. */
235450
+ /** Return the overall range of all members. */
235339
235451
  totalRange(result) {
235340
- result = result ? result : _geometry3d_Range__WEBPACK_IMPORTED_MODULE_0__.Range2d.createNull();
235341
235452
  return this._compositeRange.clone(result);
235342
235453
  }
235343
235454
  /** Add a range to the search set. */
@@ -236528,6 +236639,7 @@ RangeSearch.defaultStandardDeviationAdjustment = 1.0;
236528
236639
  __webpack_require__.r(__webpack_exports__);
236529
236640
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
236530
236641
  /* harmony export */ ClipSweptLineStringContext: () => (/* binding */ ClipSweptLineStringContext),
236642
+ /* harmony export */ EdgeClipData: () => (/* binding */ EdgeClipData),
236531
236643
  /* harmony export */ SweepLineStringToFacetContext: () => (/* binding */ SweepLineStringToFacetContext)
236532
236644
  /* harmony export */ });
236533
236645
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
@@ -236538,6 +236650,7 @@ __webpack_require__.r(__webpack_exports__);
236538
236650
  /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
236539
236651
  /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
236540
236652
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
236653
+ /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
236541
236654
  /*---------------------------------------------------------------------------------------------
236542
236655
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
236543
236656
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -236553,6 +236666,7 @@ __webpack_require__.r(__webpack_exports__);
236553
236666
 
236554
236667
 
236555
236668
 
236669
+
236556
236670
  class SweepLineStringToFacetContext {
236557
236671
  constructor(spacePoints) {
236558
236672
  // temporaries reused over multiple calls to process a single facet . ..
@@ -236658,10 +236772,13 @@ class EdgeClipData {
236658
236772
  }
236659
236773
  return undefined;
236660
236774
  }
236775
+ /** Intersect this edge plane with the given convex polygon and announce the intersection segment to the callback. */
236661
236776
  processPolygon(polygon, announceEdge) {
236662
236777
  this._crossingPoints.length = 0;
236663
- _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.Point3dArrayPolygonOps.polygonPlaneCrossings(this.edgePlane, polygon, this._crossingPoints);
236664
- // process a convex polygon (or non-convex if lucky)
236778
+ if (Array.isArray(polygon))
236779
+ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.Point3dArrayPolygonOps.polygonPlaneCrossings(this.edgePlane, polygon, this._crossingPoints);
236780
+ else
236781
+ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.IndexedXYZCollectionPolygonOps.polygonPlaneCrossings(this.edgePlane, polygon, this._crossingPoints);
236665
236782
  if (this._crossingPoints.length === 2) {
236666
236783
  // use the end planes to clip the [0,1] swept edge to [f0,f1]
236667
236784
  this.clip.announceClippedSegmentIntervals(0, 1, this._crossingPoints[0], this._crossingPoints[1], (f0, f1) => {
@@ -236675,8 +236792,13 @@ class EdgeClipData {
236675
236792
  * @internal
236676
236793
  */
236677
236794
  class ClipSweptLineStringContext {
236678
- constructor(edgeData) {
236795
+ constructor(edgeData, localData) {
236679
236796
  this._edgeClippers = edgeData;
236797
+ if (localData !== undefined) {
236798
+ this._localToWorld = localData.localToWorld;
236799
+ this._worldToLocal = localData.worldToLocal;
236800
+ this._localRange = localData.localRange;
236801
+ }
236680
236802
  }
236681
236803
  static create(xyz, sweepVector) {
236682
236804
  if (sweepVector === undefined)
@@ -236686,6 +236808,12 @@ class ClipSweptLineStringContext {
236686
236808
  const newPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.createZero();
236687
236809
  const edgeData = [];
236688
236810
  xyz.getPoint3dAtUncheckedPointIndex(0, point);
236811
+ let localToWorldMatrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createRigidHeadsUp(sweepVector);
236812
+ if (localToWorldMatrix === undefined)
236813
+ localToWorldMatrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createIdentity();
236814
+ const localToWorld = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_2__.Transform.createOriginAndMatrix(point, localToWorldMatrix);
236815
+ const worldToLocal = localToWorld.inverse();
236816
+ const localRange = xyz.getRange(worldToLocal);
236689
236817
  for (let i = 1; i < xyz.length; i++) {
236690
236818
  xyz.getPoint3dAtUncheckedPointIndex(i, newPoint);
236691
236819
  const clipper = EdgeClipData.createPointPointSweep(point, newPoint, sweepVector);
@@ -236694,11 +236822,20 @@ class ClipSweptLineStringContext {
236694
236822
  edgeData.push(clipper);
236695
236823
  }
236696
236824
  }
236697
- return new ClipSweptLineStringContext(edgeData);
236825
+ return new ClipSweptLineStringContext(edgeData, { localToWorld, worldToLocal, localRange });
236698
236826
  }
236699
236827
  return undefined;
236700
236828
  }
236829
+ /**
236830
+ * Intersect a polygon with each of the edgeClippers.
236831
+ * * If transforms and local range are defined, test the polygon's local range to see if it offers a quick exit.
236832
+ */
236701
236833
  processPolygon(polygon, announceEdge) {
236834
+ if (this._worldToLocal !== undefined && this._localRange !== undefined) {
236835
+ const polygonRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_3__.Range3d.createTransformedArray(this._worldToLocal, polygon);
236836
+ if (!polygonRange.intersectsRangeXY(this._localRange))
236837
+ return;
236838
+ }
236702
236839
  for (const clipper of this._edgeClippers) {
236703
236840
  clipper.processPolygon(polygon, announceEdge);
236704
236841
  }
@@ -286861,7 +286998,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
286861
286998
  /***/ ((module) => {
286862
286999
 
286863
287000
  "use strict";
286864
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.73","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 -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -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.1.0-dev.73","@itwin/core-bentley":"workspace:^4.1.0-dev.73","@itwin/core-common":"workspace:^4.1.0-dev.73","@itwin/core-geometry":"workspace:^4.1.0-dev.73","@itwin/core-orbitgt":"workspace:^4.1.0-dev.73","@itwin/core-quantity":"workspace:^4.1.0-dev.73"},"//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.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","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.0.0","@itwin/object-storage-core":"^2.0.0","@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","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
287001
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.75","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 -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -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.1.0-dev.75","@itwin/core-bentley":"workspace:^4.1.0-dev.75","@itwin/core-common":"workspace:^4.1.0-dev.75","@itwin/core-geometry":"workspace:^4.1.0-dev.75","@itwin/core-orbitgt":"workspace:^4.1.0-dev.75","@itwin/core-quantity":"workspace:^4.1.0-dev.75"},"//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.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","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.0.0","@itwin/object-storage-core":"^2.0.0","@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","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
286865
287002
 
286866
287003
  /***/ })
286867
287004