@itwin/core-common 4.0.0-dev.7 → 4.0.0-dev.70
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/CHANGELOG.md +35 -17
- package/lib/cjs/AmbientOcclusion.d.ts +49 -49
- package/lib/cjs/AmbientOcclusion.js +55 -55
- package/lib/cjs/AnalysisStyle.d.ts +134 -134
- package/lib/cjs/AnalysisStyle.js +165 -165
- package/lib/cjs/AnalysisStyle.js.map +1 -1
- package/lib/cjs/AuthorizationClient.d.ts +17 -17
- package/lib/cjs/AuthorizationClient.js +9 -9
- package/lib/cjs/BackendTypes.d.ts +13 -12
- package/lib/cjs/BackendTypes.d.ts.map +1 -1
- package/lib/cjs/BackendTypes.js +9 -9
- package/lib/cjs/BackendTypes.js.map +1 -1
- package/lib/cjs/BackgroundMapProvider.d.ts +51 -51
- package/lib/cjs/BackgroundMapProvider.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapProvider.js +67 -68
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/BackgroundMapSettings.d.ts +136 -136
- package/lib/cjs/BackgroundMapSettings.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapSettings.js +154 -156
- package/lib/cjs/BackgroundMapSettings.js.map +1 -1
- package/lib/cjs/Base64EncodedString.d.ts +32 -32
- package/lib/cjs/Base64EncodedString.d.ts.map +1 -1
- package/lib/cjs/Base64EncodedString.js +66 -66
- package/lib/cjs/Base64EncodedString.js.map +1 -1
- package/lib/cjs/BlobReader.d.ts +31 -31
- package/lib/cjs/BlobReader.js +84 -84
- package/lib/cjs/BriefcaseTypes.d.ts +191 -189
- package/lib/cjs/BriefcaseTypes.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTypes.js +95 -95
- package/lib/cjs/BriefcaseTypes.js.map +1 -1
- package/lib/cjs/Camera.d.ts +42 -42
- package/lib/cjs/Camera.js +62 -62
- package/lib/cjs/Camera.js.map +1 -1
- package/lib/cjs/ChangedElements.d.ts +85 -85
- package/lib/cjs/ChangedElements.js +23 -23
- package/lib/cjs/ChangedEntities.d.ts +45 -45
- package/lib/cjs/ChangedEntities.d.ts.map +1 -1
- package/lib/cjs/ChangedEntities.js +9 -9
- package/lib/cjs/ChangesetProps.d.ts +98 -98
- package/lib/cjs/ChangesetProps.d.ts.map +1 -1
- package/lib/cjs/ChangesetProps.js +22 -22
- package/lib/cjs/ClipStyle.d.ts +89 -89
- package/lib/cjs/ClipStyle.js +121 -123
- package/lib/cjs/ClipStyle.js.map +1 -1
- package/lib/cjs/Code.d.ts +277 -277
- package/lib/cjs/Code.d.ts.map +1 -1
- package/lib/cjs/Code.js +268 -269
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ColorByName.d.ts +161 -161
- package/lib/cjs/ColorByName.js +169 -169
- package/lib/cjs/ColorDef.d.ts +210 -208
- package/lib/cjs/ColorDef.d.ts.map +1 -1
- package/lib/cjs/ColorDef.js +572 -571
- package/lib/cjs/ColorDef.js.map +1 -1
- package/lib/cjs/CommonLoggerCategory.d.ts +18 -18
- package/lib/cjs/CommonLoggerCategory.js +26 -26
- package/lib/cjs/ConcurrentQuery.d.ts +421 -421
- package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
- package/lib/cjs/ConcurrentQuery.js +552 -552
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/ContextRealityModel.d.ts +303 -303
- package/lib/cjs/ContextRealityModel.js +371 -373
- package/lib/cjs/ContextRealityModel.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.d.ts +588 -588
- package/lib/cjs/DisplayStyleSettings.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js +981 -985
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ECSchemaProps.d.ts +39 -39
- package/lib/cjs/ECSchemaProps.js +9 -9
- package/lib/cjs/ECSqlReader.d.ts +70 -70
- package/lib/cjs/ECSqlReader.d.ts.map +1 -1
- package/lib/cjs/ECSqlReader.js +280 -280
- package/lib/cjs/ECSqlReader.js.map +1 -1
- package/lib/cjs/ECSqlTypes.d.ts +128 -128
- package/lib/cjs/ECSqlTypes.js +189 -189
- package/lib/cjs/ElementMesh.d.ts +39 -39
- package/lib/cjs/ElementMesh.js +56 -56
- package/lib/cjs/ElementProps.d.ts +483 -483
- package/lib/cjs/ElementProps.d.ts.map +1 -1
- package/lib/cjs/ElementProps.js +99 -99
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/EmphasizeElementsProps.d.ts +55 -55
- package/lib/cjs/EmphasizeElementsProps.js +25 -25
- package/lib/cjs/EntityProps.d.ts +177 -177
- package/lib/cjs/EntityProps.d.ts.map +1 -1
- package/lib/cjs/EntityProps.js +113 -113
- package/lib/cjs/EntityReference.d.ts +51 -51
- package/lib/cjs/EntityReference.d.ts.map +1 -1
- package/lib/cjs/EntityReference.js +56 -56
- package/lib/cjs/Environment.d.ts +61 -61
- package/lib/cjs/Environment.d.ts.map +1 -1
- package/lib/cjs/Environment.js +70 -73
- package/lib/cjs/Environment.js.map +1 -1
- package/lib/cjs/FeatureIndex.d.ts +39 -39
- package/lib/cjs/FeatureIndex.js +63 -63
- package/lib/cjs/FeatureIndex.js.map +1 -1
- package/lib/cjs/FeatureSymbology.d.ts +449 -444
- package/lib/cjs/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/FeatureSymbology.js +618 -614
- package/lib/cjs/FeatureSymbology.js.map +1 -1
- package/lib/cjs/FeatureTable.d.ts +248 -141
- package/lib/cjs/FeatureTable.d.ts.map +1 -1
- package/lib/cjs/FeatureTable.js +470 -278
- package/lib/cjs/FeatureTable.js.map +1 -1
- package/lib/cjs/Fonts.d.ts +51 -51
- package/lib/cjs/Fonts.d.ts.map +1 -1
- package/lib/cjs/Fonts.js +53 -53
- package/lib/cjs/Frustum.d.ts +114 -114
- package/lib/cjs/Frustum.js +292 -292
- package/lib/cjs/GeoCoordinateServices.d.ts +123 -119
- package/lib/cjs/GeoCoordinateServices.d.ts.map +1 -1
- package/lib/cjs/GeoCoordinateServices.js +81 -80
- package/lib/cjs/GeoCoordinateServices.js.map +1 -1
- package/lib/cjs/GeometryContainment.d.ts +28 -28
- package/lib/cjs/GeometryContainment.js +9 -9
- package/lib/cjs/GeometryParams.d.ts +130 -130
- package/lib/cjs/GeometryParams.js +174 -174
- package/lib/cjs/GeometrySummary.d.ts +45 -45
- package/lib/cjs/GeometrySummary.js +23 -23
- package/lib/cjs/Gradient.d.ts +139 -139
- package/lib/cjs/Gradient.js +453 -455
- package/lib/cjs/Gradient.js.map +1 -1
- package/lib/cjs/GraphicParams.d.ts +58 -58
- package/lib/cjs/GraphicParams.js +85 -85
- package/lib/cjs/GraphicParams.js.map +1 -1
- package/lib/cjs/GroundPlane.d.ts +52 -52
- package/lib/cjs/GroundPlane.d.ts.map +1 -1
- package/lib/cjs/GroundPlane.js +63 -64
- package/lib/cjs/GroundPlane.js.map +1 -1
- package/lib/cjs/HSLColor.d.ts +20 -20
- package/lib/cjs/HSLColor.js +32 -32
- package/lib/cjs/HSLColor.js.map +1 -1
- package/lib/cjs/HSVColor.d.ts +30 -30
- package/lib/cjs/HSVColor.js +59 -59
- package/lib/cjs/HSVColor.js.map +1 -1
- package/lib/cjs/HiddenLine.d.ts +97 -97
- package/lib/cjs/HiddenLine.js +160 -162
- package/lib/cjs/HiddenLine.js.map +1 -1
- package/lib/cjs/Hilite.d.ts +50 -50
- package/lib/cjs/Hilite.js +64 -64
- package/lib/cjs/Hilite.js.map +1 -1
- package/lib/cjs/IModel.d.ts +358 -359
- package/lib/cjs/IModel.d.ts.map +1 -1
- package/lib/cjs/IModel.js +347 -347
- package/lib/cjs/IModel.js.map +1 -1
- package/lib/cjs/IModelError.d.ts +42 -42
- package/lib/cjs/IModelError.d.ts.map +1 -1
- package/lib/cjs/IModelError.js +71 -71
- package/lib/cjs/IModelVersion.d.ts +68 -68
- package/lib/cjs/IModelVersion.d.ts.map +1 -1
- package/lib/cjs/IModelVersion.js +79 -79
- package/lib/cjs/Image.d.ts +86 -86
- package/lib/cjs/Image.js +128 -128
- package/lib/cjs/Image.js.map +1 -1
- package/lib/cjs/IpcAppProps.d.ts +141 -141
- package/lib/cjs/IpcAppProps.js +23 -23
- package/lib/cjs/LightSettings.d.ts +224 -224
- package/lib/cjs/LightSettings.js +304 -309
- package/lib/cjs/LightSettings.js.map +1 -1
- package/lib/cjs/LinePixels.d.ts +34 -34
- package/lib/cjs/LinePixels.js +42 -42
- package/lib/cjs/Localization.d.ts +113 -113
- package/lib/cjs/Localization.js +33 -33
- package/lib/cjs/MapImagerySettings.d.ts +62 -62
- package/lib/cjs/MapImagerySettings.d.ts.map +1 -1
- package/lib/cjs/MapImagerySettings.js +80 -80
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/MapLayerSettings.d.ts +272 -272
- package/lib/cjs/MapLayerSettings.d.ts.map +1 -1
- package/lib/cjs/MapLayerSettings.js +407 -411
- package/lib/cjs/MapLayerSettings.js.map +1 -1
- package/lib/cjs/MassProperties.d.ts +64 -64
- package/lib/cjs/MassProperties.js +23 -23
- package/lib/cjs/MaterialProps.d.ts +153 -153
- package/lib/cjs/MaterialProps.d.ts.map +1 -1
- package/lib/cjs/MaterialProps.js +35 -35
- package/lib/cjs/ModelClipGroup.d.ts +67 -67
- package/lib/cjs/ModelClipGroup.js +96 -98
- package/lib/cjs/ModelClipGroup.js.map +1 -1
- package/lib/cjs/ModelGeometryChanges.d.ts +107 -107
- package/lib/cjs/ModelGeometryChanges.d.ts.map +1 -1
- package/lib/cjs/ModelGeometryChanges.js +83 -83
- package/lib/cjs/ModelProps.d.ts +67 -67
- package/lib/cjs/ModelProps.js +9 -9
- package/lib/cjs/NativeAppProps.d.ts +122 -122
- package/lib/cjs/NativeAppProps.d.ts.map +1 -1
- package/lib/cjs/NativeAppProps.js +30 -30
- package/lib/cjs/OctEncodedNormal.d.ts +33 -33
- package/lib/cjs/OctEncodedNormal.js +98 -98
- package/lib/cjs/PlanProjectionSettings.d.ts +47 -47
- package/lib/cjs/PlanProjectionSettings.js +63 -63
- package/lib/cjs/PlanProjectionSettings.js.map +1 -1
- package/lib/cjs/PlanarClipMask.d.ts +177 -177
- package/lib/cjs/PlanarClipMask.js +136 -136
- package/lib/cjs/PlanarClipMask.js.map +1 -1
- package/lib/cjs/QPoint.d.ts +479 -479
- package/lib/cjs/QPoint.js +824 -826
- package/lib/cjs/QPoint.js.map +1 -1
- package/lib/cjs/RealityDataAccessProps.d.ts +41 -41
- package/lib/cjs/RealityDataAccessProps.js +19 -19
- package/lib/cjs/RealityModelDisplaySettings.d.ts +183 -183
- package/lib/cjs/RealityModelDisplaySettings.d.ts.map +1 -1
- package/lib/cjs/RealityModelDisplaySettings.js +141 -142
- package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
- package/lib/cjs/Render.d.ts +89 -89
- package/lib/cjs/Render.js +177 -177
- package/lib/cjs/RenderMaterial.d.ts +58 -58
- package/lib/cjs/RenderMaterial.js +75 -76
- package/lib/cjs/RenderMaterial.js.map +1 -1
- package/lib/cjs/RenderSchedule.d.ts +543 -543
- package/lib/cjs/RenderSchedule.js +992 -1002
- package/lib/cjs/RenderSchedule.js.map +1 -1
- package/lib/cjs/RenderTexture.d.ts +70 -70
- package/lib/cjs/RenderTexture.d.ts.map +1 -1
- package/lib/cjs/RenderTexture.js +59 -59
- package/lib/cjs/RenderTexture.js.map +1 -1
- package/lib/cjs/RgbColor.d.ts +47 -47
- package/lib/cjs/RgbColor.js +77 -77
- package/lib/cjs/RpcInterface.d.ts +40 -33
- package/lib/cjs/RpcInterface.d.ts.map +1 -1
- package/lib/cjs/RpcInterface.js +137 -137
- package/lib/cjs/RpcInterface.js.map +1 -1
- package/lib/cjs/RpcManager.d.ts +40 -40
- package/lib/cjs/RpcManager.js +55 -55
- package/lib/cjs/RpcManager.js.map +1 -1
- package/lib/cjs/SessionProps.d.ts +16 -16
- package/lib/cjs/SessionProps.js +9 -9
- package/lib/cjs/SkyBox.d.ts +215 -215
- package/lib/cjs/SkyBox.d.ts.map +1 -1
- package/lib/cjs/SkyBox.js +209 -210
- package/lib/cjs/SkyBox.js.map +1 -1
- package/lib/cjs/Snapping.d.ts +49 -49
- package/lib/cjs/Snapping.js +9 -9
- package/lib/cjs/SolarCalculate.d.ts +27 -27
- package/lib/cjs/SolarCalculate.js +211 -211
- package/lib/cjs/SolarShadows.d.ts +35 -35
- package/lib/cjs/SolarShadows.js +61 -62
- package/lib/cjs/SolarShadows.js.map +1 -1
- package/lib/cjs/SpatialClassification.d.ts +208 -208
- package/lib/cjs/SpatialClassification.js +339 -340
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/SubCategoryAppearance.d.ts +91 -91
- package/lib/cjs/SubCategoryAppearance.js +96 -96
- package/lib/cjs/SubCategoryAppearance.js.map +1 -1
- package/lib/cjs/SubCategoryOverride.d.ts +46 -46
- package/lib/cjs/SubCategoryOverride.js +104 -104
- package/lib/cjs/SubCategoryOverride.js.map +1 -1
- package/lib/cjs/TerrainSettings.d.ts +82 -82
- package/lib/cjs/TerrainSettings.d.ts.map +1 -1
- package/lib/cjs/TerrainSettings.js +100 -102
- package/lib/cjs/TerrainSettings.js.map +1 -1
- package/lib/cjs/TextureMapping.d.ts +151 -118
- package/lib/cjs/TextureMapping.d.ts.map +1 -1
- package/lib/cjs/TextureMapping.js +180 -174
- package/lib/cjs/TextureMapping.js.map +1 -1
- package/lib/cjs/TextureProps.d.ts +65 -65
- package/lib/cjs/TextureProps.js +28 -28
- package/lib/cjs/ThematicDisplay.d.ts +230 -230
- package/lib/cjs/ThematicDisplay.js +343 -344
- package/lib/cjs/ThematicDisplay.js.map +1 -1
- package/lib/cjs/Thumbnail.d.ts +26 -26
- package/lib/cjs/Thumbnail.js +9 -9
- package/lib/cjs/TileProps.d.ts +88 -82
- package/lib/cjs/TileProps.d.ts.map +1 -1
- package/lib/cjs/TileProps.js +29 -29
- package/lib/cjs/TileProps.js.map +1 -1
- package/lib/cjs/Tween.d.ts +191 -191
- package/lib/cjs/Tween.d.ts.map +1 -1
- package/lib/cjs/Tween.js +570 -570
- package/lib/cjs/TxnAction.d.ts +21 -21
- package/lib/cjs/TxnAction.js +29 -29
- package/lib/cjs/ViewDetails.d.ts +125 -125
- package/lib/cjs/ViewDetails.js +166 -166
- package/lib/cjs/ViewDetails.js.map +1 -1
- package/lib/cjs/ViewFlags.d.ts +287 -287
- package/lib/cjs/ViewFlags.d.ts.map +1 -1
- package/lib/cjs/ViewFlags.js +367 -368
- package/lib/cjs/ViewFlags.js.map +1 -1
- package/lib/cjs/ViewProps.d.ts +205 -205
- package/lib/cjs/ViewProps.js +9 -9
- package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +36 -36
- package/lib/cjs/WhiteOnWhiteReversalSettings.js +37 -37
- package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/cjs/core-common.d.ts +243 -244
- package/lib/cjs/core-common.d.ts.map +1 -1
- package/lib/cjs/core-common.js +263 -260
- package/lib/cjs/core-common.js.map +1 -1
- package/lib/cjs/domains/FunctionalElementProps.d.ts +11 -11
- package/lib/cjs/domains/FunctionalElementProps.js +9 -9
- package/lib/cjs/domains/GenericElementProps.d.ts +18 -18
- package/lib/cjs/domains/GenericElementProps.js +9 -9
- package/lib/cjs/geometry/AdditionalTransform.d.ts +84 -84
- package/lib/cjs/geometry/AdditionalTransform.js +85 -85
- package/lib/cjs/geometry/AreaPattern.d.ts +82 -82
- package/lib/cjs/geometry/AreaPattern.js +203 -204
- package/lib/cjs/geometry/AreaPattern.js.map +1 -1
- package/lib/cjs/geometry/BoundingSphere.d.ts +27 -27
- package/lib/cjs/geometry/BoundingSphere.js +44 -44
- package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
- package/lib/cjs/geometry/Cartographic.d.ts +137 -137
- package/lib/cjs/geometry/Cartographic.js +345 -345
- package/lib/cjs/geometry/Cartographic.js.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +269 -269
- package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.js +260 -261
- package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.d.ts +402 -402
- package/lib/cjs/geometry/ElementGeometry.d.ts.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.js +1719 -1719
- package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometryFB.d.ts +2372 -2372
- package/lib/cjs/geometry/ElementGeometryFB.js +3814 -3814
- package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/cjs/geometry/FrustumPlanes.d.ts +83 -81
- package/lib/cjs/geometry/FrustumPlanes.d.ts.map +1 -1
- package/lib/cjs/geometry/FrustumPlanes.js +227 -193
- package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.d.ts +409 -409
- package/lib/cjs/geometry/GeodeticDatum.d.ts.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.js +400 -401
- package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +72 -72
- package/lib/cjs/geometry/GeodeticEllipsoid.js +71 -72
- package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/cjs/geometry/GeometryStream.d.ts +347 -347
- package/lib/cjs/geometry/GeometryStream.d.ts.map +1 -1
- package/lib/cjs/geometry/GeometryStream.js +468 -469
- package/lib/cjs/geometry/GeometryStream.js.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.d.ts +74 -74
- package/lib/cjs/geometry/ImageGraphic.d.ts.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.js +98 -98
- package/lib/cjs/geometry/LineStyle.d.ts +71 -71
- package/lib/cjs/geometry/LineStyle.js +129 -129
- package/lib/cjs/geometry/Placement.d.ts +95 -95
- package/lib/cjs/geometry/Placement.d.ts.map +1 -1
- package/lib/cjs/geometry/Placement.js +131 -131
- package/lib/cjs/geometry/Projection.d.ts +251 -251
- package/lib/cjs/geometry/Projection.d.ts.map +1 -1
- package/lib/cjs/geometry/Projection.js +198 -198
- package/lib/cjs/geometry/Projection.js.map +1 -1
- package/lib/cjs/geometry/TextString.d.ts +55 -55
- package/lib/cjs/geometry/TextString.js +65 -65
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/ipc/IpcSession.d.ts +23 -23
- package/lib/cjs/ipc/IpcSession.js +27 -27
- package/lib/cjs/ipc/IpcSocket.d.ts +96 -96
- package/lib/cjs/ipc/IpcSocket.d.ts.map +1 -1
- package/lib/cjs/ipc/IpcSocket.js +16 -16
- package/lib/cjs/ipc/IpcWebSocket.d.ts +61 -61
- package/lib/cjs/ipc/IpcWebSocket.js +150 -151
- package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +15 -15
- package/lib/cjs/ipc/IpcWebSocketTransport.js +160 -160
- package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/cjs/rpc/DevToolsRpcInterface.d.ts +32 -32
- package/lib/cjs/rpc/DevToolsRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/DevToolsRpcInterface.js +52 -48
- package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +99 -99
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js +122 -122
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +49 -61
- package/lib/cjs/rpc/IModelTileRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.js +79 -96
- package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +48 -48
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/TestRpcManager.d.ts +20 -20
- package/lib/cjs/rpc/TestRpcManager.js +40 -40
- package/lib/cjs/rpc/WipRpcInterface.d.ts +29 -29
- package/lib/cjs/rpc/WipRpcInterface.js +40 -40
- package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConfiguration.d.ts +111 -111
- package/lib/cjs/rpc/core/RpcConfiguration.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcConfiguration.js +191 -191
- package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConstants.d.ts +90 -90
- package/lib/cjs/rpc/core/RpcConstants.js +109 -109
- package/lib/cjs/rpc/core/RpcControl.d.ts +54 -54
- package/lib/cjs/rpc/core/RpcControl.js +150 -145
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.d.ts +89 -89
- package/lib/cjs/rpc/core/RpcInvocation.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js +256 -258
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.d.ts +35 -35
- package/lib/cjs/rpc/core/RpcMarshaling.js +156 -156
- package/lib/cjs/rpc/core/RpcOperation.d.ts +67 -67
- package/lib/cjs/rpc/core/RpcOperation.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.js +135 -134
- package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPendingQueue.d.ts +21 -21
- package/lib/cjs/rpc/core/RpcPendingQueue.js +94 -95
- package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.d.ts +132 -132
- package/lib/cjs/rpc/core/RpcProtocol.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.js +127 -127
- package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPush.d.ts +68 -68
- package/lib/cjs/rpc/core/RpcPush.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcPush.js +127 -127
- package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRegistry.d.ts +48 -48
- package/lib/cjs/rpc/core/RpcRegistry.js +198 -199
- package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.d.ts +186 -186
- package/lib/cjs/rpc/core/RpcRequest.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js +478 -478
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequestContext.d.ts +14 -14
- package/lib/cjs/rpc/core/RpcRequestContext.js +2 -2
- package/lib/cjs/rpc/core/RpcRoutingToken.d.ts +12 -12
- package/lib/cjs/rpc/core/RpcRoutingToken.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcRoutingToken.js +24 -24
- package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +10 -10
- package/lib/cjs/rpc/core/RpcSessionInvocation.js +60 -60
- package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts +48 -46
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +76 -73
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +141 -143
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/OpenAPI.d.ts +140 -140
- package/lib/cjs/rpc/web/OpenAPI.js +60 -60
- package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.d.ts +35 -35
- package/lib/cjs/rpc/web/RpcMultipart.js +50 -50
- package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts +28 -28
- package/lib/cjs/rpc/web/WebAppRpcLogging.js +140 -140
- package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +89 -89
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js +116 -116
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +67 -67
- package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js +239 -239
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +373 -373
- package/lib/cjs/tile/B3dmTileIO.d.ts +19 -19
- package/lib/cjs/tile/B3dmTileIO.js +66 -66
- package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/CompositeTileIO.d.ts +15 -15
- package/lib/cjs/tile/CompositeTileIO.js +26 -26
- package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.d.ts +145 -145
- package/lib/cjs/tile/ElementGraphics.d.ts.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js +9 -9
- package/lib/cjs/tile/GltfTileIO.d.ts +45 -45
- package/lib/cjs/tile/GltfTileIO.d.ts.map +1 -1
- package/lib/cjs/tile/GltfTileIO.js +109 -109
- package/lib/cjs/tile/GltfTileIO.js.map +1 -1
- package/lib/cjs/tile/I3dmTileIO.d.ts +20 -20
- package/lib/cjs/tile/I3dmTileIO.js +40 -40
- package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/IModelTileIO.d.ts +77 -75
- package/lib/cjs/tile/IModelTileIO.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileIO.js +97 -95
- package/lib/cjs/tile/IModelTileIO.js.map +1 -1
- package/lib/cjs/tile/PntsTileIO.d.ts +17 -17
- package/lib/cjs/tile/PntsTileIO.js +26 -26
- package/lib/cjs/tile/PntsTileIO.js.map +1 -1
- package/lib/cjs/tile/TileIO.d.ts +66 -66
- package/lib/cjs/tile/TileIO.js +118 -118
- package/lib/cjs/tile/TileMetadata.d.ts +228 -228
- package/lib/cjs/tile/TileMetadata.d.ts.map +1 -1
- package/lib/cjs/tile/TileMetadata.js +675 -676
- package/lib/cjs/tile/TileMetadata.js.map +1 -1
- package/lib/cjs/tile/Tileset3dSchema.d.ts +97 -0
- package/lib/cjs/tile/Tileset3dSchema.d.ts.map +1 -0
- package/lib/cjs/tile/Tileset3dSchema.js +10 -0
- package/lib/cjs/tile/Tileset3dSchema.js.map +1 -0
- package/lib/esm/AmbientOcclusion.d.ts +49 -49
- package/lib/esm/AmbientOcclusion.js +52 -52
- package/lib/esm/AnalysisStyle.d.ts +134 -134
- package/lib/esm/AnalysisStyle.js +160 -159
- package/lib/esm/AnalysisStyle.js.map +1 -1
- package/lib/esm/AuthorizationClient.d.ts +17 -17
- package/lib/esm/AuthorizationClient.js +8 -8
- package/lib/esm/BackendTypes.d.ts +13 -12
- package/lib/esm/BackendTypes.d.ts.map +1 -1
- package/lib/esm/BackendTypes.js +8 -8
- package/lib/esm/BackendTypes.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.d.ts +51 -51
- package/lib/esm/BackgroundMapProvider.d.ts.map +1 -1
- package/lib/esm/BackgroundMapProvider.js +63 -64
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/BackgroundMapSettings.d.ts +136 -136
- package/lib/esm/BackgroundMapSettings.d.ts.map +1 -1
- package/lib/esm/BackgroundMapSettings.js +150 -152
- package/lib/esm/BackgroundMapSettings.js.map +1 -1
- package/lib/esm/Base64EncodedString.d.ts +32 -32
- package/lib/esm/Base64EncodedString.d.ts.map +1 -1
- package/lib/esm/Base64EncodedString.js +63 -63
- package/lib/esm/Base64EncodedString.js.map +1 -1
- package/lib/esm/BlobReader.d.ts +31 -31
- package/lib/esm/BlobReader.js +79 -79
- package/lib/esm/BriefcaseTypes.d.ts +191 -189
- package/lib/esm/BriefcaseTypes.d.ts.map +1 -1
- package/lib/esm/BriefcaseTypes.js +92 -92
- package/lib/esm/BriefcaseTypes.js.map +1 -1
- package/lib/esm/Camera.d.ts +42 -42
- package/lib/esm/Camera.js +58 -58
- package/lib/esm/Camera.js.map +1 -1
- package/lib/esm/ChangedElements.d.ts +85 -85
- package/lib/esm/ChangedElements.js +20 -20
- package/lib/esm/ChangedEntities.d.ts +45 -45
- package/lib/esm/ChangedEntities.d.ts.map +1 -1
- package/lib/esm/ChangedEntities.js +8 -8
- package/lib/esm/ChangesetProps.d.ts +98 -98
- package/lib/esm/ChangesetProps.d.ts.map +1 -1
- package/lib/esm/ChangesetProps.js +19 -19
- package/lib/esm/ClipStyle.d.ts +89 -89
- package/lib/esm/ClipStyle.js +118 -118
- package/lib/esm/ClipStyle.js.map +1 -1
- package/lib/esm/Code.d.ts +277 -277
- package/lib/esm/Code.d.ts.map +1 -1
- package/lib/esm/Code.js +263 -264
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ColorByName.d.ts +161 -161
- package/lib/esm/ColorByName.js +166 -166
- package/lib/esm/ColorDef.d.ts +210 -208
- package/lib/esm/ColorDef.d.ts.map +1 -1
- package/lib/esm/ColorDef.js +569 -567
- package/lib/esm/ColorDef.js.map +1 -1
- package/lib/esm/CommonLoggerCategory.d.ts +18 -18
- package/lib/esm/CommonLoggerCategory.js +23 -23
- package/lib/esm/ConcurrentQuery.d.ts +421 -421
- package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
- package/lib/esm/ConcurrentQuery.js +545 -545
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/ContextRealityModel.d.ts +303 -303
- package/lib/esm/ContextRealityModel.js +366 -368
- package/lib/esm/ContextRealityModel.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.d.ts +588 -588
- package/lib/esm/DisplayStyleSettings.d.ts.map +1 -1
- package/lib/esm/DisplayStyleSettings.js +976 -980
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ECSchemaProps.d.ts +39 -39
- package/lib/esm/ECSchemaProps.js +8 -8
- package/lib/esm/ECSqlReader.d.ts +70 -70
- package/lib/esm/ECSqlReader.d.ts.map +1 -1
- package/lib/esm/ECSqlReader.js +276 -275
- package/lib/esm/ECSqlReader.js.map +1 -1
- package/lib/esm/ECSqlTypes.d.ts +128 -128
- package/lib/esm/ECSqlTypes.js +185 -185
- package/lib/esm/ElementMesh.d.ts +39 -39
- package/lib/esm/ElementMesh.js +52 -52
- package/lib/esm/ElementProps.d.ts +483 -483
- package/lib/esm/ElementProps.d.ts.map +1 -1
- package/lib/esm/ElementProps.js +93 -92
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/EmphasizeElementsProps.d.ts +55 -55
- package/lib/esm/EmphasizeElementsProps.js +22 -22
- package/lib/esm/EntityProps.d.ts +177 -177
- package/lib/esm/EntityProps.d.ts.map +1 -1
- package/lib/esm/EntityProps.js +108 -108
- package/lib/esm/EntityReference.d.ts +51 -51
- package/lib/esm/EntityReference.d.ts.map +1 -1
- package/lib/esm/EntityReference.js +52 -52
- package/lib/esm/Environment.d.ts +61 -61
- package/lib/esm/Environment.d.ts.map +1 -1
- package/lib/esm/Environment.js +67 -69
- package/lib/esm/Environment.js.map +1 -1
- package/lib/esm/FeatureIndex.d.ts +39 -39
- package/lib/esm/FeatureIndex.js +57 -57
- package/lib/esm/FeatureIndex.js.map +1 -1
- package/lib/esm/FeatureSymbology.d.ts +449 -444
- package/lib/esm/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/FeatureSymbology.js +615 -609
- package/lib/esm/FeatureSymbology.js.map +1 -1
- package/lib/esm/FeatureTable.d.ts +248 -141
- package/lib/esm/FeatureTable.d.ts.map +1 -1
- package/lib/esm/FeatureTable.js +462 -272
- package/lib/esm/FeatureTable.js.map +1 -1
- package/lib/esm/Fonts.d.ts +51 -51
- package/lib/esm/Fonts.d.ts.map +1 -1
- package/lib/esm/Fonts.js +49 -49
- package/lib/esm/Frustum.d.ts +114 -114
- package/lib/esm/Frustum.js +288 -288
- package/lib/esm/GeoCoordinateServices.d.ts +123 -119
- package/lib/esm/GeoCoordinateServices.d.ts.map +1 -1
- package/lib/esm/GeoCoordinateServices.js +77 -76
- package/lib/esm/GeoCoordinateServices.js.map +1 -1
- package/lib/esm/GeometryContainment.d.ts +28 -28
- package/lib/esm/GeometryContainment.js +8 -8
- package/lib/esm/GeometryParams.d.ts +130 -130
- package/lib/esm/GeometryParams.js +170 -170
- package/lib/esm/GeometrySummary.d.ts +45 -45
- package/lib/esm/GeometrySummary.js +20 -20
- package/lib/esm/Gradient.d.ts +139 -139
- package/lib/esm/Gradient.js +450 -452
- package/lib/esm/Gradient.js.map +1 -1
- package/lib/esm/GraphicParams.d.ts +58 -58
- package/lib/esm/GraphicParams.js +81 -81
- package/lib/esm/GraphicParams.js.map +1 -1
- package/lib/esm/GroundPlane.d.ts +52 -52
- package/lib/esm/GroundPlane.d.ts.map +1 -1
- package/lib/esm/GroundPlane.js +60 -60
- package/lib/esm/GroundPlane.js.map +1 -1
- package/lib/esm/HSLColor.d.ts +20 -20
- package/lib/esm/HSLColor.js +28 -28
- package/lib/esm/HSLColor.js.map +1 -1
- package/lib/esm/HSVColor.d.ts +30 -30
- package/lib/esm/HSVColor.js +55 -55
- package/lib/esm/HSVColor.js.map +1 -1
- package/lib/esm/HiddenLine.d.ts +97 -97
- package/lib/esm/HiddenLine.js +157 -159
- package/lib/esm/HiddenLine.js.map +1 -1
- package/lib/esm/Hilite.d.ts +50 -50
- package/lib/esm/Hilite.js +61 -61
- package/lib/esm/Hilite.js.map +1 -1
- package/lib/esm/IModel.d.ts +358 -359
- package/lib/esm/IModel.d.ts.map +1 -1
- package/lib/esm/IModel.js +343 -342
- package/lib/esm/IModel.js.map +1 -1
- package/lib/esm/IModelError.d.ts +42 -42
- package/lib/esm/IModelError.d.ts.map +1 -1
- package/lib/esm/IModelError.js +56 -56
- package/lib/esm/IModelVersion.d.ts +68 -68
- package/lib/esm/IModelVersion.d.ts.map +1 -1
- package/lib/esm/IModelVersion.js +75 -75
- package/lib/esm/Image.d.ts +86 -86
- package/lib/esm/Image.js +120 -120
- package/lib/esm/Image.js.map +1 -1
- package/lib/esm/IpcAppProps.d.ts +141 -141
- package/lib/esm/IpcAppProps.js +19 -19
- package/lib/esm/LightSettings.d.ts +224 -224
- package/lib/esm/LightSettings.js +297 -301
- package/lib/esm/LightSettings.js.map +1 -1
- package/lib/esm/LinePixels.d.ts +34 -34
- package/lib/esm/LinePixels.js +39 -39
- package/lib/esm/Localization.d.ts +113 -113
- package/lib/esm/Localization.js +29 -29
- package/lib/esm/MapImagerySettings.d.ts +62 -62
- package/lib/esm/MapImagerySettings.d.ts.map +1 -1
- package/lib/esm/MapImagerySettings.js +76 -76
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/MapLayerSettings.d.ts +272 -272
- package/lib/esm/MapLayerSettings.d.ts.map +1 -1
- package/lib/esm/MapLayerSettings.js +399 -403
- package/lib/esm/MapLayerSettings.js.map +1 -1
- package/lib/esm/MassProperties.d.ts +64 -64
- package/lib/esm/MassProperties.js +20 -20
- package/lib/esm/MaterialProps.d.ts +153 -153
- package/lib/esm/MaterialProps.d.ts.map +1 -1
- package/lib/esm/MaterialProps.js +32 -32
- package/lib/esm/ModelClipGroup.d.ts +67 -67
- package/lib/esm/ModelClipGroup.js +91 -93
- package/lib/esm/ModelClipGroup.js.map +1 -1
- package/lib/esm/ModelGeometryChanges.d.ts +107 -107
- package/lib/esm/ModelGeometryChanges.d.ts.map +1 -1
- package/lib/esm/ModelGeometryChanges.js +80 -80
- package/lib/esm/ModelProps.d.ts +67 -67
- package/lib/esm/ModelProps.js +8 -8
- package/lib/esm/NativeAppProps.d.ts +122 -122
- package/lib/esm/NativeAppProps.d.ts.map +1 -1
- package/lib/esm/NativeAppProps.js +27 -27
- package/lib/esm/OctEncodedNormal.d.ts +33 -33
- package/lib/esm/OctEncodedNormal.js +93 -93
- package/lib/esm/PlanProjectionSettings.d.ts +47 -47
- package/lib/esm/PlanProjectionSettings.js +59 -59
- package/lib/esm/PlanProjectionSettings.js.map +1 -1
- package/lib/esm/PlanarClipMask.d.ts +177 -177
- package/lib/esm/PlanarClipMask.js +133 -132
- package/lib/esm/PlanarClipMask.js.map +1 -1
- package/lib/esm/QPoint.d.ts +479 -479
- package/lib/esm/QPoint.js +813 -815
- package/lib/esm/QPoint.js.map +1 -1
- package/lib/esm/RealityDataAccessProps.d.ts +41 -41
- package/lib/esm/RealityDataAccessProps.js +16 -16
- package/lib/esm/RealityModelDisplaySettings.d.ts +183 -183
- package/lib/esm/RealityModelDisplaySettings.d.ts.map +1 -1
- package/lib/esm/RealityModelDisplaySettings.js +138 -137
- package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
- package/lib/esm/Render.d.ts +89 -89
- package/lib/esm/Render.js +165 -165
- package/lib/esm/RenderMaterial.d.ts +58 -58
- package/lib/esm/RenderMaterial.js +71 -72
- package/lib/esm/RenderMaterial.js.map +1 -1
- package/lib/esm/RenderSchedule.d.ts +543 -543
- package/lib/esm/RenderSchedule.js +989 -999
- package/lib/esm/RenderSchedule.js.map +1 -1
- package/lib/esm/RenderTexture.d.ts +70 -70
- package/lib/esm/RenderTexture.d.ts.map +1 -1
- package/lib/esm/RenderTexture.js +55 -55
- package/lib/esm/RenderTexture.js.map +1 -1
- package/lib/esm/RgbColor.d.ts +47 -47
- package/lib/esm/RgbColor.js +73 -73
- package/lib/esm/RpcInterface.d.ts +40 -33
- package/lib/esm/RpcInterface.d.ts.map +1 -1
- package/lib/esm/RpcInterface.js +133 -133
- package/lib/esm/RpcInterface.js.map +1 -1
- package/lib/esm/RpcManager.d.ts +40 -40
- package/lib/esm/RpcManager.js +51 -51
- package/lib/esm/RpcManager.js.map +1 -1
- package/lib/esm/SessionProps.d.ts +16 -16
- package/lib/esm/SessionProps.js +8 -8
- package/lib/esm/SkyBox.d.ts +215 -215
- package/lib/esm/SkyBox.d.ts.map +1 -1
- package/lib/esm/SkyBox.js +204 -203
- package/lib/esm/SkyBox.js.map +1 -1
- package/lib/esm/Snapping.d.ts +49 -49
- package/lib/esm/Snapping.js +8 -8
- package/lib/esm/SolarCalculate.d.ts +27 -27
- package/lib/esm/SolarCalculate.js +204 -204
- package/lib/esm/SolarShadows.d.ts +35 -35
- package/lib/esm/SolarShadows.js +58 -58
- package/lib/esm/SolarShadows.js.map +1 -1
- package/lib/esm/SpatialClassification.d.ts +208 -208
- package/lib/esm/SpatialClassification.js +333 -334
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/SubCategoryAppearance.d.ts +91 -91
- package/lib/esm/SubCategoryAppearance.js +93 -92
- package/lib/esm/SubCategoryAppearance.js.map +1 -1
- package/lib/esm/SubCategoryOverride.d.ts +46 -46
- package/lib/esm/SubCategoryOverride.js +101 -100
- package/lib/esm/SubCategoryOverride.js.map +1 -1
- package/lib/esm/TerrainSettings.d.ts +82 -82
- package/lib/esm/TerrainSettings.d.ts.map +1 -1
- package/lib/esm/TerrainSettings.js +96 -98
- package/lib/esm/TerrainSettings.js.map +1 -1
- package/lib/esm/TextureMapping.d.ts +151 -118
- package/lib/esm/TextureMapping.d.ts.map +1 -1
- package/lib/esm/TextureMapping.js +176 -170
- package/lib/esm/TextureMapping.js.map +1 -1
- package/lib/esm/TextureProps.d.ts +65 -65
- package/lib/esm/TextureProps.js +25 -25
- package/lib/esm/ThematicDisplay.d.ts +230 -230
- package/lib/esm/ThematicDisplay.js +337 -337
- package/lib/esm/ThematicDisplay.js.map +1 -1
- package/lib/esm/Thumbnail.d.ts +26 -26
- package/lib/esm/Thumbnail.js +8 -8
- package/lib/esm/TileProps.d.ts +88 -82
- package/lib/esm/TileProps.d.ts.map +1 -1
- package/lib/esm/TileProps.js +25 -25
- package/lib/esm/TileProps.js.map +1 -1
- package/lib/esm/Tween.d.ts +191 -191
- package/lib/esm/Tween.d.ts.map +1 -1
- package/lib/esm/Tween.js +565 -565
- package/lib/esm/TxnAction.d.ts +21 -21
- package/lib/esm/TxnAction.js +26 -26
- package/lib/esm/ViewDetails.d.ts +125 -125
- package/lib/esm/ViewDetails.js +162 -161
- package/lib/esm/ViewDetails.js.map +1 -1
- package/lib/esm/ViewFlags.d.ts +287 -287
- package/lib/esm/ViewFlags.d.ts.map +1 -1
- package/lib/esm/ViewFlags.js +364 -364
- package/lib/esm/ViewFlags.js.map +1 -1
- package/lib/esm/ViewProps.d.ts +205 -205
- package/lib/esm/ViewProps.js +8 -8
- package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +36 -36
- package/lib/esm/WhiteOnWhiteReversalSettings.js +34 -33
- package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/esm/core-common.d.ts +243 -244
- package/lib/esm/core-common.d.ts.map +1 -1
- package/lib/esm/core-common.js +247 -248
- package/lib/esm/core-common.js.map +1 -1
- package/lib/esm/domains/FunctionalElementProps.d.ts +11 -11
- package/lib/esm/domains/FunctionalElementProps.js +8 -8
- package/lib/esm/domains/GenericElementProps.d.ts +18 -18
- package/lib/esm/domains/GenericElementProps.js +8 -8
- package/lib/esm/geometry/AdditionalTransform.d.ts +84 -84
- package/lib/esm/geometry/AdditionalTransform.js +80 -80
- package/lib/esm/geometry/AreaPattern.d.ts +82 -82
- package/lib/esm/geometry/AreaPattern.js +200 -201
- package/lib/esm/geometry/AreaPattern.js.map +1 -1
- package/lib/esm/geometry/BoundingSphere.d.ts +27 -27
- package/lib/esm/geometry/BoundingSphere.js +40 -40
- package/lib/esm/geometry/BoundingSphere.js.map +1 -1
- package/lib/esm/geometry/Cartographic.d.ts +137 -137
- package/lib/esm/geometry/Cartographic.js +341 -340
- package/lib/esm/geometry/Cartographic.js.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +269 -269
- package/lib/esm/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.js +253 -254
- package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/esm/geometry/ElementGeometry.d.ts +402 -402
- package/lib/esm/geometry/ElementGeometry.d.ts.map +1 -1
- package/lib/esm/geometry/ElementGeometry.js +1716 -1716
- package/lib/esm/geometry/ElementGeometry.js.map +1 -1
- package/lib/esm/geometry/ElementGeometryFB.d.ts +2372 -2372
- package/lib/esm/geometry/ElementGeometryFB.js +3811 -3811
- package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/esm/geometry/FrustumPlanes.d.ts +83 -81
- package/lib/esm/geometry/FrustumPlanes.d.ts.map +1 -1
- package/lib/esm/geometry/FrustumPlanes.js +223 -189
- package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.d.ts +409 -409
- package/lib/esm/geometry/GeodeticDatum.d.ts.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.js +389 -390
- package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.d.ts +72 -72
- package/lib/esm/geometry/GeodeticEllipsoid.js +67 -68
- package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/esm/geometry/GeometryStream.d.ts +347 -347
- package/lib/esm/geometry/GeometryStream.d.ts.map +1 -1
- package/lib/esm/geometry/GeometryStream.js +463 -464
- package/lib/esm/geometry/GeometryStream.js.map +1 -1
- package/lib/esm/geometry/ImageGraphic.d.ts +74 -74
- package/lib/esm/geometry/ImageGraphic.d.ts.map +1 -1
- package/lib/esm/geometry/ImageGraphic.js +93 -93
- package/lib/esm/geometry/LineStyle.d.ts +71 -71
- package/lib/esm/geometry/LineStyle.js +126 -126
- package/lib/esm/geometry/Placement.d.ts +95 -95
- package/lib/esm/geometry/Placement.d.ts.map +1 -1
- package/lib/esm/geometry/Placement.js +126 -126
- package/lib/esm/geometry/Projection.d.ts +251 -251
- package/lib/esm/geometry/Projection.d.ts.map +1 -1
- package/lib/esm/geometry/Projection.js +192 -192
- package/lib/esm/geometry/Projection.js.map +1 -1
- package/lib/esm/geometry/TextString.d.ts +55 -55
- package/lib/esm/geometry/TextString.js +61 -61
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/ipc/IpcSession.d.ts +23 -23
- package/lib/esm/ipc/IpcSession.js +23 -23
- package/lib/esm/ipc/IpcSocket.d.ts +96 -96
- package/lib/esm/ipc/IpcSocket.d.ts.map +1 -1
- package/lib/esm/ipc/IpcSocket.js +12 -12
- package/lib/esm/ipc/IpcWebSocket.d.ts +61 -61
- package/lib/esm/ipc/IpcWebSocket.js +145 -145
- package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.d.ts +15 -15
- package/lib/esm/ipc/IpcWebSocketTransport.js +156 -156
- package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/esm/rpc/DevToolsRpcInterface.d.ts +32 -32
- package/lib/esm/rpc/DevToolsRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/DevToolsRpcInterface.js +49 -44
- package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts +99 -99
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js +118 -117
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.d.ts +49 -61
- package/lib/esm/rpc/IModelTileRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js +76 -92
- package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/esm/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js +45 -44
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/esm/rpc/TestRpcManager.d.ts +20 -20
- package/lib/esm/rpc/TestRpcManager.js +36 -36
- package/lib/esm/rpc/WipRpcInterface.d.ts +29 -29
- package/lib/esm/rpc/WipRpcInterface.js +37 -36
- package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
- package/lib/esm/rpc/core/RpcConfiguration.d.ts +111 -111
- package/lib/esm/rpc/core/RpcConfiguration.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcConfiguration.js +185 -184
- package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/esm/rpc/core/RpcConstants.d.ts +90 -90
- package/lib/esm/rpc/core/RpcConstants.js +106 -106
- package/lib/esm/rpc/core/RpcControl.d.ts +54 -54
- package/lib/esm/rpc/core/RpcControl.js +144 -138
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.d.ts +89 -89
- package/lib/esm/rpc/core/RpcInvocation.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js +253 -254
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.d.ts +35 -35
- package/lib/esm/rpc/core/RpcMarshaling.js +152 -152
- package/lib/esm/rpc/core/RpcOperation.d.ts +67 -67
- package/lib/esm/rpc/core/RpcOperation.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.js +130 -129
- package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
- package/lib/esm/rpc/core/RpcPendingQueue.d.ts +21 -21
- package/lib/esm/rpc/core/RpcPendingQueue.js +90 -91
- package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.d.ts +132 -132
- package/lib/esm/rpc/core/RpcProtocol.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.js +124 -123
- package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/esm/rpc/core/RpcPush.d.ts +68 -68
- package/lib/esm/rpc/core/RpcPush.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcPush.js +121 -119
- package/lib/esm/rpc/core/RpcPush.js.map +1 -1
- package/lib/esm/rpc/core/RpcRegistry.d.ts +48 -48
- package/lib/esm/rpc/core/RpcRegistry.js +194 -195
- package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.d.ts +186 -186
- package/lib/esm/rpc/core/RpcRequest.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js +474 -473
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequestContext.d.ts +14 -14
- package/lib/esm/rpc/core/RpcRequestContext.js +1 -1
- package/lib/esm/rpc/core/RpcRoutingToken.d.ts +12 -12
- package/lib/esm/rpc/core/RpcRoutingToken.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcRoutingToken.js +21 -20
- package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +10 -10
- package/lib/esm/rpc/core/RpcSessionInvocation.js +56 -56
- package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts +48 -46
- package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js +72 -68
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +137 -139
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/OpenAPI.d.ts +140 -140
- package/lib/esm/rpc/web/OpenAPI.js +56 -56
- package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.d.ts +35 -35
- package/lib/esm/rpc/web/RpcMultipart.js +47 -46
- package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.d.ts +28 -28
- package/lib/esm/rpc/web/WebAppRpcLogging.js +136 -136
- package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +89 -89
- package/lib/esm/rpc/web/WebAppRpcProtocol.js +112 -112
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +67 -67
- package/lib/esm/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js +236 -235
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +369 -369
- package/lib/esm/tile/B3dmTileIO.d.ts +19 -19
- package/lib/esm/tile/B3dmTileIO.js +62 -62
- package/lib/esm/tile/B3dmTileIO.js.map +1 -1
- package/lib/esm/tile/CompositeTileIO.d.ts +15 -15
- package/lib/esm/tile/CompositeTileIO.js +22 -22
- package/lib/esm/tile/CompositeTileIO.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.d.ts +145 -145
- package/lib/esm/tile/ElementGraphics.d.ts.map +1 -1
- package/lib/esm/tile/ElementGraphics.js +8 -8
- package/lib/esm/tile/GltfTileIO.d.ts +45 -45
- package/lib/esm/tile/GltfTileIO.d.ts.map +1 -1
- package/lib/esm/tile/GltfTileIO.js +105 -105
- package/lib/esm/tile/GltfTileIO.js.map +1 -1
- package/lib/esm/tile/I3dmTileIO.d.ts +20 -20
- package/lib/esm/tile/I3dmTileIO.js +36 -36
- package/lib/esm/tile/I3dmTileIO.js.map +1 -1
- package/lib/esm/tile/IModelTileIO.d.ts +77 -75
- package/lib/esm/tile/IModelTileIO.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileIO.js +93 -90
- package/lib/esm/tile/IModelTileIO.js.map +1 -1
- package/lib/esm/tile/PntsTileIO.d.ts +17 -17
- package/lib/esm/tile/PntsTileIO.js +22 -22
- package/lib/esm/tile/PntsTileIO.js.map +1 -1
- package/lib/esm/tile/TileIO.d.ts +66 -66
- package/lib/esm/tile/TileIO.js +110 -110
- package/lib/esm/tile/TileMetadata.d.ts +228 -228
- package/lib/esm/tile/TileMetadata.d.ts.map +1 -1
- package/lib/esm/tile/TileMetadata.js +660 -661
- package/lib/esm/tile/TileMetadata.js.map +1 -1
- package/lib/esm/tile/Tileset3dSchema.d.ts +97 -0
- package/lib/esm/tile/Tileset3dSchema.d.ts.map +1 -0
- package/lib/esm/tile/Tileset3dSchema.js +9 -0
- package/lib/esm/tile/Tileset3dSchema.js.map +1 -0
- package/package.json +13 -13
- package/lib/cjs/CloudStorage.d.ts +0 -63
- package/lib/cjs/CloudStorage.d.ts.map +0 -1
- package/lib/cjs/CloudStorage.js +0 -114
- package/lib/cjs/CloudStorage.js.map +0 -1
- package/lib/cjs/CloudStorageTileCache.d.ts +0 -28
- package/lib/cjs/CloudStorageTileCache.d.ts.map +0 -1
- package/lib/cjs/CloudStorageTileCache.js +0 -67
- package/lib/cjs/CloudStorageTileCache.js.map +0 -1
- package/lib/esm/CloudStorage.d.ts +0 -63
- package/lib/esm/CloudStorage.d.ts.map +0 -1
- package/lib/esm/CloudStorage.js +0 -110
- package/lib/esm/CloudStorage.js.map +0 -1
- package/lib/esm/CloudStorageTileCache.d.ts +0 -28
- package/lib/esm/CloudStorageTileCache.d.ts.map +0 -1
- package/lib/esm/CloudStorageTileCache.js +0 -63
- package/lib/esm/CloudStorageTileCache.js.map +0 -1
|
@@ -1,677 +1,676 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
/** @packageDocumentation
|
|
7
|
-
* @module Tile
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.TileMetadataReader = exports.computeTileChordTolerance = exports.readTileContentDescription = exports.computeChildTileProps = exports.computeChildTileRanges = exports.bisectTileRange2d = exports.bisectTileRange3d = exports.ContentIdProvider = exports.ContentFlags = exports.compareIModelTileTreeIds = exports.iModelTileTreeIdToString = exports.TreeFlags = exports.getMaximumMajorTileFormatVersion = exports.defaultTileOptions = exports.parseTileTreeIdAndContentId = exports.TileOptions = void 0;
|
|
11
|
-
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
-
const core_geometry_1 = require("@itwin/core-geometry");
|
|
13
|
-
const FeatureTable_1 = require("../FeatureTable");
|
|
14
|
-
const IModelTileIO_1 = require("./IModelTileIO");
|
|
15
|
-
const TileIO_1 = require("./TileIO");
|
|
16
|
-
// cspell:ignore imdl mult bitfield
|
|
17
|
-
// NB: These constants correspond to those defined in Tile.cpp.
|
|
18
|
-
var Constants;
|
|
19
|
-
(function (Constants) {
|
|
20
|
-
Constants.minToleranceRatioMultiplier = 2;
|
|
21
|
-
})(Constants || (Constants = {}));
|
|
22
|
-
/** @internal */
|
|
23
|
-
var TileOptions;
|
|
24
|
-
(function (TileOptions) {
|
|
25
|
-
/** Given the string representation of an [[IModelTileTreeId]] and the contentId of a [Tile]($frontend) belonging to that [TileTree]($frontend),
|
|
26
|
-
* compute the [[TileOptions]] that were used to generate the Ids.
|
|
27
|
-
* @throws Error if `treeId` or `contentId` are not valid Ids.
|
|
28
|
-
* @note `treeId` and `contentId` are assumed to be valid Ids. They are not fully parsed and validated - only the information required by this function is extracted.
|
|
29
|
-
* @note `treeId` and `contentId` are assumed to have been produced for version 4 or later of the iMdl tile format.
|
|
30
|
-
*/
|
|
31
|
-
function fromTreeIdAndContentId(treeId, contentId) {
|
|
32
|
-
const tree = treeFlagsAndFormatVersionFromId(treeId);
|
|
33
|
-
const contentFlags = contentFlagsFromId(contentId);
|
|
34
|
-
const edgeOptions = edgeOptionsFromTreeId(treeId);
|
|
35
|
-
return {
|
|
36
|
-
maximumMajorTileFormatVersion: tree.version,
|
|
37
|
-
enableInstancing: 0 !== (contentFlags & ContentFlags.AllowInstancing),
|
|
38
|
-
enableImprovedElision: 0 !== (contentFlags & ContentFlags.ImprovedElision),
|
|
39
|
-
ignoreAreaPatterns: 0 !== (contentFlags & ContentFlags.IgnoreAreaPatterns),
|
|
40
|
-
enableExternalTextures: 0 !== (contentFlags & ContentFlags.ExternalTextures),
|
|
41
|
-
useProjectExtents: 0 !== (tree.flags & TreeFlags.UseProjectExtents),
|
|
42
|
-
optimizeBRepProcessing: 0 !== (tree.flags & TreeFlags.OptimizeBRepProcessing),
|
|
43
|
-
useLargerTiles: 0 !== (tree.flags & TreeFlags.UseLargerTiles),
|
|
44
|
-
disableMagnification: false,
|
|
45
|
-
alwaysSubdivideIncompleteTiles: false,
|
|
46
|
-
enableIndexedEdges: edgeOptions && edgeOptions.indexed,
|
|
47
|
-
generateAllPolyfaceEdges: edgeOptions && edgeOptions.smooth,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
TileOptions.fromTreeIdAndContentId = fromTreeIdAndContentId;
|
|
51
|
-
})(TileOptions = exports.TileOptions || (exports.TileOptions = {}));
|
|
52
|
-
class Parser {
|
|
53
|
-
constructor(input) {
|
|
54
|
-
this.curPos = 0;
|
|
55
|
-
this.input = input;
|
|
56
|
-
}
|
|
57
|
-
parse(contentId) {
|
|
58
|
-
this.require(this.input.length > 0);
|
|
59
|
-
// Skip version and flags, they're handled by TileOptions.fromTreeIdAndContentId
|
|
60
|
-
while (this.curPos < this.input.length && this.cur() !== "-")
|
|
61
|
-
this.advance();
|
|
62
|
-
this.eat("-");
|
|
63
|
-
this.require(this.curPos < this.input.length);
|
|
64
|
-
const classifier = this.cur() === "C" ? this.parseClassifier() : undefined;
|
|
65
|
-
const animationId = this.parseAnimation();
|
|
66
|
-
const primary = classifier ? undefined : this.parsePrimary();
|
|
67
|
-
this.require((undefined === classifier) !== (undefined === primary));
|
|
68
|
-
const modelId = this.input.
|
|
69
|
-
this.require(core_bentley_1.Id64.isId64(modelId));
|
|
70
|
-
const { flags: treeFlags } = treeFlagsAndFormatVersionFromId(this.input);
|
|
71
|
-
const options = TileOptions.fromTreeIdAndContentId(this.input, contentId);
|
|
72
|
-
let parsedContentId;
|
|
73
|
-
try {
|
|
74
|
-
parsedContentId = ContentIdProvider.create(true, options).specFromId(contentId);
|
|
75
|
-
}
|
|
76
|
-
catch (e) {
|
|
77
|
-
this.reject("Invalid content Id");
|
|
78
|
-
}
|
|
79
|
-
if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
|
|
80
|
-
throw new Error("Invalid content Id");
|
|
81
|
-
let treeId;
|
|
82
|
-
if (classifier) {
|
|
83
|
-
treeId = { ...classifier, animationId };
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
(0, core_bentley_1.assert)(undefined !== primary);
|
|
87
|
-
const enforceDisplayPriority = (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined;
|
|
88
|
-
treeId = { ...primary, animationId, type: FeatureTable_1.BatchType.Primary, enforceDisplayPriority };
|
|
89
|
-
}
|
|
90
|
-
return {
|
|
91
|
-
contentId: parsedContentId,
|
|
92
|
-
modelId,
|
|
93
|
-
options,
|
|
94
|
-
treeId,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
cur() {
|
|
98
|
-
this.require(this.curPos < this.input.length);
|
|
99
|
-
return this.input[this.curPos];
|
|
100
|
-
}
|
|
101
|
-
advance() {
|
|
102
|
-
this.require(this.curPos < this.input.length);
|
|
103
|
-
++this.curPos;
|
|
104
|
-
}
|
|
105
|
-
eat(expectedChar) {
|
|
106
|
-
this.require(this.cur() === expectedChar);
|
|
107
|
-
this.advance();
|
|
108
|
-
}
|
|
109
|
-
reject(message = "Invalid tree Id") {
|
|
110
|
-
throw new Error(message);
|
|
111
|
-
}
|
|
112
|
-
require(condition, message = "Invalid tree Id") {
|
|
113
|
-
if (!condition)
|
|
114
|
-
this.reject(message);
|
|
115
|
-
}
|
|
116
|
-
parseClassifier() {
|
|
117
|
-
this.eat("C");
|
|
118
|
-
let type = FeatureTable_1.BatchType.VolumeClassifier;
|
|
119
|
-
if (this.cur() === "P") {
|
|
120
|
-
type = FeatureTable_1.BatchType.PlanarClassifier;
|
|
121
|
-
this.advance();
|
|
122
|
-
}
|
|
123
|
-
this.eat(":");
|
|
124
|
-
// C: or CP: is always folowed by expansion then an underscore.
|
|
125
|
-
let expansionStr = "";
|
|
126
|
-
while (this.curPos < this.input.length && (this.cur() >= "0" && this.cur() <= "9" || this.cur() === ".")) {
|
|
127
|
-
expansionStr += this.cur();
|
|
128
|
-
this.advance();
|
|
129
|
-
}
|
|
130
|
-
this.eat("_");
|
|
131
|
-
const expansion = Number.parseFloat(expansionStr);
|
|
132
|
-
this.require(!Number.isNaN(expansion));
|
|
133
|
-
return { type, expansion };
|
|
134
|
-
}
|
|
135
|
-
parseAnimation() {
|
|
136
|
-
if (this.cur() !== "A")
|
|
137
|
-
return undefined;
|
|
138
|
-
this.eat("A");
|
|
139
|
-
this.eat(":");
|
|
140
|
-
const termPos = this.input.indexOf("_", this.curPos);
|
|
141
|
-
this.require(termPos > this.curPos);
|
|
142
|
-
const animationId = this.input.substring(this.curPos, termPos);
|
|
143
|
-
this.require(core_bentley_1.Id64.isId64(animationId));
|
|
144
|
-
this.curPos = termPos + 1; // Skip "_"
|
|
145
|
-
return animationId;
|
|
146
|
-
}
|
|
147
|
-
parsePrimary() {
|
|
148
|
-
const edges = this.parseEdges();
|
|
149
|
-
const sectionCut = this.parseSectionCut();
|
|
150
|
-
return { edges, sectionCut };
|
|
151
|
-
}
|
|
152
|
-
parseEdges() {
|
|
153
|
-
if ("E" !== this.cur())
|
|
154
|
-
return { indexed: false, smooth: false };
|
|
155
|
-
this.eat("E");
|
|
156
|
-
this.eat(":");
|
|
157
|
-
const typeStr = this.cur();
|
|
158
|
-
this.eat(typeStr);
|
|
159
|
-
this.eat("_");
|
|
160
|
-
switch (typeStr) {
|
|
161
|
-
case "0": return false;
|
|
162
|
-
case "2": return { indexed: true, smooth: false };
|
|
163
|
-
case "3": return { indexed: false, smooth: true };
|
|
164
|
-
case "4": return { indexed: true, smooth: true };
|
|
165
|
-
default: this.reject();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
parseSectionCut() {
|
|
169
|
-
if ("S" !== this.cur())
|
|
170
|
-
return undefined;
|
|
171
|
-
this.eat("S");
|
|
172
|
-
const termPos = this.input.indexOf("s", this.curPos);
|
|
173
|
-
this.require(termPos > this.curPos);
|
|
174
|
-
const sectionCut = this.input.substring(this.curPos, termPos);
|
|
175
|
-
this.curPos = termPos + 1; // Skip "_";
|
|
176
|
-
return sectionCut;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/** @internal */
|
|
180
|
-
function parseTileTreeIdAndContentId(treeId, contentId) {
|
|
181
|
-
const parser = new Parser(treeId);
|
|
182
|
-
return parser.parse(contentId);
|
|
183
|
-
}
|
|
184
|
-
exports.parseTileTreeIdAndContentId = parseTileTreeIdAndContentId;
|
|
185
|
-
/** @internal */
|
|
186
|
-
exports.defaultTileOptions = Object.freeze({
|
|
187
|
-
maximumMajorTileFormatVersion: IModelTileIO_1.CurrentImdlVersion.Major,
|
|
188
|
-
enableInstancing: true,
|
|
189
|
-
enableImprovedElision: true,
|
|
190
|
-
ignoreAreaPatterns: false,
|
|
191
|
-
enableExternalTextures: true,
|
|
192
|
-
useProjectExtents: true,
|
|
193
|
-
optimizeBRepProcessing: true,
|
|
194
|
-
useLargerTiles: true,
|
|
195
|
-
disableMagnification: false,
|
|
196
|
-
alwaysSubdivideIncompleteTiles: false,
|
|
197
|
-
enableIndexedEdges: true,
|
|
198
|
-
generateAllPolyfaceEdges: true,
|
|
199
|
-
});
|
|
200
|
-
function contentFlagsFromId(id) {
|
|
201
|
-
if (0 === id.length || "-" !== id[0])
|
|
202
|
-
throw new Error("Invalid content Id");
|
|
203
|
-
// V4: -flags-d-i-j-k-m - version in tree Id
|
|
204
|
-
const end = id.indexOf("-", 1);
|
|
205
|
-
if (-1 !== end) {
|
|
206
|
-
const flags = Number.parseInt(id.substring(1, end), 16);
|
|
207
|
-
if (!Number.isNaN(flags))
|
|
208
|
-
return flags;
|
|
209
|
-
}
|
|
210
|
-
throw new Error("Invalid content Id");
|
|
211
|
-
}
|
|
212
|
-
function treeFlagsAndFormatVersionFromId(id) {
|
|
213
|
-
if (0 === id.length)
|
|
214
|
-
throw new Error("Invalid tree Id");
|
|
215
|
-
let parts = id.split("-");
|
|
216
|
-
if (parts.length > 0) {
|
|
217
|
-
parts = parts[0].split("_");
|
|
218
|
-
if (parts.length === 2) {
|
|
219
|
-
const version = Number.parseInt(parts[0], 16);
|
|
220
|
-
const flags = Number.parseInt(parts[1], 16);
|
|
221
|
-
if (!Number.isNaN(version) || !Number.isNaN(flags))
|
|
222
|
-
return { version, flags };
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
throw new Error("Invalid tree Id");
|
|
226
|
-
}
|
|
227
|
-
function edgeOptionsFromTreeId(id) {
|
|
228
|
-
const pos = id.indexOf("E:");
|
|
229
|
-
if (pos <= 0)
|
|
230
|
-
return { indexed: false, smooth: false };
|
|
231
|
-
switch (id[pos + 2]) {
|
|
232
|
-
case "0": return { indexed: exports.defaultTileOptions.enableIndexedEdges, smooth: exports.defaultTileOptions.generateAllPolyfaceEdges };
|
|
233
|
-
case "2": return { indexed: true, smooth: false };
|
|
234
|
-
case "3": return { indexed: false, smooth: true };
|
|
235
|
-
case "4": return { indexed: true, smooth: true };
|
|
236
|
-
}
|
|
237
|
-
throw new Error("Invalid tree Id");
|
|
238
|
-
}
|
|
239
|
-
/** @internal */
|
|
240
|
-
function getMaximumMajorTileFormatVersion(maxMajorVersion, formatVersion) {
|
|
241
|
-
// The `formatVersion` input is from the backend, telling us precisely the maximum major+minor version it can produce.
|
|
242
|
-
// Ensure we do not request tiles of a newer major version than backend can supply or it can read; and also limit major version
|
|
243
|
-
// to that optionally configured by the app.
|
|
244
|
-
let majorVersion = maxMajorVersion;
|
|
245
|
-
if (undefined !== formatVersion)
|
|
246
|
-
majorVersion = Math.min((formatVersion >>> 0x10), majorVersion);
|
|
247
|
-
// Version number less than 1 is invalid - ignore
|
|
248
|
-
majorVersion = Math.max(majorVersion, 1);
|
|
249
|
-
// Version number greater than current known version ignored
|
|
250
|
-
majorVersion = Math.min(majorVersion, IModelTileIO_1.CurrentImdlVersion.Major);
|
|
251
|
-
// Version numbers are integers - round down
|
|
252
|
-
return Math.max(Math.floor(majorVersion), 1);
|
|
253
|
-
}
|
|
254
|
-
exports.getMaximumMajorTileFormatVersion = getMaximumMajorTileFormatVersion;
|
|
255
|
-
/** Flags controlling the structure of a tile tree. The flags are part of the tile tree's Id.
|
|
256
|
-
* @alpha
|
|
257
|
-
*/
|
|
258
|
-
var TreeFlags;
|
|
259
|
-
(function (TreeFlags) {
|
|
260
|
-
TreeFlags[TreeFlags["None"] = 0] = "None";
|
|
261
|
-
TreeFlags[TreeFlags["UseProjectExtents"] = 1] = "UseProjectExtents";
|
|
262
|
-
TreeFlags[TreeFlags["EnforceDisplayPriority"] = 2] = "EnforceDisplayPriority";
|
|
263
|
-
TreeFlags[TreeFlags["OptimizeBRepProcessing"] = 4] = "OptimizeBRepProcessing";
|
|
264
|
-
TreeFlags[TreeFlags["UseLargerTiles"] = 8] = "UseLargerTiles";
|
|
265
|
-
})(TreeFlags = exports.TreeFlags || (exports.TreeFlags = {}));
|
|
266
|
-
function compareEdgeOptions(a, b) {
|
|
267
|
-
if (typeof a !== typeof b)
|
|
268
|
-
return a ? 1 : -1;
|
|
269
|
-
if (typeof a === "boolean") {
|
|
270
|
-
(0, core_bentley_1.assert)(typeof b === "boolean");
|
|
271
|
-
return (0, core_bentley_1.compareBooleans)(a, b);
|
|
272
|
-
}
|
|
273
|
-
(0, core_bentley_1.assert)(typeof b === "object");
|
|
274
|
-
let cmp = (0, core_bentley_1.compareBooleans)(a.indexed, b.indexed);
|
|
275
|
-
if (0 === cmp)
|
|
276
|
-
cmp = (0, core_bentley_1.compareBooleans)(a.smooth, b.smooth);
|
|
277
|
-
return cmp;
|
|
278
|
-
}
|
|
279
|
-
function animationIdToString(animationId) {
|
|
280
|
-
return `A:${animationId}_`;
|
|
281
|
-
}
|
|
282
|
-
/** Convert a tile tree Id to its string representation.
|
|
283
|
-
* @internal
|
|
284
|
-
*/
|
|
285
|
-
function iModelTileTreeIdToString(modelId, treeId, options) {
|
|
286
|
-
let idStr = "";
|
|
287
|
-
let flags = options.useProjectExtents ? TreeFlags.UseProjectExtents : TreeFlags.None;
|
|
288
|
-
if (options.optimizeBRepProcessing)
|
|
289
|
-
flags |= TreeFlags.OptimizeBRepProcessing;
|
|
290
|
-
if (options.useLargerTiles)
|
|
291
|
-
flags |= TreeFlags.UseLargerTiles;
|
|
292
|
-
if (FeatureTable_1.BatchType.Primary === treeId.type) {
|
|
293
|
-
if (undefined !== treeId.animationId)
|
|
294
|
-
idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
|
|
295
|
-
else if (treeId.enforceDisplayPriority) // animation and priority are currently mutually exclusive
|
|
296
|
-
flags |= TreeFlags.EnforceDisplayPriority;
|
|
297
|
-
let edges;
|
|
298
|
-
if (!treeId.edges) {
|
|
299
|
-
edges = "E:0_";
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
if (!treeId.edges.smooth)
|
|
303
|
-
edges = treeId.edges.indexed ? "E:2_" : "";
|
|
304
|
-
else
|
|
305
|
-
edges = treeId.edges.indexed ? "E:4_" : "E:3_";
|
|
306
|
-
}
|
|
307
|
-
const sectionCut = treeId.sectionCut ? `S${treeId.sectionCut}s` : "";
|
|
308
|
-
idStr = `${idStr}${edges}${sectionCut}`;
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
const typeStr = FeatureTable_1.BatchType.PlanarClassifier === treeId.type ? "CP" : "C";
|
|
312
|
-
idStr = `${idStr + typeStr}:${treeId.expansion.toFixed(6)}_`;
|
|
313
|
-
if (FeatureTable_1.BatchType.VolumeClassifier === treeId.type)
|
|
314
|
-
flags |= TreeFlags.UseProjectExtents;
|
|
315
|
-
if (undefined !== treeId.animationId)
|
|
316
|
-
idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
|
|
317
|
-
}
|
|
318
|
-
const version = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion);
|
|
319
|
-
if (version >= 4) {
|
|
320
|
-
const prefix = `${version.toString(16)}_${flags.toString(16)}-`;
|
|
321
|
-
idStr = prefix + idStr;
|
|
322
|
-
}
|
|
323
|
-
return idStr + modelId;
|
|
324
|
-
}
|
|
325
|
-
exports.iModelTileTreeIdToString = iModelTileTreeIdToString;
|
|
326
|
-
/** Ordinal comparison of two tile tree Ids, e.g., for use in sorted containers.
|
|
327
|
-
* @internal
|
|
328
|
-
*/
|
|
329
|
-
function compareIModelTileTreeIds(lhs, rhs) {
|
|
330
|
-
let cmp = (0, core_bentley_1.compareNumbers)(lhs.type, rhs.type);
|
|
331
|
-
if (0 === cmp)
|
|
332
|
-
cmp = (0, core_bentley_1.compareStringsOrUndefined)(lhs.animationId, rhs.animationId);
|
|
333
|
-
if (0 !== cmp)
|
|
334
|
-
return cmp;
|
|
335
|
-
// NB: The redundant checks on BatchType below are to satisfy compiler.
|
|
336
|
-
(0, core_bentley_1.assert)(lhs.type === rhs.type);
|
|
337
|
-
if (FeatureTable_1.BatchType.Primary === lhs.type && FeatureTable_1.BatchType.Primary === rhs.type) {
|
|
338
|
-
cmp = compareEdgeOptions(lhs.edges, rhs.edges);
|
|
339
|
-
if (0 === cmp) {
|
|
340
|
-
cmp = (0, core_bentley_1.compareBooleansOrUndefined)(lhs.enforceDisplayPriority, rhs.enforceDisplayPriority);
|
|
341
|
-
if (0 === cmp)
|
|
342
|
-
cmp = (0, core_bentley_1.compareStringsOrUndefined)(lhs.sectionCut, rhs.sectionCut);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
else if (FeatureTable_1.BatchType.Primary !== lhs.type && FeatureTable_1.BatchType.Primary !== rhs.type) {
|
|
346
|
-
cmp = (0, core_bentley_1.compareNumbers)(lhs.expansion, rhs.expansion);
|
|
347
|
-
}
|
|
348
|
-
return cmp;
|
|
349
|
-
}
|
|
350
|
-
exports.compareIModelTileTreeIds = compareIModelTileTreeIds;
|
|
351
|
-
/** Flags controlling how tile content is produced. The flags are part of the ContentId.
|
|
352
|
-
* @alpha
|
|
353
|
-
*/
|
|
354
|
-
var ContentFlags;
|
|
355
|
-
(function (ContentFlags) {
|
|
356
|
-
ContentFlags[ContentFlags["None"] = 0] = "None";
|
|
357
|
-
ContentFlags[ContentFlags["AllowInstancing"] = 1] = "AllowInstancing";
|
|
358
|
-
ContentFlags[ContentFlags["ImprovedElision"] = 2] = "ImprovedElision";
|
|
359
|
-
ContentFlags[ContentFlags["IgnoreAreaPatterns"] = 4] = "IgnoreAreaPatterns";
|
|
360
|
-
ContentFlags[ContentFlags["ExternalTextures"] = 8] = "ExternalTextures";
|
|
361
|
-
})(ContentFlags = exports.ContentFlags || (exports.ContentFlags = {}));
|
|
362
|
-
/** Contains logic for working with tile content Ids according to a specific content Id scheme. Which scheme is used depends on
|
|
363
|
-
* the major version of the tile format.
|
|
364
|
-
* @internal
|
|
365
|
-
*/
|
|
366
|
-
class ContentIdProvider {
|
|
367
|
-
constructor(formatVersion, contentFlags) {
|
|
368
|
-
this.majorFormatVersion = formatVersion;
|
|
369
|
-
this.contentFlags = contentFlags;
|
|
370
|
-
}
|
|
371
|
-
get rootContentId() {
|
|
372
|
-
return this.computeId(0, 0, 0, 0, 1);
|
|
373
|
-
}
|
|
374
|
-
idFromParentAndMultiplier(parentId, multiplier) {
|
|
375
|
-
const lastSepPos = parentId.lastIndexOf(this._separator);
|
|
376
|
-
(0, core_bentley_1.assert)(-1 !== lastSepPos);
|
|
377
|
-
return parentId.substring(0, lastSepPos + 1) + multiplier.toString(16);
|
|
378
|
-
}
|
|
379
|
-
specFromId(id) {
|
|
380
|
-
const parts = id.split(this._separator);
|
|
381
|
-
const len = parts.length;
|
|
382
|
-
(0, core_bentley_1.assert)(len >= 5);
|
|
383
|
-
return {
|
|
384
|
-
depth: parseInt(parts[len - 5], 16),
|
|
385
|
-
i: parseInt(parts[len - 4], 16),
|
|
386
|
-
j: parseInt(parts[len - 3], 16),
|
|
387
|
-
k: parseInt(parts[len - 2], 16),
|
|
388
|
-
multiplier: parseInt(parts[len - 1], 16),
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
idFromSpec(spec) {
|
|
392
|
-
return this.computeId(spec.depth, spec.i, spec.j, spec.k, spec.multiplier);
|
|
393
|
-
}
|
|
394
|
-
join(depth, i, j, k, mult) {
|
|
395
|
-
const sep = this._separator;
|
|
396
|
-
return depth.toString(16) + sep + i.toString(16) + sep + j.toString(16) + sep + k.toString(16) + sep + mult.toString(16);
|
|
397
|
-
}
|
|
398
|
-
/** formatVersion is the maximum major version supported by the back-end supplying the tile tree.
|
|
399
|
-
* Must ensure front-end does not request tiles of a format the back-end cannot supply, and back-end does
|
|
400
|
-
* not supply tiles of a format the front-end doesn't recognize.
|
|
401
|
-
*/
|
|
402
|
-
static create(allowInstancing, options, formatVersion) {
|
|
403
|
-
const majorVersion = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion, formatVersion);
|
|
404
|
-
(0, core_bentley_1.assert)(majorVersion > 0);
|
|
405
|
-
(0, core_bentley_1.assert)(Math.floor(majorVersion) === majorVersion);
|
|
406
|
-
switch (majorVersion) {
|
|
407
|
-
case 0:
|
|
408
|
-
case 1:
|
|
409
|
-
return new ContentIdV1Provider(majorVersion);
|
|
410
|
-
case 2:
|
|
411
|
-
case 3:
|
|
412
|
-
return new ContentIdV2Provider(majorVersion, allowInstancing, options);
|
|
413
|
-
default:
|
|
414
|
-
return new ContentIdV4Provider(allowInstancing, options, majorVersion);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
exports.ContentIdProvider = ContentIdProvider;
|
|
419
|
-
/** The original (major version 1) tile format used a content Id scheme of the format
|
|
420
|
-
* `depth/i/j/k/multiplier`.
|
|
421
|
-
* @internal
|
|
422
|
-
*/
|
|
423
|
-
class ContentIdV1Provider extends ContentIdProvider {
|
|
424
|
-
constructor(majorVersion) {
|
|
425
|
-
super(majorVersion, ContentFlags.None);
|
|
426
|
-
}
|
|
427
|
-
get _separator() { return "/"; }
|
|
428
|
-
computeId(depth, i, j, k, mult) {
|
|
429
|
-
return this.join(depth, i, j, k, mult);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
/** Tile formats 2 and 3 use a content Id scheme encoding styling flags and the major format version
|
|
433
|
-
* into the content Id, of the format `_majorVersion_flags_depth_i_j_k_multiplier`.
|
|
434
|
-
* @internal
|
|
435
|
-
*/
|
|
436
|
-
class ContentIdV2Provider extends ContentIdProvider {
|
|
437
|
-
constructor(majorVersion, allowInstancing, options) {
|
|
438
|
-
const flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
|
|
439
|
-
super(majorVersion, flags);
|
|
440
|
-
this._prefix = this._separator + majorVersion.toString(16) + this._separator + flags.toString(16) + this._separator;
|
|
441
|
-
}
|
|
442
|
-
get _separator() { return "_"; }
|
|
443
|
-
computeId(depth, i, j, k, mult) {
|
|
444
|
-
return this._prefix + this.join(depth, i, j, k, mult);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
/** Tile formats 4+ encode styling flags but not major format version. (The version is specified by the tile tree's Id).
|
|
448
|
-
* Format: `-flags-depth-i-j-k-multiplier`.
|
|
449
|
-
* @internal
|
|
450
|
-
*/
|
|
451
|
-
class ContentIdV4Provider extends ContentIdProvider {
|
|
452
|
-
constructor(allowInstancing, options, majorVersion) {
|
|
453
|
-
let flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
|
|
454
|
-
if (options.enableImprovedElision)
|
|
455
|
-
flags = flags | ContentFlags.ImprovedElision;
|
|
456
|
-
if (options.ignoreAreaPatterns)
|
|
457
|
-
flags = flags | ContentFlags.IgnoreAreaPatterns;
|
|
458
|
-
if (options.enableExternalTextures)
|
|
459
|
-
flags = flags | ContentFlags.ExternalTextures;
|
|
460
|
-
super(majorVersion, flags);
|
|
461
|
-
this._prefix = this._separator + flags.toString(16) + this._separator;
|
|
462
|
-
}
|
|
463
|
-
get _separator() { return "-"; }
|
|
464
|
-
computeId(depth, i, j, k, mult) {
|
|
465
|
-
return this._prefix + this.join(depth, i, j, k, mult);
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
/** @internal */
|
|
469
|
-
function bisectTileRange3d(range, takeUpper) {
|
|
470
|
-
const diag = range.diagonal();
|
|
471
|
-
const pt = takeUpper ? range.high : range.low;
|
|
472
|
-
if (diag.x > diag.y && diag.x > diag.z)
|
|
473
|
-
pt.x = (range.low.x + range.high.x) / 2.0;
|
|
474
|
-
else if (diag.y > diag.z)
|
|
475
|
-
pt.y = (range.low.y + range.high.y) / 2.0;
|
|
476
|
-
else
|
|
477
|
-
pt.z = (range.low.z + range.high.z) / 2.0;
|
|
478
|
-
}
|
|
479
|
-
exports.bisectTileRange3d = bisectTileRange3d;
|
|
480
|
-
/** @internal */
|
|
481
|
-
function bisectTileRange2d(range, takeUpper) {
|
|
482
|
-
const diag = range.diagonal();
|
|
483
|
-
const pt = takeUpper ? range.high : range.low;
|
|
484
|
-
if (diag.x > diag.y)
|
|
485
|
-
pt.x = (range.low.x + range.high.x) / 2.0;
|
|
486
|
-
else
|
|
487
|
-
pt.y = (range.low.y + range.high.y) / 2.0;
|
|
488
|
-
}
|
|
489
|
-
exports.bisectTileRange2d = bisectTileRange2d;
|
|
490
|
-
/** Given a description of a tile, compute the ranges which would result from sub-dividing its range into 4 or 8 sub-volumes.
|
|
491
|
-
* @internal
|
|
492
|
-
*/
|
|
493
|
-
function computeChildTileRanges(tile, root) {
|
|
494
|
-
const emptyMask = tile.emptySubRangeMask;
|
|
495
|
-
const is2d = root.is2d;
|
|
496
|
-
const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
|
|
497
|
-
const ranges = [];
|
|
498
|
-
for (let i = 0; i < 2; i++) {
|
|
499
|
-
for (let j = 0; j < 2; j++) {
|
|
500
|
-
for (let k = 0; k < (is2d ? 1 : 2); k++) {
|
|
501
|
-
const emptyBit = 1 << (i + j * 2 + k * 4);
|
|
502
|
-
const isEmpty = 0 !== (emptyMask & emptyBit);
|
|
503
|
-
const range = tile.range.clone();
|
|
504
|
-
bisectRange(range, 0 === i);
|
|
505
|
-
bisectRange(range, 0 === j);
|
|
506
|
-
if (!is2d)
|
|
507
|
-
bisectRange(range, 0 === k);
|
|
508
|
-
ranges.push({ range, isEmpty });
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
return ranges;
|
|
513
|
-
}
|
|
514
|
-
exports.computeChildTileRanges = computeChildTileRanges;
|
|
515
|
-
/** Given a description of the parent tile, obtain the properties of its child tiles, and the number of empty children.
|
|
516
|
-
* @internal
|
|
517
|
-
*/
|
|
518
|
-
function computeChildTileProps(parent, idProvider, root) {
|
|
519
|
-
let numEmpty = 0;
|
|
520
|
-
const children = [];
|
|
521
|
-
// Leaf nodes have no children
|
|
522
|
-
if (parent.isLeaf)
|
|
523
|
-
return { children, numEmpty };
|
|
524
|
-
// One child, same volume as parent, but higher-resolution.
|
|
525
|
-
if (undefined !== parent.sizeMultiplier) {
|
|
526
|
-
const sizeMultiplier = parent.sizeMultiplier * 2;
|
|
527
|
-
const contentId = idProvider.idFromParentAndMultiplier(parent.contentId, sizeMultiplier);
|
|
528
|
-
children.push({
|
|
529
|
-
contentId,
|
|
530
|
-
range: parent.range,
|
|
531
|
-
contentRange: parent.contentRange,
|
|
532
|
-
sizeMultiplier,
|
|
533
|
-
isLeaf: false,
|
|
534
|
-
maximumSize: root.tileScreenSize,
|
|
535
|
-
});
|
|
536
|
-
return { children, numEmpty };
|
|
537
|
-
}
|
|
538
|
-
// Sub-divide parent's range into 4 (for 2d trees) or 8 (for 3d trees) child tiles.
|
|
539
|
-
const parentSpec = idProvider.specFromId(parent.contentId);
|
|
540
|
-
const childSpec = { ...parentSpec };
|
|
541
|
-
childSpec.depth = parentSpec.depth + 1;
|
|
542
|
-
// This mask is a bitfield in which an 'on' bit indicates sub-volume containing no geometry.
|
|
543
|
-
// Don't bother creating children or requesting content for such empty volumes.
|
|
544
|
-
const emptyMask = parent.emptySubRangeMask;
|
|
545
|
-
// Spatial tree range == project extents; content range == model range.
|
|
546
|
-
// Trivially reject children whose ranges are entirely outside model range.
|
|
547
|
-
let treeContentRange = root.contentRange;
|
|
548
|
-
if (undefined !== treeContentRange && treeContentRange.containsRange(parent.range)) {
|
|
549
|
-
// Parent is wholly within model range - don't bother testing child ranges against it.
|
|
550
|
-
treeContentRange = undefined;
|
|
551
|
-
}
|
|
552
|
-
const is2d = root.is2d;
|
|
553
|
-
const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
|
|
554
|
-
for (let i = 0; i < 2; i++) {
|
|
555
|
-
for (let j = 0; j < 2; j++) {
|
|
556
|
-
for (let k = 0; k < (is2d ? 1 : 2); k++) {
|
|
557
|
-
const emptyBit = 1 << (i + j * 2 + k * 4);
|
|
558
|
-
if (0 !== (emptyMask & emptyBit)) {
|
|
559
|
-
// volume is known to contain no geometry.
|
|
560
|
-
++numEmpty;
|
|
561
|
-
continue;
|
|
562
|
-
}
|
|
563
|
-
const range = parent.range.clone();
|
|
564
|
-
bisectRange(range, 0 === i);
|
|
565
|
-
bisectRange(range, 0 === j);
|
|
566
|
-
if (!is2d)
|
|
567
|
-
bisectRange(range, 0 === k);
|
|
568
|
-
if (undefined !== treeContentRange && !range.intersectsRange(treeContentRange)) {
|
|
569
|
-
// volume is within project extents but entirely outside model range
|
|
570
|
-
++numEmpty;
|
|
571
|
-
continue;
|
|
572
|
-
}
|
|
573
|
-
childSpec.i = parentSpec.i * 2 + i;
|
|
574
|
-
childSpec.j = parentSpec.j * 2 + j;
|
|
575
|
-
childSpec.k = parentSpec.k * 2 + k;
|
|
576
|
-
const childId = idProvider.idFromSpec(childSpec);
|
|
577
|
-
children.push({ contentId: childId, range, maximumSize: root.tileScreenSize });
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
return { children, numEmpty };
|
|
582
|
-
}
|
|
583
|
-
exports.computeChildTileProps = computeChildTileProps;
|
|
584
|
-
/** Deserializes tile content metadata.
|
|
585
|
-
* @throws [[TileReadError]]
|
|
586
|
-
* @internal
|
|
587
|
-
*/
|
|
588
|
-
function readTileContentDescription(stream, sizeMultiplier, is2d, options, isVolumeClassifier) {
|
|
589
|
-
stream.reset();
|
|
590
|
-
const header = new IModelTileIO_1.ImdlHeader(stream);
|
|
591
|
-
if (!header.isValid)
|
|
592
|
-
throw new TileIO_1.TileReadError(TileIO_1.TileReadStatus.InvalidHeader);
|
|
593
|
-
else if (!header.isReadableVersion)
|
|
594
|
-
throw new TileIO_1.TileReadError(TileIO_1.TileReadStatus.NewerMajorVersion);
|
|
595
|
-
// Skip the feature table.
|
|
596
|
-
const featureTableStartPos = stream.curPos;
|
|
597
|
-
const ftHeader = IModelTileIO_1.FeatureTableHeader.readFrom(stream);
|
|
598
|
-
if (undefined === ftHeader)
|
|
599
|
-
throw new TileIO_1.TileReadError(TileIO_1.TileReadStatus.InvalidFeatureTable);
|
|
600
|
-
stream.curPos = featureTableStartPos + ftHeader.length;
|
|
601
|
-
// Determine subdivision based on header data.
|
|
602
|
-
const completeTile = 0 === (header.flags & IModelTileIO_1.ImdlFlags.Incomplete);
|
|
603
|
-
const emptyTile = completeTile && 0 === header.numElementsIncluded && 0 === header.numElementsExcluded;
|
|
604
|
-
let isLeaf = (emptyTile || isVolumeClassifier); // Current classifier algorithm supports only a single tile.
|
|
605
|
-
if (!isLeaf) {
|
|
606
|
-
// Non-spatial (2d) models are of arbitrary scale and contain geometry like line work and especially text which
|
|
607
|
-
// can be adversely affected by quantization issues when zooming in closely.
|
|
608
|
-
const maxLeafTolerance = 1.0;
|
|
609
|
-
// Must sub-divide if tile explicitly specifies...
|
|
610
|
-
let canSkipSubdivision = 0 === (header.flags & IModelTileIO_1.ImdlFlags.DisallowMagnification);
|
|
611
|
-
// ...or in 2d, or if app explicitly disabled magnification, or tolerance large enough to risk quantization error...
|
|
612
|
-
canSkipSubdivision = canSkipSubdivision && !is2d && !options.disableMagnification && header.tolerance <= maxLeafTolerance;
|
|
613
|
-
// ...or app specifies incomplete tiles must always be sub-divided.
|
|
614
|
-
canSkipSubdivision = canSkipSubdivision && (completeTile || !options.alwaysSubdivideIncompleteTiles);
|
|
615
|
-
if (canSkipSubdivision) {
|
|
616
|
-
const minElementsPerTile = 100;
|
|
617
|
-
if (completeTile && 0 === header.numElementsExcluded && header.numElementsIncluded <= minElementsPerTile) {
|
|
618
|
-
const containsCurves = 0 !== (header.flags & IModelTileIO_1.ImdlFlags.ContainsCurves);
|
|
619
|
-
if (!containsCurves)
|
|
620
|
-
isLeaf = true;
|
|
621
|
-
else if (undefined === sizeMultiplier)
|
|
622
|
-
sizeMultiplier = 1.0;
|
|
623
|
-
}
|
|
624
|
-
else if (undefined === sizeMultiplier && header.numElementsIncluded + header.numElementsExcluded <= minElementsPerTile) {
|
|
625
|
-
sizeMultiplier = 1.0;
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
return {
|
|
630
|
-
featureTableStartPos,
|
|
631
|
-
contentRange: header.contentRange,
|
|
632
|
-
isLeaf,
|
|
633
|
-
sizeMultiplier,
|
|
634
|
-
emptySubRangeMask: header.emptySubRanges,
|
|
635
|
-
};
|
|
636
|
-
}
|
|
637
|
-
exports.readTileContentDescription = readTileContentDescription;
|
|
638
|
-
const scratchRangeDiagonal = new core_geometry_1.Vector3d();
|
|
639
|
-
/** Compute the chord tolerance for the specified tile of the given range with the specified size multiplier.
|
|
640
|
-
* @internal
|
|
641
|
-
*/
|
|
642
|
-
function computeTileChordTolerance(tile, is3d, tileScreenSize) {
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
const
|
|
647
|
-
const
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
this.
|
|
658
|
-
this.
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
exports.TileMetadataReader = TileMetadataReader;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module Tile
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.TileMetadataReader = exports.computeTileChordTolerance = exports.readTileContentDescription = exports.computeChildTileProps = exports.computeChildTileRanges = exports.bisectTileRange2d = exports.bisectTileRange3d = exports.ContentIdProvider = exports.ContentFlags = exports.compareIModelTileTreeIds = exports.iModelTileTreeIdToString = exports.TreeFlags = exports.getMaximumMajorTileFormatVersion = exports.defaultTileOptions = exports.parseTileTreeIdAndContentId = exports.TileOptions = void 0;
|
|
11
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
+
const core_geometry_1 = require("@itwin/core-geometry");
|
|
13
|
+
const FeatureTable_1 = require("../FeatureTable");
|
|
14
|
+
const IModelTileIO_1 = require("./IModelTileIO");
|
|
15
|
+
const TileIO_1 = require("./TileIO");
|
|
16
|
+
// cspell:ignore imdl mult bitfield
|
|
17
|
+
// NB: These constants correspond to those defined in Tile.cpp.
|
|
18
|
+
var Constants;
|
|
19
|
+
(function (Constants) {
|
|
20
|
+
Constants.minToleranceRatioMultiplier = 2;
|
|
21
|
+
})(Constants || (Constants = {}));
|
|
22
|
+
/** @internal */
|
|
23
|
+
var TileOptions;
|
|
24
|
+
(function (TileOptions) {
|
|
25
|
+
/** Given the string representation of an [[IModelTileTreeId]] and the contentId of a [Tile]($frontend) belonging to that [TileTree]($frontend),
|
|
26
|
+
* compute the [[TileOptions]] that were used to generate the Ids.
|
|
27
|
+
* @throws Error if `treeId` or `contentId` are not valid Ids.
|
|
28
|
+
* @note `treeId` and `contentId` are assumed to be valid Ids. They are not fully parsed and validated - only the information required by this function is extracted.
|
|
29
|
+
* @note `treeId` and `contentId` are assumed to have been produced for version 4 or later of the iMdl tile format.
|
|
30
|
+
*/
|
|
31
|
+
function fromTreeIdAndContentId(treeId, contentId) {
|
|
32
|
+
const tree = treeFlagsAndFormatVersionFromId(treeId);
|
|
33
|
+
const contentFlags = contentFlagsFromId(contentId);
|
|
34
|
+
const edgeOptions = edgeOptionsFromTreeId(treeId);
|
|
35
|
+
return {
|
|
36
|
+
maximumMajorTileFormatVersion: tree.version,
|
|
37
|
+
enableInstancing: 0 !== (contentFlags & ContentFlags.AllowInstancing),
|
|
38
|
+
enableImprovedElision: 0 !== (contentFlags & ContentFlags.ImprovedElision),
|
|
39
|
+
ignoreAreaPatterns: 0 !== (contentFlags & ContentFlags.IgnoreAreaPatterns),
|
|
40
|
+
enableExternalTextures: 0 !== (contentFlags & ContentFlags.ExternalTextures),
|
|
41
|
+
useProjectExtents: 0 !== (tree.flags & TreeFlags.UseProjectExtents),
|
|
42
|
+
optimizeBRepProcessing: 0 !== (tree.flags & TreeFlags.OptimizeBRepProcessing),
|
|
43
|
+
useLargerTiles: 0 !== (tree.flags & TreeFlags.UseLargerTiles),
|
|
44
|
+
disableMagnification: false,
|
|
45
|
+
alwaysSubdivideIncompleteTiles: false,
|
|
46
|
+
enableIndexedEdges: edgeOptions && edgeOptions.indexed,
|
|
47
|
+
generateAllPolyfaceEdges: edgeOptions && edgeOptions.smooth,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
TileOptions.fromTreeIdAndContentId = fromTreeIdAndContentId;
|
|
51
|
+
})(TileOptions = exports.TileOptions || (exports.TileOptions = {}));
|
|
52
|
+
class Parser {
|
|
53
|
+
constructor(input) {
|
|
54
|
+
this.curPos = 0;
|
|
55
|
+
this.input = input;
|
|
56
|
+
}
|
|
57
|
+
parse(contentId) {
|
|
58
|
+
this.require(this.input.length > 0);
|
|
59
|
+
// Skip version and flags, they're handled by TileOptions.fromTreeIdAndContentId
|
|
60
|
+
while (this.curPos < this.input.length && this.cur() !== "-")
|
|
61
|
+
this.advance();
|
|
62
|
+
this.eat("-");
|
|
63
|
+
this.require(this.curPos < this.input.length);
|
|
64
|
+
const classifier = this.cur() === "C" ? this.parseClassifier() : undefined;
|
|
65
|
+
const animationId = this.parseAnimation();
|
|
66
|
+
const primary = classifier ? undefined : this.parsePrimary();
|
|
67
|
+
this.require((undefined === classifier) !== (undefined === primary));
|
|
68
|
+
const modelId = this.input.substring(this.curPos);
|
|
69
|
+
this.require(core_bentley_1.Id64.isId64(modelId));
|
|
70
|
+
const { flags: treeFlags } = treeFlagsAndFormatVersionFromId(this.input);
|
|
71
|
+
const options = TileOptions.fromTreeIdAndContentId(this.input, contentId);
|
|
72
|
+
let parsedContentId;
|
|
73
|
+
try {
|
|
74
|
+
parsedContentId = ContentIdProvider.create(true, options).specFromId(contentId);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
this.reject("Invalid content Id");
|
|
78
|
+
}
|
|
79
|
+
if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
|
|
80
|
+
throw new Error("Invalid content Id");
|
|
81
|
+
let treeId;
|
|
82
|
+
if (classifier) {
|
|
83
|
+
treeId = { ...classifier, animationId };
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
(0, core_bentley_1.assert)(undefined !== primary);
|
|
87
|
+
const enforceDisplayPriority = (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined;
|
|
88
|
+
treeId = { ...primary, animationId, type: FeatureTable_1.BatchType.Primary, enforceDisplayPriority };
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
contentId: parsedContentId,
|
|
92
|
+
modelId,
|
|
93
|
+
options,
|
|
94
|
+
treeId,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
cur() {
|
|
98
|
+
this.require(this.curPos < this.input.length);
|
|
99
|
+
return this.input[this.curPos];
|
|
100
|
+
}
|
|
101
|
+
advance() {
|
|
102
|
+
this.require(this.curPos < this.input.length);
|
|
103
|
+
++this.curPos;
|
|
104
|
+
}
|
|
105
|
+
eat(expectedChar) {
|
|
106
|
+
this.require(this.cur() === expectedChar);
|
|
107
|
+
this.advance();
|
|
108
|
+
}
|
|
109
|
+
reject(message = "Invalid tree Id") {
|
|
110
|
+
throw new Error(message);
|
|
111
|
+
}
|
|
112
|
+
require(condition, message = "Invalid tree Id") {
|
|
113
|
+
if (!condition)
|
|
114
|
+
this.reject(message);
|
|
115
|
+
}
|
|
116
|
+
parseClassifier() {
|
|
117
|
+
this.eat("C");
|
|
118
|
+
let type = FeatureTable_1.BatchType.VolumeClassifier;
|
|
119
|
+
if (this.cur() === "P") {
|
|
120
|
+
type = FeatureTable_1.BatchType.PlanarClassifier;
|
|
121
|
+
this.advance();
|
|
122
|
+
}
|
|
123
|
+
this.eat(":");
|
|
124
|
+
// C: or CP: is always folowed by expansion then an underscore.
|
|
125
|
+
let expansionStr = "";
|
|
126
|
+
while (this.curPos < this.input.length && (this.cur() >= "0" && this.cur() <= "9" || this.cur() === ".")) {
|
|
127
|
+
expansionStr += this.cur();
|
|
128
|
+
this.advance();
|
|
129
|
+
}
|
|
130
|
+
this.eat("_");
|
|
131
|
+
const expansion = Number.parseFloat(expansionStr);
|
|
132
|
+
this.require(!Number.isNaN(expansion));
|
|
133
|
+
return { type, expansion };
|
|
134
|
+
}
|
|
135
|
+
parseAnimation() {
|
|
136
|
+
if (this.cur() !== "A")
|
|
137
|
+
return undefined;
|
|
138
|
+
this.eat("A");
|
|
139
|
+
this.eat(":");
|
|
140
|
+
const termPos = this.input.indexOf("_", this.curPos);
|
|
141
|
+
this.require(termPos > this.curPos);
|
|
142
|
+
const animationId = this.input.substring(this.curPos, termPos);
|
|
143
|
+
this.require(core_bentley_1.Id64.isId64(animationId));
|
|
144
|
+
this.curPos = termPos + 1; // Skip "_"
|
|
145
|
+
return animationId;
|
|
146
|
+
}
|
|
147
|
+
parsePrimary() {
|
|
148
|
+
const edges = this.parseEdges();
|
|
149
|
+
const sectionCut = this.parseSectionCut();
|
|
150
|
+
return { edges, sectionCut };
|
|
151
|
+
}
|
|
152
|
+
parseEdges() {
|
|
153
|
+
if ("E" !== this.cur())
|
|
154
|
+
return { indexed: false, smooth: false };
|
|
155
|
+
this.eat("E");
|
|
156
|
+
this.eat(":");
|
|
157
|
+
const typeStr = this.cur();
|
|
158
|
+
this.eat(typeStr);
|
|
159
|
+
this.eat("_");
|
|
160
|
+
switch (typeStr) {
|
|
161
|
+
case "0": return false;
|
|
162
|
+
case "2": return { indexed: true, smooth: false };
|
|
163
|
+
case "3": return { indexed: false, smooth: true };
|
|
164
|
+
case "4": return { indexed: true, smooth: true };
|
|
165
|
+
default: this.reject();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
parseSectionCut() {
|
|
169
|
+
if ("S" !== this.cur())
|
|
170
|
+
return undefined;
|
|
171
|
+
this.eat("S");
|
|
172
|
+
const termPos = this.input.indexOf("s", this.curPos);
|
|
173
|
+
this.require(termPos > this.curPos);
|
|
174
|
+
const sectionCut = this.input.substring(this.curPos, termPos);
|
|
175
|
+
this.curPos = termPos + 1; // Skip "_";
|
|
176
|
+
return sectionCut;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** @internal */
|
|
180
|
+
function parseTileTreeIdAndContentId(treeId, contentId) {
|
|
181
|
+
const parser = new Parser(treeId);
|
|
182
|
+
return parser.parse(contentId);
|
|
183
|
+
}
|
|
184
|
+
exports.parseTileTreeIdAndContentId = parseTileTreeIdAndContentId;
|
|
185
|
+
/** @internal */
|
|
186
|
+
exports.defaultTileOptions = Object.freeze({
|
|
187
|
+
maximumMajorTileFormatVersion: IModelTileIO_1.CurrentImdlVersion.Major,
|
|
188
|
+
enableInstancing: true,
|
|
189
|
+
enableImprovedElision: true,
|
|
190
|
+
ignoreAreaPatterns: false,
|
|
191
|
+
enableExternalTextures: true,
|
|
192
|
+
useProjectExtents: true,
|
|
193
|
+
optimizeBRepProcessing: true,
|
|
194
|
+
useLargerTiles: true,
|
|
195
|
+
disableMagnification: false,
|
|
196
|
+
alwaysSubdivideIncompleteTiles: false,
|
|
197
|
+
enableIndexedEdges: true,
|
|
198
|
+
generateAllPolyfaceEdges: true,
|
|
199
|
+
});
|
|
200
|
+
function contentFlagsFromId(id) {
|
|
201
|
+
if (0 === id.length || "-" !== id[0])
|
|
202
|
+
throw new Error("Invalid content Id");
|
|
203
|
+
// V4: -flags-d-i-j-k-m - version in tree Id
|
|
204
|
+
const end = id.indexOf("-", 1);
|
|
205
|
+
if (-1 !== end) {
|
|
206
|
+
const flags = Number.parseInt(id.substring(1, end), 16);
|
|
207
|
+
if (!Number.isNaN(flags))
|
|
208
|
+
return flags;
|
|
209
|
+
}
|
|
210
|
+
throw new Error("Invalid content Id");
|
|
211
|
+
}
|
|
212
|
+
function treeFlagsAndFormatVersionFromId(id) {
|
|
213
|
+
if (0 === id.length)
|
|
214
|
+
throw new Error("Invalid tree Id");
|
|
215
|
+
let parts = id.split("-");
|
|
216
|
+
if (parts.length > 0) {
|
|
217
|
+
parts = parts[0].split("_");
|
|
218
|
+
if (parts.length === 2) {
|
|
219
|
+
const version = Number.parseInt(parts[0], 16);
|
|
220
|
+
const flags = Number.parseInt(parts[1], 16);
|
|
221
|
+
if (!Number.isNaN(version) || !Number.isNaN(flags))
|
|
222
|
+
return { version, flags };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
throw new Error("Invalid tree Id");
|
|
226
|
+
}
|
|
227
|
+
function edgeOptionsFromTreeId(id) {
|
|
228
|
+
const pos = id.indexOf("E:");
|
|
229
|
+
if (pos <= 0)
|
|
230
|
+
return { indexed: false, smooth: false };
|
|
231
|
+
switch (id[pos + 2]) {
|
|
232
|
+
case "0": return { indexed: exports.defaultTileOptions.enableIndexedEdges, smooth: exports.defaultTileOptions.generateAllPolyfaceEdges };
|
|
233
|
+
case "2": return { indexed: true, smooth: false };
|
|
234
|
+
case "3": return { indexed: false, smooth: true };
|
|
235
|
+
case "4": return { indexed: true, smooth: true };
|
|
236
|
+
}
|
|
237
|
+
throw new Error("Invalid tree Id");
|
|
238
|
+
}
|
|
239
|
+
/** @internal */
|
|
240
|
+
function getMaximumMajorTileFormatVersion(maxMajorVersion, formatVersion) {
|
|
241
|
+
// The `formatVersion` input is from the backend, telling us precisely the maximum major+minor version it can produce.
|
|
242
|
+
// Ensure we do not request tiles of a newer major version than backend can supply or it can read; and also limit major version
|
|
243
|
+
// to that optionally configured by the app.
|
|
244
|
+
let majorVersion = maxMajorVersion;
|
|
245
|
+
if (undefined !== formatVersion)
|
|
246
|
+
majorVersion = Math.min((formatVersion >>> 0x10), majorVersion);
|
|
247
|
+
// Version number less than 1 is invalid - ignore
|
|
248
|
+
majorVersion = Math.max(majorVersion, 1);
|
|
249
|
+
// Version number greater than current known version ignored
|
|
250
|
+
majorVersion = Math.min(majorVersion, IModelTileIO_1.CurrentImdlVersion.Major);
|
|
251
|
+
// Version numbers are integers - round down
|
|
252
|
+
return Math.max(Math.floor(majorVersion), 1);
|
|
253
|
+
}
|
|
254
|
+
exports.getMaximumMajorTileFormatVersion = getMaximumMajorTileFormatVersion;
|
|
255
|
+
/** Flags controlling the structure of a tile tree. The flags are part of the tile tree's Id.
|
|
256
|
+
* @alpha
|
|
257
|
+
*/
|
|
258
|
+
var TreeFlags;
|
|
259
|
+
(function (TreeFlags) {
|
|
260
|
+
TreeFlags[TreeFlags["None"] = 0] = "None";
|
|
261
|
+
TreeFlags[TreeFlags["UseProjectExtents"] = 1] = "UseProjectExtents";
|
|
262
|
+
TreeFlags[TreeFlags["EnforceDisplayPriority"] = 2] = "EnforceDisplayPriority";
|
|
263
|
+
TreeFlags[TreeFlags["OptimizeBRepProcessing"] = 4] = "OptimizeBRepProcessing";
|
|
264
|
+
TreeFlags[TreeFlags["UseLargerTiles"] = 8] = "UseLargerTiles";
|
|
265
|
+
})(TreeFlags = exports.TreeFlags || (exports.TreeFlags = {}));
|
|
266
|
+
function compareEdgeOptions(a, b) {
|
|
267
|
+
if (typeof a !== typeof b)
|
|
268
|
+
return a ? 1 : -1;
|
|
269
|
+
if (typeof a === "boolean") {
|
|
270
|
+
(0, core_bentley_1.assert)(typeof b === "boolean");
|
|
271
|
+
return (0, core_bentley_1.compareBooleans)(a, b);
|
|
272
|
+
}
|
|
273
|
+
(0, core_bentley_1.assert)(typeof b === "object");
|
|
274
|
+
let cmp = (0, core_bentley_1.compareBooleans)(a.indexed, b.indexed);
|
|
275
|
+
if (0 === cmp)
|
|
276
|
+
cmp = (0, core_bentley_1.compareBooleans)(a.smooth, b.smooth);
|
|
277
|
+
return cmp;
|
|
278
|
+
}
|
|
279
|
+
function animationIdToString(animationId) {
|
|
280
|
+
return `A:${animationId}_`;
|
|
281
|
+
}
|
|
282
|
+
/** Convert a tile tree Id to its string representation.
|
|
283
|
+
* @internal
|
|
284
|
+
*/
|
|
285
|
+
function iModelTileTreeIdToString(modelId, treeId, options) {
|
|
286
|
+
let idStr = "";
|
|
287
|
+
let flags = options.useProjectExtents ? TreeFlags.UseProjectExtents : TreeFlags.None;
|
|
288
|
+
if (options.optimizeBRepProcessing)
|
|
289
|
+
flags |= TreeFlags.OptimizeBRepProcessing;
|
|
290
|
+
if (options.useLargerTiles)
|
|
291
|
+
flags |= TreeFlags.UseLargerTiles;
|
|
292
|
+
if (FeatureTable_1.BatchType.Primary === treeId.type) {
|
|
293
|
+
if (undefined !== treeId.animationId)
|
|
294
|
+
idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
|
|
295
|
+
else if (treeId.enforceDisplayPriority) // animation and priority are currently mutually exclusive
|
|
296
|
+
flags |= TreeFlags.EnforceDisplayPriority;
|
|
297
|
+
let edges;
|
|
298
|
+
if (!treeId.edges) {
|
|
299
|
+
edges = "E:0_";
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
if (!treeId.edges.smooth)
|
|
303
|
+
edges = treeId.edges.indexed ? "E:2_" : "";
|
|
304
|
+
else
|
|
305
|
+
edges = treeId.edges.indexed ? "E:4_" : "E:3_";
|
|
306
|
+
}
|
|
307
|
+
const sectionCut = treeId.sectionCut ? `S${treeId.sectionCut}s` : "";
|
|
308
|
+
idStr = `${idStr}${edges}${sectionCut}`;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
const typeStr = FeatureTable_1.BatchType.PlanarClassifier === treeId.type ? "CP" : "C";
|
|
312
|
+
idStr = `${idStr + typeStr}:${treeId.expansion.toFixed(6)}_`;
|
|
313
|
+
if (FeatureTable_1.BatchType.VolumeClassifier === treeId.type)
|
|
314
|
+
flags |= TreeFlags.UseProjectExtents;
|
|
315
|
+
if (undefined !== treeId.animationId)
|
|
316
|
+
idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
|
|
317
|
+
}
|
|
318
|
+
const version = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion);
|
|
319
|
+
if (version >= 4) {
|
|
320
|
+
const prefix = `${version.toString(16)}_${flags.toString(16)}-`;
|
|
321
|
+
idStr = prefix + idStr;
|
|
322
|
+
}
|
|
323
|
+
return idStr + modelId;
|
|
324
|
+
}
|
|
325
|
+
exports.iModelTileTreeIdToString = iModelTileTreeIdToString;
|
|
326
|
+
/** Ordinal comparison of two tile tree Ids, e.g., for use in sorted containers.
|
|
327
|
+
* @internal
|
|
328
|
+
*/
|
|
329
|
+
function compareIModelTileTreeIds(lhs, rhs) {
|
|
330
|
+
let cmp = (0, core_bentley_1.compareNumbers)(lhs.type, rhs.type);
|
|
331
|
+
if (0 === cmp)
|
|
332
|
+
cmp = (0, core_bentley_1.compareStringsOrUndefined)(lhs.animationId, rhs.animationId);
|
|
333
|
+
if (0 !== cmp)
|
|
334
|
+
return cmp;
|
|
335
|
+
// NB: The redundant checks on BatchType below are to satisfy compiler.
|
|
336
|
+
(0, core_bentley_1.assert)(lhs.type === rhs.type);
|
|
337
|
+
if (FeatureTable_1.BatchType.Primary === lhs.type && FeatureTable_1.BatchType.Primary === rhs.type) {
|
|
338
|
+
cmp = compareEdgeOptions(lhs.edges, rhs.edges);
|
|
339
|
+
if (0 === cmp) {
|
|
340
|
+
cmp = (0, core_bentley_1.compareBooleansOrUndefined)(lhs.enforceDisplayPriority, rhs.enforceDisplayPriority);
|
|
341
|
+
if (0 === cmp)
|
|
342
|
+
cmp = (0, core_bentley_1.compareStringsOrUndefined)(lhs.sectionCut, rhs.sectionCut);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else if (FeatureTable_1.BatchType.Primary !== lhs.type && FeatureTable_1.BatchType.Primary !== rhs.type) {
|
|
346
|
+
cmp = (0, core_bentley_1.compareNumbers)(lhs.expansion, rhs.expansion);
|
|
347
|
+
}
|
|
348
|
+
return cmp;
|
|
349
|
+
}
|
|
350
|
+
exports.compareIModelTileTreeIds = compareIModelTileTreeIds;
|
|
351
|
+
/** Flags controlling how tile content is produced. The flags are part of the ContentId.
|
|
352
|
+
* @alpha
|
|
353
|
+
*/
|
|
354
|
+
var ContentFlags;
|
|
355
|
+
(function (ContentFlags) {
|
|
356
|
+
ContentFlags[ContentFlags["None"] = 0] = "None";
|
|
357
|
+
ContentFlags[ContentFlags["AllowInstancing"] = 1] = "AllowInstancing";
|
|
358
|
+
ContentFlags[ContentFlags["ImprovedElision"] = 2] = "ImprovedElision";
|
|
359
|
+
ContentFlags[ContentFlags["IgnoreAreaPatterns"] = 4] = "IgnoreAreaPatterns";
|
|
360
|
+
ContentFlags[ContentFlags["ExternalTextures"] = 8] = "ExternalTextures";
|
|
361
|
+
})(ContentFlags = exports.ContentFlags || (exports.ContentFlags = {}));
|
|
362
|
+
/** Contains logic for working with tile content Ids according to a specific content Id scheme. Which scheme is used depends on
|
|
363
|
+
* the major version of the tile format.
|
|
364
|
+
* @internal
|
|
365
|
+
*/
|
|
366
|
+
class ContentIdProvider {
|
|
367
|
+
constructor(formatVersion, contentFlags) {
|
|
368
|
+
this.majorFormatVersion = formatVersion;
|
|
369
|
+
this.contentFlags = contentFlags;
|
|
370
|
+
}
|
|
371
|
+
get rootContentId() {
|
|
372
|
+
return this.computeId(0, 0, 0, 0, 1);
|
|
373
|
+
}
|
|
374
|
+
idFromParentAndMultiplier(parentId, multiplier) {
|
|
375
|
+
const lastSepPos = parentId.lastIndexOf(this._separator);
|
|
376
|
+
(0, core_bentley_1.assert)(-1 !== lastSepPos);
|
|
377
|
+
return parentId.substring(0, lastSepPos + 1) + multiplier.toString(16);
|
|
378
|
+
}
|
|
379
|
+
specFromId(id) {
|
|
380
|
+
const parts = id.split(this._separator);
|
|
381
|
+
const len = parts.length;
|
|
382
|
+
(0, core_bentley_1.assert)(len >= 5);
|
|
383
|
+
return {
|
|
384
|
+
depth: parseInt(parts[len - 5], 16),
|
|
385
|
+
i: parseInt(parts[len - 4], 16),
|
|
386
|
+
j: parseInt(parts[len - 3], 16),
|
|
387
|
+
k: parseInt(parts[len - 2], 16),
|
|
388
|
+
multiplier: parseInt(parts[len - 1], 16),
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
idFromSpec(spec) {
|
|
392
|
+
return this.computeId(spec.depth, spec.i, spec.j, spec.k, spec.multiplier);
|
|
393
|
+
}
|
|
394
|
+
join(depth, i, j, k, mult) {
|
|
395
|
+
const sep = this._separator;
|
|
396
|
+
return depth.toString(16) + sep + i.toString(16) + sep + j.toString(16) + sep + k.toString(16) + sep + mult.toString(16);
|
|
397
|
+
}
|
|
398
|
+
/** formatVersion is the maximum major version supported by the back-end supplying the tile tree.
|
|
399
|
+
* Must ensure front-end does not request tiles of a format the back-end cannot supply, and back-end does
|
|
400
|
+
* not supply tiles of a format the front-end doesn't recognize.
|
|
401
|
+
*/
|
|
402
|
+
static create(allowInstancing, options, formatVersion) {
|
|
403
|
+
const majorVersion = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion, formatVersion);
|
|
404
|
+
(0, core_bentley_1.assert)(majorVersion > 0);
|
|
405
|
+
(0, core_bentley_1.assert)(Math.floor(majorVersion) === majorVersion);
|
|
406
|
+
switch (majorVersion) {
|
|
407
|
+
case 0:
|
|
408
|
+
case 1:
|
|
409
|
+
return new ContentIdV1Provider(majorVersion);
|
|
410
|
+
case 2:
|
|
411
|
+
case 3:
|
|
412
|
+
return new ContentIdV2Provider(majorVersion, allowInstancing, options);
|
|
413
|
+
default:
|
|
414
|
+
return new ContentIdV4Provider(allowInstancing, options, majorVersion);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
exports.ContentIdProvider = ContentIdProvider;
|
|
419
|
+
/** The original (major version 1) tile format used a content Id scheme of the format
|
|
420
|
+
* `depth/i/j/k/multiplier`.
|
|
421
|
+
* @internal
|
|
422
|
+
*/
|
|
423
|
+
class ContentIdV1Provider extends ContentIdProvider {
|
|
424
|
+
constructor(majorVersion) {
|
|
425
|
+
super(majorVersion, ContentFlags.None);
|
|
426
|
+
}
|
|
427
|
+
get _separator() { return "/"; }
|
|
428
|
+
computeId(depth, i, j, k, mult) {
|
|
429
|
+
return this.join(depth, i, j, k, mult);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
/** Tile formats 2 and 3 use a content Id scheme encoding styling flags and the major format version
|
|
433
|
+
* into the content Id, of the format `_majorVersion_flags_depth_i_j_k_multiplier`.
|
|
434
|
+
* @internal
|
|
435
|
+
*/
|
|
436
|
+
class ContentIdV2Provider extends ContentIdProvider {
|
|
437
|
+
constructor(majorVersion, allowInstancing, options) {
|
|
438
|
+
const flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
|
|
439
|
+
super(majorVersion, flags);
|
|
440
|
+
this._prefix = this._separator + majorVersion.toString(16) + this._separator + flags.toString(16) + this._separator;
|
|
441
|
+
}
|
|
442
|
+
get _separator() { return "_"; }
|
|
443
|
+
computeId(depth, i, j, k, mult) {
|
|
444
|
+
return this._prefix + this.join(depth, i, j, k, mult);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
/** Tile formats 4+ encode styling flags but not major format version. (The version is specified by the tile tree's Id).
|
|
448
|
+
* Format: `-flags-depth-i-j-k-multiplier`.
|
|
449
|
+
* @internal
|
|
450
|
+
*/
|
|
451
|
+
class ContentIdV4Provider extends ContentIdProvider {
|
|
452
|
+
constructor(allowInstancing, options, majorVersion) {
|
|
453
|
+
let flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
|
|
454
|
+
if (options.enableImprovedElision)
|
|
455
|
+
flags = flags | ContentFlags.ImprovedElision;
|
|
456
|
+
if (options.ignoreAreaPatterns)
|
|
457
|
+
flags = flags | ContentFlags.IgnoreAreaPatterns;
|
|
458
|
+
if (options.enableExternalTextures)
|
|
459
|
+
flags = flags | ContentFlags.ExternalTextures;
|
|
460
|
+
super(majorVersion, flags);
|
|
461
|
+
this._prefix = this._separator + flags.toString(16) + this._separator;
|
|
462
|
+
}
|
|
463
|
+
get _separator() { return "-"; }
|
|
464
|
+
computeId(depth, i, j, k, mult) {
|
|
465
|
+
return this._prefix + this.join(depth, i, j, k, mult);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
/** @internal */
|
|
469
|
+
function bisectTileRange3d(range, takeUpper) {
|
|
470
|
+
const diag = range.diagonal();
|
|
471
|
+
const pt = takeUpper ? range.high : range.low;
|
|
472
|
+
if (diag.x > diag.y && diag.x > diag.z)
|
|
473
|
+
pt.x = (range.low.x + range.high.x) / 2.0;
|
|
474
|
+
else if (diag.y > diag.z)
|
|
475
|
+
pt.y = (range.low.y + range.high.y) / 2.0;
|
|
476
|
+
else
|
|
477
|
+
pt.z = (range.low.z + range.high.z) / 2.0;
|
|
478
|
+
}
|
|
479
|
+
exports.bisectTileRange3d = bisectTileRange3d;
|
|
480
|
+
/** @internal */
|
|
481
|
+
function bisectTileRange2d(range, takeUpper) {
|
|
482
|
+
const diag = range.diagonal();
|
|
483
|
+
const pt = takeUpper ? range.high : range.low;
|
|
484
|
+
if (diag.x > diag.y)
|
|
485
|
+
pt.x = (range.low.x + range.high.x) / 2.0;
|
|
486
|
+
else
|
|
487
|
+
pt.y = (range.low.y + range.high.y) / 2.0;
|
|
488
|
+
}
|
|
489
|
+
exports.bisectTileRange2d = bisectTileRange2d;
|
|
490
|
+
/** Given a description of a tile, compute the ranges which would result from sub-dividing its range into 4 or 8 sub-volumes.
|
|
491
|
+
* @internal
|
|
492
|
+
*/
|
|
493
|
+
function computeChildTileRanges(tile, root) {
|
|
494
|
+
const emptyMask = tile.emptySubRangeMask;
|
|
495
|
+
const is2d = root.is2d;
|
|
496
|
+
const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
|
|
497
|
+
const ranges = [];
|
|
498
|
+
for (let i = 0; i < 2; i++) {
|
|
499
|
+
for (let j = 0; j < 2; j++) {
|
|
500
|
+
for (let k = 0; k < (is2d ? 1 : 2); k++) {
|
|
501
|
+
const emptyBit = 1 << (i + j * 2 + k * 4);
|
|
502
|
+
const isEmpty = 0 !== (emptyMask & emptyBit);
|
|
503
|
+
const range = tile.range.clone();
|
|
504
|
+
bisectRange(range, 0 === i);
|
|
505
|
+
bisectRange(range, 0 === j);
|
|
506
|
+
if (!is2d)
|
|
507
|
+
bisectRange(range, 0 === k);
|
|
508
|
+
ranges.push({ range, isEmpty });
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
return ranges;
|
|
513
|
+
}
|
|
514
|
+
exports.computeChildTileRanges = computeChildTileRanges;
|
|
515
|
+
/** Given a description of the parent tile, obtain the properties of its child tiles, and the number of empty children.
|
|
516
|
+
* @internal
|
|
517
|
+
*/
|
|
518
|
+
function computeChildTileProps(parent, idProvider, root) {
|
|
519
|
+
let numEmpty = 0;
|
|
520
|
+
const children = [];
|
|
521
|
+
// Leaf nodes have no children
|
|
522
|
+
if (parent.isLeaf)
|
|
523
|
+
return { children, numEmpty };
|
|
524
|
+
// One child, same volume as parent, but higher-resolution.
|
|
525
|
+
if (undefined !== parent.sizeMultiplier) {
|
|
526
|
+
const sizeMultiplier = parent.sizeMultiplier * 2;
|
|
527
|
+
const contentId = idProvider.idFromParentAndMultiplier(parent.contentId, sizeMultiplier);
|
|
528
|
+
children.push({
|
|
529
|
+
contentId,
|
|
530
|
+
range: parent.range,
|
|
531
|
+
contentRange: parent.contentRange,
|
|
532
|
+
sizeMultiplier,
|
|
533
|
+
isLeaf: false,
|
|
534
|
+
maximumSize: root.tileScreenSize,
|
|
535
|
+
});
|
|
536
|
+
return { children, numEmpty };
|
|
537
|
+
}
|
|
538
|
+
// Sub-divide parent's range into 4 (for 2d trees) or 8 (for 3d trees) child tiles.
|
|
539
|
+
const parentSpec = idProvider.specFromId(parent.contentId);
|
|
540
|
+
const childSpec = { ...parentSpec };
|
|
541
|
+
childSpec.depth = parentSpec.depth + 1;
|
|
542
|
+
// This mask is a bitfield in which an 'on' bit indicates sub-volume containing no geometry.
|
|
543
|
+
// Don't bother creating children or requesting content for such empty volumes.
|
|
544
|
+
const emptyMask = parent.emptySubRangeMask;
|
|
545
|
+
// Spatial tree range == project extents; content range == model range.
|
|
546
|
+
// Trivially reject children whose ranges are entirely outside model range.
|
|
547
|
+
let treeContentRange = root.contentRange;
|
|
548
|
+
if (undefined !== treeContentRange && treeContentRange.containsRange(parent.range)) {
|
|
549
|
+
// Parent is wholly within model range - don't bother testing child ranges against it.
|
|
550
|
+
treeContentRange = undefined;
|
|
551
|
+
}
|
|
552
|
+
const is2d = root.is2d;
|
|
553
|
+
const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
|
|
554
|
+
for (let i = 0; i < 2; i++) {
|
|
555
|
+
for (let j = 0; j < 2; j++) {
|
|
556
|
+
for (let k = 0; k < (is2d ? 1 : 2); k++) {
|
|
557
|
+
const emptyBit = 1 << (i + j * 2 + k * 4);
|
|
558
|
+
if (0 !== (emptyMask & emptyBit)) {
|
|
559
|
+
// volume is known to contain no geometry.
|
|
560
|
+
++numEmpty;
|
|
561
|
+
continue;
|
|
562
|
+
}
|
|
563
|
+
const range = parent.range.clone();
|
|
564
|
+
bisectRange(range, 0 === i);
|
|
565
|
+
bisectRange(range, 0 === j);
|
|
566
|
+
if (!is2d)
|
|
567
|
+
bisectRange(range, 0 === k);
|
|
568
|
+
if (undefined !== treeContentRange && !range.intersectsRange(treeContentRange)) {
|
|
569
|
+
// volume is within project extents but entirely outside model range
|
|
570
|
+
++numEmpty;
|
|
571
|
+
continue;
|
|
572
|
+
}
|
|
573
|
+
childSpec.i = parentSpec.i * 2 + i;
|
|
574
|
+
childSpec.j = parentSpec.j * 2 + j;
|
|
575
|
+
childSpec.k = parentSpec.k * 2 + k;
|
|
576
|
+
const childId = idProvider.idFromSpec(childSpec);
|
|
577
|
+
children.push({ contentId: childId, range, maximumSize: root.tileScreenSize });
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
return { children, numEmpty };
|
|
582
|
+
}
|
|
583
|
+
exports.computeChildTileProps = computeChildTileProps;
|
|
584
|
+
/** Deserializes tile content metadata.
|
|
585
|
+
* @throws [[TileReadError]]
|
|
586
|
+
* @internal
|
|
587
|
+
*/
|
|
588
|
+
function readTileContentDescription(stream, sizeMultiplier, is2d, options, isVolumeClassifier) {
|
|
589
|
+
stream.reset();
|
|
590
|
+
const header = new IModelTileIO_1.ImdlHeader(stream);
|
|
591
|
+
if (!header.isValid)
|
|
592
|
+
throw new TileIO_1.TileReadError(TileIO_1.TileReadStatus.InvalidHeader);
|
|
593
|
+
else if (!header.isReadableVersion)
|
|
594
|
+
throw new TileIO_1.TileReadError(TileIO_1.TileReadStatus.NewerMajorVersion);
|
|
595
|
+
// Skip the feature table.
|
|
596
|
+
const featureTableStartPos = stream.curPos;
|
|
597
|
+
const ftHeader = IModelTileIO_1.FeatureTableHeader.readFrom(stream);
|
|
598
|
+
if (undefined === ftHeader)
|
|
599
|
+
throw new TileIO_1.TileReadError(TileIO_1.TileReadStatus.InvalidFeatureTable);
|
|
600
|
+
stream.curPos = featureTableStartPos + ftHeader.length;
|
|
601
|
+
// Determine subdivision based on header data.
|
|
602
|
+
const completeTile = 0 === (header.flags & IModelTileIO_1.ImdlFlags.Incomplete);
|
|
603
|
+
const emptyTile = completeTile && 0 === header.numElementsIncluded && 0 === header.numElementsExcluded;
|
|
604
|
+
let isLeaf = (emptyTile || isVolumeClassifier); // Current classifier algorithm supports only a single tile.
|
|
605
|
+
if (!isLeaf) {
|
|
606
|
+
// Non-spatial (2d) models are of arbitrary scale and contain geometry like line work and especially text which
|
|
607
|
+
// can be adversely affected by quantization issues when zooming in closely.
|
|
608
|
+
const maxLeafTolerance = 1.0;
|
|
609
|
+
// Must sub-divide if tile explicitly specifies...
|
|
610
|
+
let canSkipSubdivision = 0 === (header.flags & IModelTileIO_1.ImdlFlags.DisallowMagnification);
|
|
611
|
+
// ...or in 2d, or if app explicitly disabled magnification, or tolerance large enough to risk quantization error...
|
|
612
|
+
canSkipSubdivision = canSkipSubdivision && !is2d && !options.disableMagnification && header.tolerance <= maxLeafTolerance;
|
|
613
|
+
// ...or app specifies incomplete tiles must always be sub-divided.
|
|
614
|
+
canSkipSubdivision = canSkipSubdivision && (completeTile || !options.alwaysSubdivideIncompleteTiles);
|
|
615
|
+
if (canSkipSubdivision) {
|
|
616
|
+
const minElementsPerTile = 100;
|
|
617
|
+
if (completeTile && 0 === header.numElementsExcluded && header.numElementsIncluded <= minElementsPerTile) {
|
|
618
|
+
const containsCurves = 0 !== (header.flags & IModelTileIO_1.ImdlFlags.ContainsCurves);
|
|
619
|
+
if (!containsCurves)
|
|
620
|
+
isLeaf = true;
|
|
621
|
+
else if (undefined === sizeMultiplier)
|
|
622
|
+
sizeMultiplier = 1.0;
|
|
623
|
+
}
|
|
624
|
+
else if (undefined === sizeMultiplier && header.numElementsIncluded + header.numElementsExcluded <= minElementsPerTile) {
|
|
625
|
+
sizeMultiplier = 1.0;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
return {
|
|
630
|
+
featureTableStartPos,
|
|
631
|
+
contentRange: header.contentRange,
|
|
632
|
+
isLeaf,
|
|
633
|
+
sizeMultiplier,
|
|
634
|
+
emptySubRangeMask: header.emptySubRanges,
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
exports.readTileContentDescription = readTileContentDescription;
|
|
638
|
+
const scratchRangeDiagonal = new core_geometry_1.Vector3d();
|
|
639
|
+
/** Compute the chord tolerance for the specified tile of the given range with the specified size multiplier.
|
|
640
|
+
* @internal
|
|
641
|
+
*/
|
|
642
|
+
function computeTileChordTolerance(tile, is3d, tileScreenSize) {
|
|
643
|
+
if (tile.range.isNull)
|
|
644
|
+
return 0;
|
|
645
|
+
const diagonal = tile.range.diagonal(scratchRangeDiagonal);
|
|
646
|
+
const diagDist = is3d ? diagonal.magnitude() : diagonal.magnitudeXY();
|
|
647
|
+
const mult = Math.max(tile.sizeMultiplier ?? 1, 1);
|
|
648
|
+
return diagDist / (tileScreenSize * Constants.minToleranceRatioMultiplier * Math.max(1, mult));
|
|
649
|
+
}
|
|
650
|
+
exports.computeTileChordTolerance = computeTileChordTolerance;
|
|
651
|
+
/** Deserializes tile metadata.
|
|
652
|
+
* @internal
|
|
653
|
+
*/
|
|
654
|
+
class TileMetadataReader {
|
|
655
|
+
constructor(type, is2d, options) {
|
|
656
|
+
this._is2d = is2d;
|
|
657
|
+
this._isVolumeClassifier = FeatureTable_1.BatchType.VolumeClassifier === type;
|
|
658
|
+
this._options = options;
|
|
659
|
+
}
|
|
660
|
+
/** Produce metadata from the specified tile content.
|
|
661
|
+
* @throws [[TileReadError]]
|
|
662
|
+
*/
|
|
663
|
+
read(stream, props) {
|
|
664
|
+
const content = readTileContentDescription(stream, props.sizeMultiplier, this._is2d, this._options, this._isVolumeClassifier);
|
|
665
|
+
return {
|
|
666
|
+
contentRange: content.contentRange,
|
|
667
|
+
isLeaf: content.isLeaf,
|
|
668
|
+
sizeMultiplier: content.sizeMultiplier,
|
|
669
|
+
emptySubRangeMask: content.emptySubRangeMask,
|
|
670
|
+
range: core_geometry_1.Range3d.fromJSON(props.range),
|
|
671
|
+
contentId: props.contentId,
|
|
672
|
+
};
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
exports.TileMetadataReader = TileMetadataReader;
|
|
677
676
|
//# sourceMappingURL=TileMetadata.js.map
|