@itwin/core-frontend 5.1.2 → 5.1.3-experimental.1

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.
Files changed (982) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/AccuDraw.js.map +1 -1
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  6. package/lib/cjs/AuxCoordSys.js.map +1 -1
  7. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  8. package/lib/cjs/BingLocation.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  11. package/lib/cjs/CatalogConnection.js.map +1 -1
  12. package/lib/cjs/CategorySelectorState.js.map +1 -1
  13. package/lib/cjs/ChangeFlags.js.map +1 -1
  14. package/lib/cjs/CheckpointConnection.js.map +1 -1
  15. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  16. package/lib/cjs/CoordSystem.js.map +1 -1
  17. package/lib/cjs/DecorationsCache.js.map +1 -1
  18. package/lib/cjs/DevTools.js.map +1 -1
  19. package/lib/cjs/DisplayStyleState.js.map +1 -1
  20. package/lib/cjs/DrawingViewState.js +5 -5
  21. package/lib/cjs/DrawingViewState.js.map +1 -1
  22. package/lib/cjs/ElementLocateManager.js.map +1 -1
  23. package/lib/cjs/EmphasizeElements.js.map +1 -1
  24. package/lib/cjs/EntityState.js.map +1 -1
  25. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  26. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  27. package/lib/cjs/FlashSettings.js.map +1 -1
  28. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  29. package/lib/cjs/Frustum2d.js.map +1 -1
  30. package/lib/cjs/FrustumAnimator.js.map +1 -1
  31. package/lib/cjs/FuzzySearch.js.map +1 -1
  32. package/lib/cjs/GeoServices.js.map +1 -1
  33. package/lib/cjs/GlobeAnimator.js.map +1 -1
  34. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  35. package/lib/cjs/HitDetail.js.map +1 -1
  36. package/lib/cjs/IModelApp.js.map +1 -1
  37. package/lib/cjs/IModelConnection.js +26 -26
  38. package/lib/cjs/IModelConnection.js.map +1 -1
  39. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  40. package/lib/cjs/IModeljs-css.js +133 -133
  41. package/lib/cjs/IModeljs-css.js.map +1 -1
  42. package/lib/cjs/IpcApp.js.map +1 -1
  43. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/MarginPercent.js.map +1 -1
  46. package/lib/cjs/Marker.js.map +1 -1
  47. package/lib/cjs/ModelSelectorState.js.map +1 -1
  48. package/lib/cjs/ModelState.js.map +1 -1
  49. package/lib/cjs/NativeApp.js.map +1 -1
  50. package/lib/cjs/NativeAppLogger.js.map +1 -1
  51. package/lib/cjs/NoRenderApp.js.map +1 -1
  52. package/lib/cjs/NotificationManager.js.map +1 -1
  53. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  54. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  55. package/lib/cjs/RealityDataSource.js.map +1 -1
  56. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  57. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  58. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  59. package/lib/cjs/SelectionSet.js.map +1 -1
  60. package/lib/cjs/SheetViewState.js.map +1 -1
  61. package/lib/cjs/SpatialClassifiersState.js.map +1 -1
  62. package/lib/cjs/SpatialViewState.js.map +1 -1
  63. package/lib/cjs/Sprites.js.map +1 -1
  64. package/lib/cjs/StandardView.js.map +1 -1
  65. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  66. package/lib/cjs/TentativePoint.js.map +1 -1
  67. package/lib/cjs/Tiles.js.map +1 -1
  68. package/lib/cjs/TxnEntityChanges.js.map +1 -1
  69. package/lib/cjs/UserPreferences.js.map +1 -1
  70. package/lib/cjs/ViewAnimation.js.map +1 -1
  71. package/lib/cjs/ViewContext.js.map +1 -1
  72. package/lib/cjs/ViewCreator2d.js.map +1 -1
  73. package/lib/cjs/ViewCreator3d.js.map +1 -1
  74. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  75. package/lib/cjs/ViewManager.js.map +1 -1
  76. package/lib/cjs/ViewPose.js.map +1 -1
  77. package/lib/cjs/ViewState.js.map +1 -1
  78. package/lib/cjs/ViewStatus.js.map +1 -1
  79. package/lib/cjs/ViewingSpace.js.map +1 -1
  80. package/lib/cjs/Viewport.js.map +1 -1
  81. package/lib/cjs/ViewportSync.js.map +1 -1
  82. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -1
  83. package/lib/cjs/common/ImageUtil.js.map +1 -1
  84. package/lib/cjs/common/ViewRect.js.map +1 -1
  85. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  86. package/lib/cjs/common/gltf/GltfModel.js.map +1 -1
  87. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  88. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  89. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  90. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  91. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  92. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  93. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  94. package/lib/cjs/common/internal/render/AnimationNodeId.js.map +1 -1
  95. package/lib/cjs/common/internal/render/AuxChannelTable.js.map +1 -1
  96. package/lib/cjs/common/internal/render/ColorMap.js.map +1 -1
  97. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  98. package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
  99. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  100. package/lib/cjs/common/internal/render/GeometryList.js.map +1 -1
  101. package/lib/cjs/common/internal/render/GeometryPrimitives.js.map +1 -1
  102. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  103. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  104. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  105. package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
  106. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  107. package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
  108. package/lib/cjs/common/internal/render/MeshParams.js.map +1 -1
  109. package/lib/cjs/common/internal/render/MeshPrimitive.js.map +1 -1
  110. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  111. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
  112. package/lib/cjs/common/internal/render/PointCloudPrimitive.js.map +1 -1
  113. package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
  114. package/lib/cjs/common/internal/render/Polyface.js.map +1 -1
  115. package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
  116. package/lib/cjs/common/internal/render/Primitives.js.map +1 -1
  117. package/lib/cjs/common/internal/render/Strokes.js.map +1 -1
  118. package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
  119. package/lib/cjs/common/internal/render/VertexIndices.js.map +1 -1
  120. package/lib/cjs/common/internal/render/VertexKey.js.map +1 -1
  121. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  122. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  123. package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
  124. package/lib/cjs/common/render/BatchOptions.js.map +1 -1
  125. package/lib/cjs/common/render/GraphicAssembler.js.map +1 -1
  126. package/lib/cjs/common/render/GraphicDescriptionBuilder.js.map +1 -1
  127. package/lib/cjs/common/render/GraphicDescriptionContext.js.map +1 -1
  128. package/lib/cjs/common/render/GraphicPrimitive.js.map +1 -1
  129. package/lib/cjs/common/render/GraphicType.js.map +1 -1
  130. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  131. package/lib/cjs/common/render/MaterialParams.js.map +1 -1
  132. package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -1
  133. package/lib/cjs/common/render/TextureParams.js.map +1 -1
  134. package/lib/cjs/common.js.map +1 -1
  135. package/lib/cjs/core-frontend.js.map +1 -1
  136. package/lib/cjs/extension/Extension.js.map +1 -1
  137. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  138. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  139. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  140. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  141. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  142. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  143. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  144. package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -1
  145. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  146. package/lib/cjs/internal/cross-package.js.map +1 -1
  147. package/lib/cjs/internal/render/AnimationBranchState.js.map +1 -1
  148. package/lib/cjs/internal/render/FrameStatsCollector.js.map +1 -1
  149. package/lib/cjs/internal/render/GraphicBranchFrustum.js.map +1 -1
  150. package/lib/cjs/internal/render/GraphicTemplateImpl.js.map +1 -1
  151. package/lib/cjs/internal/render/MeshMapLayerGraphicParams.js.map +1 -1
  152. package/lib/cjs/internal/render/MockRender.js.map +1 -1
  153. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  154. package/lib/cjs/internal/render/QueryVisibileFeatures.js.map +1 -1
  155. package/lib/cjs/internal/render/RenderAreaPattern.js.map +1 -1
  156. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  157. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  158. package/lib/cjs/internal/render/RenderMaterialSource.js.map +1 -1
  159. package/lib/cjs/internal/render/RenderPlan.js.map +1 -1
  160. package/lib/cjs/internal/render/RenderPlanarClassifier.js.map +1 -1
  161. package/lib/cjs/internal/render/RenderSkyBoxParams.js.map +1 -1
  162. package/lib/cjs/internal/render/RenderSystemDebugControl.js.map +1 -1
  163. package/lib/cjs/internal/render/RenderTargetDebugControl.js.map +1 -1
  164. package/lib/cjs/internal/render/RenderTerrain.js.map +1 -1
  165. package/lib/cjs/internal/render/RenderTextureDrape.js.map +1 -1
  166. package/lib/cjs/internal/render/SceneVolumeClassifier.js.map +1 -1
  167. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  168. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  170. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +1 -1
  172. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/BatchState.js.map +1 -1
  174. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/BranchStack.js.map +1 -1
  176. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  178. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  180. package/lib/cjs/internal/render/webgl/ClipVolume.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
  182. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ContourUniforms.js.map +1 -1
  184. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/Diagnostics.js.map +1 -1
  186. package/lib/cjs/internal/render/webgl/Disposable.js.map +1 -1
  187. package/lib/cjs/internal/render/webgl/DrawCommand.js.map +1 -1
  188. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/EdgeGeometry.js.map +1 -1
  190. package/lib/cjs/internal/render/webgl/EdgeSettings.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  192. package/lib/cjs/internal/render/webgl/FloatRGBA.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  194. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/GL.js.map +1 -1
  196. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  197. package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
  198. package/lib/cjs/internal/render/webgl/HiliteUniforms.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/IModelFrameLifecycle.js.map +1 -1
  200. package/lib/cjs/internal/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  201. package/lib/cjs/internal/render/webgl/InstancedGeometry.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/Layer.js.map +1 -1
  203. package/lib/cjs/internal/render/webgl/LayerCommands.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/LightingUniforms.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/LineCode.js.map +1 -1
  206. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/Material.js.map +1 -1
  208. package/lib/cjs/internal/render/webgl/Matrix.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/Mesh.js.map +1 -1
  210. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  211. package/lib/cjs/internal/render/webgl/MeshGeometry.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  213. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +1 -1
  214. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  217. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/PointString.js.map +1 -1
  219. package/lib/cjs/internal/render/webgl/Polyline.js.map +1 -1
  220. package/lib/cjs/internal/render/webgl/Primitive.js.map +1 -1
  221. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  222. package/lib/cjs/internal/render/webgl/RealityModelUniforms.js.map +1 -1
  223. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  224. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  225. package/lib/cjs/internal/render/webgl/RenderFlags.js.map +1 -1
  226. package/lib/cjs/internal/render/webgl/RenderState.js.map +1 -1
  227. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  228. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  229. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  230. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  231. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  232. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  233. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  234. package/lib/cjs/internal/render/webgl/StyleUniforms.js.map +1 -1
  235. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  236. package/lib/cjs/internal/render/webgl/Sync.js.map +1 -1
  237. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  238. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  239. package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
  240. package/lib/cjs/internal/render/webgl/TargetUniforms.js.map +1 -1
  241. package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
  242. package/lib/cjs/internal/render/webgl/TechniqueFlags.js.map +1 -1
  243. package/lib/cjs/internal/render/webgl/TechniqueId.js.map +1 -1
  244. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  245. package/lib/cjs/internal/render/webgl/TextureDrape.js.map +1 -1
  246. package/lib/cjs/internal/render/webgl/ThematicSensors.js.map +1 -1
  247. package/lib/cjs/internal/render/webgl/ThematicUniforms.js.map +1 -1
  248. package/lib/cjs/internal/render/webgl/UniformHandle.js.map +1 -1
  249. package/lib/cjs/internal/render/webgl/VertexLUT.js.map +1 -1
  250. package/lib/cjs/internal/render/webgl/ViewRectUniforms.js.map +1 -1
  251. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  252. package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js +154 -154
  253. package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  254. package/lib/cjs/internal/render/webgl/glsl/Animation.js +83 -83
  255. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  256. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +266 -266
  257. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js.map +1 -1
  258. package/lib/cjs/internal/render/webgl/glsl/Blur.js +37 -37
  259. package/lib/cjs/internal/render/webgl/glsl/Blur.js.map +1 -1
  260. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +5 -5
  261. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  262. package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js +3 -3
  263. package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  264. package/lib/cjs/internal/render/webgl/glsl/Clipping.js +96 -96
  265. package/lib/cjs/internal/render/webgl/glsl/Clipping.js.map +1 -1
  266. package/lib/cjs/internal/render/webgl/glsl/Color.js +12 -12
  267. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  268. package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js +7 -7
  269. package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js.map +1 -1
  270. package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js +5 -5
  271. package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js.map +1 -1
  272. package/lib/cjs/internal/render/webgl/glsl/Common.js +16 -16
  273. package/lib/cjs/internal/render/webgl/glsl/Common.js.map +1 -1
  274. package/lib/cjs/internal/render/webgl/glsl/Composite.js +71 -71
  275. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  276. package/lib/cjs/internal/render/webgl/glsl/Contours.js +101 -101
  277. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  278. package/lib/cjs/internal/render/webgl/glsl/CopyColor.js +6 -6
  279. package/lib/cjs/internal/render/webgl/glsl/CopyColor.js.map +1 -1
  280. package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js +3 -3
  281. package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  282. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +4 -4
  283. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  284. package/lib/cjs/internal/render/webgl/glsl/Decode.js +65 -65
  285. package/lib/cjs/internal/render/webgl/glsl/Decode.js.map +1 -1
  286. package/lib/cjs/internal/render/webgl/glsl/EDL.js +103 -103
  287. package/lib/cjs/internal/render/webgl/glsl/EDL.js.map +1 -1
  288. package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js +25 -25
  289. package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  290. package/lib/cjs/internal/render/webgl/glsl/Edge.js +146 -146
  291. package/lib/cjs/internal/render/webgl/glsl/Edge.js.map +1 -1
  292. package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js +238 -238
  293. package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  294. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +43 -43
  295. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  296. package/lib/cjs/internal/render/webgl/glsl/Instancing.js +21 -21
  297. package/lib/cjs/internal/render/webgl/glsl/Instancing.js.map +1 -1
  298. package/lib/cjs/internal/render/webgl/glsl/Lighting.js +92 -92
  299. package/lib/cjs/internal/render/webgl/glsl/Lighting.js.map +1 -1
  300. package/lib/cjs/internal/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  301. package/lib/cjs/internal/render/webgl/glsl/LookupTable.js +19 -19
  302. package/lib/cjs/internal/render/webgl/glsl/LookupTable.js.map +1 -1
  303. package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js +87 -87
  304. package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -1
  305. package/lib/cjs/internal/render/webgl/glsl/Monochrome.js +13 -13
  306. package/lib/cjs/internal/render/webgl/glsl/Monochrome.js.map +1 -1
  307. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +188 -188
  308. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  309. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +22 -22
  310. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  311. package/lib/cjs/internal/render/webgl/glsl/PointCloud.js +28 -28
  312. package/lib/cjs/internal/render/webgl/glsl/PointCloud.js.map +1 -1
  313. package/lib/cjs/internal/render/webgl/glsl/PointString.js +9 -9
  314. package/lib/cjs/internal/render/webgl/glsl/PointString.js.map +1 -1
  315. package/lib/cjs/internal/render/webgl/glsl/Polyline.js +213 -213
  316. package/lib/cjs/internal/render/webgl/glsl/Polyline.js.map +1 -1
  317. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +25 -25
  318. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  319. package/lib/cjs/internal/render/webgl/glsl/RenderPass.js.map +1 -1
  320. package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  321. package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  322. package/lib/cjs/internal/render/webgl/glsl/SkyBox.js.map +1 -1
  323. package/lib/cjs/internal/render/webgl/glsl/SkySphere.js +49 -49
  324. package/lib/cjs/internal/render/webgl/glsl/SkySphere.js.map +1 -1
  325. package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js +51 -51
  326. package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  327. package/lib/cjs/internal/render/webgl/glsl/Surface.js +235 -235
  328. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  329. package/lib/cjs/internal/render/webgl/glsl/Thematic.js +136 -136
  330. package/lib/cjs/internal/render/webgl/glsl/Thematic.js.map +1 -1
  331. package/lib/cjs/internal/render/webgl/glsl/Translucency.js +19 -19
  332. package/lib/cjs/internal/render/webgl/glsl/Translucency.js.map +1 -1
  333. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +73 -73
  334. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  335. package/lib/cjs/internal/render/webgl/glsl/Viewport.js +38 -38
  336. package/lib/cjs/internal/render/webgl/glsl/Viewport.js.map +1 -1
  337. package/lib/cjs/internal/render/webgl/glsl/ViewportQuad.js.map +1 -1
  338. package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js +10 -10
  339. package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js.map +1 -1
  340. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  341. package/lib/cjs/internal/tile/BatchedTileIdMap.js.map +1 -1
  342. package/lib/cjs/internal/tile/CesiumAssetProvider.js.map +1 -1
  343. package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
  344. package/lib/cjs/internal/tile/ContextShareProvider.js.map +1 -1
  345. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  346. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  347. package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
  348. package/lib/cjs/internal/tile/I3dmReader.js.map +1 -1
  349. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  350. package/lib/cjs/internal/tile/IModelTileRequestChannels.js.map +1 -1
  351. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  352. package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
  353. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  354. package/lib/cjs/internal/tile/ImdlParser.js.map +1 -1
  355. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  356. package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -1
  357. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  358. package/lib/cjs/internal/tile/MeshoptCompression.js.map +1 -1
  359. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  360. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  361. package/lib/cjs/internal/tile/PntsReader.js.map +1 -1
  362. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  363. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  364. package/lib/cjs/internal/tile/RealityTileDrawArgs.js.map +1 -1
  365. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  366. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  367. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  368. package/lib/cjs/internal/tile/ViewFlagOverrides.js.map +1 -1
  369. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  370. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  371. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  372. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  373. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
  374. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  375. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  376. package/lib/cjs/internal/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  377. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -1
  378. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -1
  379. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  380. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -1
  381. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  382. package/lib/cjs/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  383. package/lib/cjs/internal/tile/map/ImageryProviders/WebMercator.js.map +1 -1
  384. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  385. package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  386. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  387. package/lib/cjs/internal/tile/map/MapTileLoader.js.map +1 -1
  388. package/lib/cjs/internal/tile/map/UrlUtils.js.map +1 -1
  389. package/lib/cjs/internal/tile/map/WmsCapabilities.js.map +1 -1
  390. package/lib/cjs/internal/tile/map/WmsUtilities.js.map +1 -1
  391. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  392. package/lib/cjs/internal/webgl.js.map +1 -1
  393. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  394. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  395. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  396. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  397. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  398. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  399. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  400. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  401. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  402. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  403. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  404. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -1
  405. package/lib/cjs/render/CreateTextureArgs.js.map +1 -1
  406. package/lib/cjs/render/Decorations.js.map +1 -1
  407. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  408. package/lib/cjs/render/FrameStats.js.map +1 -1
  409. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  410. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  411. package/lib/cjs/render/GraphicTemplate.js.map +1 -1
  412. package/lib/cjs/render/MeshArgs.js.map +1 -1
  413. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  414. package/lib/cjs/render/Pixel.js.map +1 -1
  415. package/lib/cjs/render/PolylineArgs.js.map +1 -1
  416. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  417. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  418. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  419. package/lib/cjs/render/RenderMemory.js.map +1 -1
  420. package/lib/cjs/render/RenderSystem.js.map +1 -1
  421. package/lib/cjs/render/RenderTarget.js.map +1 -1
  422. package/lib/cjs/render/Scene.js.map +1 -1
  423. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  424. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  425. package/lib/cjs/request/Request.js.map +1 -1
  426. package/lib/cjs/request/utils.js.map +1 -1
  427. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  428. package/lib/cjs/tile/GltfReader.js.map +1 -1
  429. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  430. package/lib/cjs/tile/RealityTile.js.map +1 -1
  431. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  432. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  433. package/lib/cjs/tile/Tile.js.map +1 -1
  434. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  435. package/lib/cjs/tile/TileContent.js.map +1 -1
  436. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  437. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  438. package/lib/cjs/tile/TileParams.js.map +1 -1
  439. package/lib/cjs/tile/TileRequest.js.map +1 -1
  440. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  441. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  442. package/lib/cjs/tile/TileStorage.js.map +1 -1
  443. package/lib/cjs/tile/TileTree.js.map +1 -1
  444. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  445. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  446. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  447. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  448. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  449. package/lib/cjs/tile/TileUser.js.map +1 -1
  450. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  451. package/lib/cjs/tile/internal.js.map +1 -1
  452. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  453. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  454. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  455. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  456. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  457. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  458. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  459. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  460. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  461. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  462. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  463. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  464. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  465. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  466. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  467. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  468. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  469. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  470. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  471. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  472. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  473. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  474. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  475. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  476. package/lib/cjs/tools/EventController.js.map +1 -1
  477. package/lib/cjs/tools/IdleTool.js.map +1 -1
  478. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  479. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  480. package/lib/cjs/tools/SelectTool.js.map +1 -1
  481. package/lib/cjs/tools/Tool.js.map +1 -1
  482. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  483. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  484. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  485. package/lib/cjs/tools/ViewTool.js.map +1 -1
  486. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
  487. package/lib/cjs/workers/ImdlParser/webpack.config.js +42 -42
  488. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  489. package/lib/esm/AccuDraw.js.map +1 -1
  490. package/lib/esm/AccuSnap.js.map +1 -1
  491. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  492. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  493. package/lib/esm/AuxCoordSys.js.map +1 -1
  494. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  495. package/lib/esm/BingLocation.js.map +1 -1
  496. package/lib/esm/BriefcaseConnection.js.map +1 -1
  497. package/lib/esm/BriefcaseTxns.js.map +1 -1
  498. package/lib/esm/CatalogConnection.js.map +1 -1
  499. package/lib/esm/CategorySelectorState.js.map +1 -1
  500. package/lib/esm/ChangeFlags.js.map +1 -1
  501. package/lib/esm/CheckpointConnection.js.map +1 -1
  502. package/lib/esm/ContextRealityModelState.js.map +1 -1
  503. package/lib/esm/CoordSystem.js.map +1 -1
  504. package/lib/esm/DecorationsCache.js.map +1 -1
  505. package/lib/esm/DevTools.js.map +1 -1
  506. package/lib/esm/DisplayStyleState.js.map +1 -1
  507. package/lib/esm/DrawingViewState.js +5 -5
  508. package/lib/esm/DrawingViewState.js.map +1 -1
  509. package/lib/esm/ElementLocateManager.js.map +1 -1
  510. package/lib/esm/EmphasizeElements.js.map +1 -1
  511. package/lib/esm/EntityState.js.map +1 -1
  512. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  513. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  514. package/lib/esm/FlashSettings.js.map +1 -1
  515. package/lib/esm/FrontendHubAccess.js.map +1 -1
  516. package/lib/esm/Frustum2d.js.map +1 -1
  517. package/lib/esm/FrustumAnimator.js.map +1 -1
  518. package/lib/esm/FuzzySearch.js.map +1 -1
  519. package/lib/esm/GeoServices.js.map +1 -1
  520. package/lib/esm/GlobeAnimator.js.map +1 -1
  521. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  522. package/lib/esm/HitDetail.js.map +1 -1
  523. package/lib/esm/IModelApp.js.map +1 -1
  524. package/lib/esm/IModelConnection.js +26 -26
  525. package/lib/esm/IModelConnection.js.map +1 -1
  526. package/lib/esm/IModelRoutingContext.js.map +1 -1
  527. package/lib/esm/IModeljs-css.js +133 -133
  528. package/lib/esm/IModeljs-css.js.map +1 -1
  529. package/lib/esm/IpcApp.js.map +1 -1
  530. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  531. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  532. package/lib/esm/MarginPercent.js.map +1 -1
  533. package/lib/esm/Marker.js.map +1 -1
  534. package/lib/esm/ModelSelectorState.js.map +1 -1
  535. package/lib/esm/ModelState.js.map +1 -1
  536. package/lib/esm/NativeApp.js.map +1 -1
  537. package/lib/esm/NativeAppLogger.js.map +1 -1
  538. package/lib/esm/NoRenderApp.js.map +1 -1
  539. package/lib/esm/NotificationManager.js.map +1 -1
  540. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  541. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  542. package/lib/esm/RealityDataSource.js.map +1 -1
  543. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  544. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  545. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  546. package/lib/esm/SelectionSet.js.map +1 -1
  547. package/lib/esm/SheetViewState.js.map +1 -1
  548. package/lib/esm/SpatialClassifiersState.js.map +1 -1
  549. package/lib/esm/SpatialViewState.js.map +1 -1
  550. package/lib/esm/Sprites.js.map +1 -1
  551. package/lib/esm/StandardView.js.map +1 -1
  552. package/lib/esm/SubCategoriesCache.js.map +1 -1
  553. package/lib/esm/TentativePoint.js.map +1 -1
  554. package/lib/esm/Tiles.js.map +1 -1
  555. package/lib/esm/TxnEntityChanges.js.map +1 -1
  556. package/lib/esm/UserPreferences.js.map +1 -1
  557. package/lib/esm/ViewAnimation.js.map +1 -1
  558. package/lib/esm/ViewContext.js.map +1 -1
  559. package/lib/esm/ViewCreator2d.js.map +1 -1
  560. package/lib/esm/ViewCreator3d.js.map +1 -1
  561. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  562. package/lib/esm/ViewManager.js.map +1 -1
  563. package/lib/esm/ViewPose.js.map +1 -1
  564. package/lib/esm/ViewState.js.map +1 -1
  565. package/lib/esm/ViewStatus.js.map +1 -1
  566. package/lib/esm/ViewingSpace.js.map +1 -1
  567. package/lib/esm/Viewport.js.map +1 -1
  568. package/lib/esm/ViewportSync.js.map +1 -1
  569. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -1
  570. package/lib/esm/common/ImageUtil.js.map +1 -1
  571. package/lib/esm/common/ViewRect.js.map +1 -1
  572. package/lib/esm/common/WorkerProxy.js.map +1 -1
  573. package/lib/esm/common/gltf/GltfModel.js.map +1 -1
  574. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  575. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  576. package/lib/esm/common/imdl/CompactEdges.js.map +1 -1
  577. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  578. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  579. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  580. package/lib/esm/common/internal/Symbols.js.map +1 -1
  581. package/lib/esm/common/internal/render/AnimationNodeId.js.map +1 -1
  582. package/lib/esm/common/internal/render/AuxChannelTable.js.map +1 -1
  583. package/lib/esm/common/internal/render/ColorMap.js.map +1 -1
  584. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  585. package/lib/esm/common/internal/render/EdgeParams.js.map +1 -1
  586. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  587. package/lib/esm/common/internal/render/GeometryList.js.map +1 -1
  588. package/lib/esm/common/internal/render/GeometryPrimitives.js.map +1 -1
  589. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  590. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  591. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  592. package/lib/esm/common/internal/render/LineCode.js.map +1 -1
  593. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  594. package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
  595. package/lib/esm/common/internal/render/MeshParams.js.map +1 -1
  596. package/lib/esm/common/internal/render/MeshPrimitive.js.map +1 -1
  597. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  598. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
  599. package/lib/esm/common/internal/render/PointCloudPrimitive.js.map +1 -1
  600. package/lib/esm/common/internal/render/PointStringParams.js.map +1 -1
  601. package/lib/esm/common/internal/render/Polyface.js.map +1 -1
  602. package/lib/esm/common/internal/render/PolylineParams.js.map +1 -1
  603. package/lib/esm/common/internal/render/Primitives.js.map +1 -1
  604. package/lib/esm/common/internal/render/Strokes.js.map +1 -1
  605. package/lib/esm/common/internal/render/SurfaceParams.js.map +1 -1
  606. package/lib/esm/common/internal/render/VertexIndices.js.map +1 -1
  607. package/lib/esm/common/internal/render/VertexKey.js.map +1 -1
  608. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  609. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  610. package/lib/esm/common/internal/render/VertexTableSplitter.js.map +1 -1
  611. package/lib/esm/common/render/BatchOptions.js.map +1 -1
  612. package/lib/esm/common/render/GraphicAssembler.js.map +1 -1
  613. package/lib/esm/common/render/GraphicDescriptionBuilder.js.map +1 -1
  614. package/lib/esm/common/render/GraphicDescriptionContext.js.map +1 -1
  615. package/lib/esm/common/render/GraphicPrimitive.js.map +1 -1
  616. package/lib/esm/common/render/GraphicType.js.map +1 -1
  617. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  618. package/lib/esm/common/render/MaterialParams.js.map +1 -1
  619. package/lib/esm/common/render/RenderInstancesParams.js.map +1 -1
  620. package/lib/esm/common/render/TextureParams.js.map +1 -1
  621. package/lib/esm/common.js.map +1 -1
  622. package/lib/esm/core-frontend.js.map +1 -1
  623. package/lib/esm/extension/Extension.js.map +1 -1
  624. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  625. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  626. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  627. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  628. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  629. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  630. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  631. package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -1
  632. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  633. package/lib/esm/internal/cross-package.js.map +1 -1
  634. package/lib/esm/internal/render/AnimationBranchState.js.map +1 -1
  635. package/lib/esm/internal/render/FrameStatsCollector.js.map +1 -1
  636. package/lib/esm/internal/render/GraphicBranchFrustum.js.map +1 -1
  637. package/lib/esm/internal/render/GraphicTemplateImpl.js.map +1 -1
  638. package/lib/esm/internal/render/MeshMapLayerGraphicParams.js.map +1 -1
  639. package/lib/esm/internal/render/MockRender.js.map +1 -1
  640. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  641. package/lib/esm/internal/render/QueryVisibileFeatures.js.map +1 -1
  642. package/lib/esm/internal/render/RenderAreaPattern.js.map +1 -1
  643. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  644. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  645. package/lib/esm/internal/render/RenderMaterialSource.js.map +1 -1
  646. package/lib/esm/internal/render/RenderPlan.js.map +1 -1
  647. package/lib/esm/internal/render/RenderPlanarClassifier.js.map +1 -1
  648. package/lib/esm/internal/render/RenderSkyBoxParams.js.map +1 -1
  649. package/lib/esm/internal/render/RenderSystemDebugControl.js.map +1 -1
  650. package/lib/esm/internal/render/RenderTargetDebugControl.js.map +1 -1
  651. package/lib/esm/internal/render/RenderTerrain.js.map +1 -1
  652. package/lib/esm/internal/render/RenderTextureDrape.js.map +1 -1
  653. package/lib/esm/internal/render/SceneVolumeClassifier.js.map +1 -1
  654. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  655. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  656. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  657. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  658. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +1 -1
  659. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  660. package/lib/esm/internal/render/webgl/BatchState.js.map +1 -1
  661. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  662. package/lib/esm/internal/render/webgl/BranchStack.js.map +1 -1
  663. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  664. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  665. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  666. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  667. package/lib/esm/internal/render/webgl/ClipVolume.js.map +1 -1
  668. package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
  669. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  670. package/lib/esm/internal/render/webgl/ContourUniforms.js.map +1 -1
  671. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  672. package/lib/esm/internal/render/webgl/Diagnostics.js.map +1 -1
  673. package/lib/esm/internal/render/webgl/Disposable.js.map +1 -1
  674. package/lib/esm/internal/render/webgl/DrawCommand.js.map +1 -1
  675. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  676. package/lib/esm/internal/render/webgl/EdgeGeometry.js.map +1 -1
  677. package/lib/esm/internal/render/webgl/EdgeSettings.js.map +1 -1
  678. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  679. package/lib/esm/internal/render/webgl/FloatRGBA.js.map +1 -1
  680. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  681. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  682. package/lib/esm/internal/render/webgl/GL.js.map +1 -1
  683. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  684. package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
  685. package/lib/esm/internal/render/webgl/HiliteUniforms.js.map +1 -1
  686. package/lib/esm/internal/render/webgl/IModelFrameLifecycle.js.map +1 -1
  687. package/lib/esm/internal/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  688. package/lib/esm/internal/render/webgl/InstancedGeometry.js.map +1 -1
  689. package/lib/esm/internal/render/webgl/Layer.js.map +1 -1
  690. package/lib/esm/internal/render/webgl/LayerCommands.js.map +1 -1
  691. package/lib/esm/internal/render/webgl/LightingUniforms.js.map +1 -1
  692. package/lib/esm/internal/render/webgl/LineCode.js.map +1 -1
  693. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  694. package/lib/esm/internal/render/webgl/Material.js.map +1 -1
  695. package/lib/esm/internal/render/webgl/Matrix.js.map +1 -1
  696. package/lib/esm/internal/render/webgl/Mesh.js.map +1 -1
  697. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  698. package/lib/esm/internal/render/webgl/MeshGeometry.js.map +1 -1
  699. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  700. package/lib/esm/internal/render/webgl/PlanarClassifier.js +1 -1
  701. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  702. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  703. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  704. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  705. package/lib/esm/internal/render/webgl/PointString.js.map +1 -1
  706. package/lib/esm/internal/render/webgl/Polyline.js.map +1 -1
  707. package/lib/esm/internal/render/webgl/Primitive.js.map +1 -1
  708. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  709. package/lib/esm/internal/render/webgl/RealityModelUniforms.js.map +1 -1
  710. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  711. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  712. package/lib/esm/internal/render/webgl/RenderFlags.js.map +1 -1
  713. package/lib/esm/internal/render/webgl/RenderState.js.map +1 -1
  714. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  715. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  716. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  717. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  718. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  719. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  720. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  721. package/lib/esm/internal/render/webgl/StyleUniforms.js.map +1 -1
  722. package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  723. package/lib/esm/internal/render/webgl/Sync.js.map +1 -1
  724. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  725. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  726. package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
  727. package/lib/esm/internal/render/webgl/TargetUniforms.js.map +1 -1
  728. package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
  729. package/lib/esm/internal/render/webgl/TechniqueFlags.js.map +1 -1
  730. package/lib/esm/internal/render/webgl/TechniqueId.js.map +1 -1
  731. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  732. package/lib/esm/internal/render/webgl/TextureDrape.js.map +1 -1
  733. package/lib/esm/internal/render/webgl/ThematicSensors.js.map +1 -1
  734. package/lib/esm/internal/render/webgl/ThematicUniforms.js.map +1 -1
  735. package/lib/esm/internal/render/webgl/UniformHandle.js.map +1 -1
  736. package/lib/esm/internal/render/webgl/VertexLUT.js.map +1 -1
  737. package/lib/esm/internal/render/webgl/ViewRectUniforms.js.map +1 -1
  738. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  739. package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js +154 -154
  740. package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  741. package/lib/esm/internal/render/webgl/glsl/Animation.js +83 -83
  742. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  743. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +266 -266
  744. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js.map +1 -1
  745. package/lib/esm/internal/render/webgl/glsl/Blur.js +37 -37
  746. package/lib/esm/internal/render/webgl/glsl/Blur.js.map +1 -1
  747. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +5 -5
  748. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  749. package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js +3 -3
  750. package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  751. package/lib/esm/internal/render/webgl/glsl/Clipping.js +96 -96
  752. package/lib/esm/internal/render/webgl/glsl/Clipping.js.map +1 -1
  753. package/lib/esm/internal/render/webgl/glsl/Color.js +12 -12
  754. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  755. package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js +7 -7
  756. package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js.map +1 -1
  757. package/lib/esm/internal/render/webgl/glsl/CombineTextures.js +5 -5
  758. package/lib/esm/internal/render/webgl/glsl/CombineTextures.js.map +1 -1
  759. package/lib/esm/internal/render/webgl/glsl/Common.js +16 -16
  760. package/lib/esm/internal/render/webgl/glsl/Common.js.map +1 -1
  761. package/lib/esm/internal/render/webgl/glsl/Composite.js +71 -71
  762. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  763. package/lib/esm/internal/render/webgl/glsl/Contours.js +101 -101
  764. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  765. package/lib/esm/internal/render/webgl/glsl/CopyColor.js +6 -6
  766. package/lib/esm/internal/render/webgl/glsl/CopyColor.js.map +1 -1
  767. package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js +3 -3
  768. package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  769. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +4 -4
  770. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  771. package/lib/esm/internal/render/webgl/glsl/Decode.js +65 -65
  772. package/lib/esm/internal/render/webgl/glsl/Decode.js.map +1 -1
  773. package/lib/esm/internal/render/webgl/glsl/EDL.js +103 -103
  774. package/lib/esm/internal/render/webgl/glsl/EDL.js.map +1 -1
  775. package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js +25 -25
  776. package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  777. package/lib/esm/internal/render/webgl/glsl/Edge.js +146 -146
  778. package/lib/esm/internal/render/webgl/glsl/Edge.js.map +1 -1
  779. package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js +238 -238
  780. package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  781. package/lib/esm/internal/render/webgl/glsl/Fragment.js +43 -43
  782. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  783. package/lib/esm/internal/render/webgl/glsl/Instancing.js +21 -21
  784. package/lib/esm/internal/render/webgl/glsl/Instancing.js.map +1 -1
  785. package/lib/esm/internal/render/webgl/glsl/Lighting.js +92 -92
  786. package/lib/esm/internal/render/webgl/glsl/Lighting.js.map +1 -1
  787. package/lib/esm/internal/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  788. package/lib/esm/internal/render/webgl/glsl/LookupTable.js +19 -19
  789. package/lib/esm/internal/render/webgl/glsl/LookupTable.js.map +1 -1
  790. package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js +87 -87
  791. package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -1
  792. package/lib/esm/internal/render/webgl/glsl/Monochrome.js +13 -13
  793. package/lib/esm/internal/render/webgl/glsl/Monochrome.js.map +1 -1
  794. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +188 -188
  795. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  796. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +22 -22
  797. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  798. package/lib/esm/internal/render/webgl/glsl/PointCloud.js +28 -28
  799. package/lib/esm/internal/render/webgl/glsl/PointCloud.js.map +1 -1
  800. package/lib/esm/internal/render/webgl/glsl/PointString.js +9 -9
  801. package/lib/esm/internal/render/webgl/glsl/PointString.js.map +1 -1
  802. package/lib/esm/internal/render/webgl/glsl/Polyline.js +213 -213
  803. package/lib/esm/internal/render/webgl/glsl/Polyline.js.map +1 -1
  804. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +25 -25
  805. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  806. package/lib/esm/internal/render/webgl/glsl/RenderPass.js.map +1 -1
  807. package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  808. package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  809. package/lib/esm/internal/render/webgl/glsl/SkyBox.js.map +1 -1
  810. package/lib/esm/internal/render/webgl/glsl/SkySphere.js +49 -49
  811. package/lib/esm/internal/render/webgl/glsl/SkySphere.js.map +1 -1
  812. package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js +51 -51
  813. package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  814. package/lib/esm/internal/render/webgl/glsl/Surface.js +235 -235
  815. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  816. package/lib/esm/internal/render/webgl/glsl/Thematic.js +136 -136
  817. package/lib/esm/internal/render/webgl/glsl/Thematic.js.map +1 -1
  818. package/lib/esm/internal/render/webgl/glsl/Translucency.js +19 -19
  819. package/lib/esm/internal/render/webgl/glsl/Translucency.js.map +1 -1
  820. package/lib/esm/internal/render/webgl/glsl/Vertex.js +73 -73
  821. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  822. package/lib/esm/internal/render/webgl/glsl/Viewport.js +38 -38
  823. package/lib/esm/internal/render/webgl/glsl/Viewport.js.map +1 -1
  824. package/lib/esm/internal/render/webgl/glsl/ViewportQuad.js.map +1 -1
  825. package/lib/esm/internal/render/webgl/glsl/Wiremesh.js +10 -10
  826. package/lib/esm/internal/render/webgl/glsl/Wiremesh.js.map +1 -1
  827. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  828. package/lib/esm/internal/tile/BatchedTileIdMap.js.map +1 -1
  829. package/lib/esm/internal/tile/CesiumAssetProvider.js.map +1 -1
  830. package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
  831. package/lib/esm/internal/tile/ContextShareProvider.js.map +1 -1
  832. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  833. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  834. package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
  835. package/lib/esm/internal/tile/I3dmReader.js.map +1 -1
  836. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  837. package/lib/esm/internal/tile/IModelTileRequestChannels.js.map +1 -1
  838. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  839. package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
  840. package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  841. package/lib/esm/internal/tile/ImdlParser.js.map +1 -1
  842. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  843. package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -1
  844. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  845. package/lib/esm/internal/tile/MeshoptCompression.js.map +1 -1
  846. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  847. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  848. package/lib/esm/internal/tile/PntsReader.js.map +1 -1
  849. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  850. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  851. package/lib/esm/internal/tile/RealityTileDrawArgs.js.map +1 -1
  852. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  853. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  854. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  855. package/lib/esm/internal/tile/ViewFlagOverrides.js.map +1 -1
  856. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  857. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  858. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  859. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  860. package/lib/esm/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
  861. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  862. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  863. package/lib/esm/internal/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  864. package/lib/esm/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -1
  865. package/lib/esm/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -1
  866. package/lib/esm/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  867. package/lib/esm/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -1
  868. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  869. package/lib/esm/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  870. package/lib/esm/internal/tile/map/ImageryProviders/WebMercator.js.map +1 -1
  871. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  872. package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  873. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  874. package/lib/esm/internal/tile/map/MapTileLoader.js.map +1 -1
  875. package/lib/esm/internal/tile/map/UrlUtils.js.map +1 -1
  876. package/lib/esm/internal/tile/map/WmsCapabilities.js.map +1 -1
  877. package/lib/esm/internal/tile/map/WmsUtilities.js.map +1 -1
  878. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  879. package/lib/esm/internal/webgl.js.map +1 -1
  880. package/lib/esm/properties/AngleDescription.js.map +1 -1
  881. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  882. package/lib/esm/properties/LengthDescription.js.map +1 -1
  883. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  884. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  885. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  886. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  887. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  888. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  889. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  890. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  891. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -1
  892. package/lib/esm/render/CreateTextureArgs.js.map +1 -1
  893. package/lib/esm/render/Decorations.js.map +1 -1
  894. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  895. package/lib/esm/render/FrameStats.js.map +1 -1
  896. package/lib/esm/render/GraphicBranch.js.map +1 -1
  897. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  898. package/lib/esm/render/GraphicTemplate.js.map +1 -1
  899. package/lib/esm/render/MeshArgs.js.map +1 -1
  900. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  901. package/lib/esm/render/Pixel.js.map +1 -1
  902. package/lib/esm/render/PolylineArgs.js.map +1 -1
  903. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  904. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  905. package/lib/esm/render/RenderGraphic.js.map +1 -1
  906. package/lib/esm/render/RenderMemory.js.map +1 -1
  907. package/lib/esm/render/RenderSystem.js.map +1 -1
  908. package/lib/esm/render/RenderTarget.js.map +1 -1
  909. package/lib/esm/render/Scene.js.map +1 -1
  910. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  911. package/lib/esm/render/VisibleFeature.js.map +1 -1
  912. package/lib/esm/request/Request.js.map +1 -1
  913. package/lib/esm/request/utils.js.map +1 -1
  914. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  915. package/lib/esm/tile/GltfReader.js.map +1 -1
  916. package/lib/esm/tile/ImdlReader.js.map +1 -1
  917. package/lib/esm/tile/RealityTile.js.map +1 -1
  918. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  919. package/lib/esm/tile/RenderGraphicTileTree.js.map +1 -1
  920. package/lib/esm/tile/Tile.js.map +1 -1
  921. package/lib/esm/tile/TileAdmin.js.map +1 -1
  922. package/lib/esm/tile/TileContent.js.map +1 -1
  923. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  924. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  925. package/lib/esm/tile/TileParams.js.map +1 -1
  926. package/lib/esm/tile/TileRequest.js.map +1 -1
  927. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  928. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  929. package/lib/esm/tile/TileStorage.js.map +1 -1
  930. package/lib/esm/tile/TileTree.js.map +1 -1
  931. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  932. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  933. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  934. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  935. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  936. package/lib/esm/tile/TileUser.js.map +1 -1
  937. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  938. package/lib/esm/tile/internal.js.map +1 -1
  939. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  940. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  941. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  942. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  943. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  944. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  945. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  946. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  947. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  948. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  949. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  950. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  951. package/lib/esm/tile/map/MapTile.js.map +1 -1
  952. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  953. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  954. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  955. package/lib/esm/tile/map/QuadId.js.map +1 -1
  956. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  957. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  958. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  959. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  960. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  961. package/lib/esm/tools/EditManipulator.js.map +1 -1
  962. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  963. package/lib/esm/tools/EventController.js.map +1 -1
  964. package/lib/esm/tools/IdleTool.js.map +1 -1
  965. package/lib/esm/tools/MeasureTool.js.map +1 -1
  966. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  967. package/lib/esm/tools/SelectTool.js.map +1 -1
  968. package/lib/esm/tools/Tool.js.map +1 -1
  969. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  970. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  971. package/lib/esm/tools/ToolSettings.js.map +1 -1
  972. package/lib/esm/tools/ViewTool.js.map +1 -1
  973. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
  974. package/lib/esm/workers/ImdlParser/webpack.config.js +42 -42
  975. package/lib/esm/workers/RegisterWorker.js.map +1 -1
  976. package/lib/public/assets/MapLayerSources.json +25 -25
  977. package/lib/public/images/cesium-ion.svg +92 -92
  978. package/lib/public/images/imodeljs-icon.svg +2 -2
  979. package/lib/public/locales/en/CoreTools.json +508 -508
  980. package/lib/public/locales/en/iModelJs.json +176 -176
  981. package/lib/public/scripts/checkbrowser.js +24 -24
  982. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"AccuDraw.js","sourceRoot":"","sources":["../../src/AccuDraw.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module AccuDraw\n */\nimport { BentleyStatus, Id64String } from \"@itwin/core-bentley\";\nimport {\n Arc3d, AxisOrder, CurveCurve, CurveCurveApproachType, CurvePrimitive, Geometry, IModelJson as GeomJson, LineSegment3d, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d,\n PointString3d, Ray3d, Transform, Vector2d, Vector3d,\n} from \"@itwin/core-geometry\";\nimport { ColorByName, ColorDef, GeometryStreamProps, LinePixels } from \"@itwin/core-common\";\nimport { TentativeOrAccuSnap } from \"./AccuSnap\";\nimport { ACSDisplayOptions, AuxCoordSystemState } from \"./AuxCoordSys\";\nimport { HitDetail, SnapDetail, SnapHeat, SnapMode } from \"./HitDetail\";\nimport { IModelApp } from \"./IModelApp\";\nimport { GraphicBuilder } from \"./render/GraphicBuilder\";\nimport { StandardViewId } from \"./StandardView\";\nimport { BeButton, BeButtonEvent, CoordinateLockOverrides, InputCollector, InputSource } from \"./tools/Tool\";\nimport { ViewTool } from \"./tools/ViewTool\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { linePlaneIntersect } from \"./LinePlaneIntersect\";\nimport { ScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewState } from \"./ViewState\";\nimport { QuantityType } from \"./quantity-formatting/QuantityFormatter\";\nimport { FormatterSpec, FormatType, ParseError, Parser, ParserSpec, QuantityParseResult } from \"@itwin/core-quantity\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n// cspell:ignore dont primitivetools\n\n/** @internal */\nexport enum AccuDrawFlags {\n None = 0,\n SetModePolar = 1,\n SetModeRect = 1 << 1,\n SetOrigin = (1 << 2),\n FixedOrigin = (1 << 3),\n SetRMatrix = (1 << 4),\n SetXAxis = (1 << 5),\n SetNormal = (1 << 6),\n SetDistance = (1 << 7),\n LockDistance = (1 << 8),\n Lock_X = (1 << 9),\n Lock_Y = (1 << 10),\n Lock_Z = (1 << 11),\n Disable = (1 << 12),\n OrientDefault = (1 << 14),\n SetFocus = (1 << 15),\n OrientACS = (1 << 17),\n SetXAxis2 = (1 << 18),\n LockAngle = (1 << 19),\n AlwaysSetOrigin = SetOrigin | (1 << 21),\n RedrawCompass = (1 << 22),\n UpdateRotation = (1 << 23),\n SmartRotation = (1 << 24),\n}\n\n/** AccuDraw coordinate input mode\n * @public\n */\nexport enum CompassMode {\n /** Coordinate input using distance and angle */\n Polar = 0,\n /** Coordinate input using x, y, and z deltas */\n Rectangular = 1,\n}\n\n/** AccuDraw compass base rotation\n * @public\n */\nexport enum RotationMode {\n /** Aligned with standard view top or ACS top when [[ToolAdmin.acsContextLock]] is enabled */\n Top = 1,\n /** Aligned with standard view front or ACS front when [[ToolAdmin.acsContextLock]] is enabled */\n Front = 2,\n /** Aligned with standard view right or ACS right when [[ToolAdmin.acsContextLock]] is enabled */\n Side = 3,\n /** Aligned with view */\n View = 4,\n /** Aligned with view ACS */\n ACS = 5,\n /** Not aligned with a standard rotation or ACS */\n Context = 6,\n}\n\n/** @internal */\nexport enum LockedStates {\n NONE_LOCKED = 0,\n X_BM = (1),\n Y_BM = (1 << 1),\n VEC_BM = (1 << 2),\n DIST_BM = (1 << 3),\n XY_BM = (X_BM | Y_BM),\n ANGLE_BM = (XY_BM | VEC_BM),\n}\n\n/** AccuDraw enabled states\n * @public\n */\nexport enum CurrentState {\n /** Compass disabled/unwanted for this session */\n NotEnabled = 0,\n /** Compass deactivated but CAN be activated by user */\n Deactivated = 1,\n /** Compass not displayed awaiting automatic activation (default tool state) */\n Inactive = 2,\n /** Compass displayed and adjusting points */\n Active = 3,\n}\n\n/** @internal */\nexport enum ContextMode {\n Locked = 0,\n XAxis = 1,\n YAxis = 2,\n ZAxis = 3,\n XAxis2 = 4,\n None = 15,\n}\n\n/** AccuDraw coordinate input fields\n * @public\n */\nexport enum ItemField {\n /** Distance for polar mode */\n DIST_Item = 0,\n /** Angle for polar mode */\n ANGLE_Item = 1,\n /** X delta for rectangular mode */\n X_Item = 2,\n /** Y delta for rectangular mode */\n Y_Item = 3,\n /** Z delta (3d only) */\n Z_Item = 4,\n}\n\n/** @internal */\nexport enum KeyinStatus {\n Dynamic = 0,\n Partial = 1,\n}\n\nconst enum Constants { // eslint-disable-line no-restricted-syntax\n MAX_SAVED_VALUES = 10,\n SMALL_ANGLE = 1.0e-12,\n SMALL_DELTA = 0.00001,\n}\n\n/** @internal */\nexport class AccudrawData {\n public flags = 0; // AccuDrawFlags\n public readonly origin = new Point3d(); // used if ACCUDRAW_SetOrigin\n public readonly delta = new Point3d(); // if ACCUDRAW_Lock_X, etc.\n public readonly rMatrix = new Matrix3d(); // if ACCUDRAW_SetRMatrix/ACCUDRAW_Set3dMatrix\n public readonly vector = new Vector3d(); // if ACCUDRAW_SetXAxis, etc.\n public distance = 0; // if ACCUDRAW_SetDistance\n public angle = 0; // if ACCUDRAW_SetAngle\n public zero() {\n this.flags = this.distance = this.angle = 0;\n this.origin.setZero();\n this.delta.setZero();\n this.vector.setZero();\n this.rMatrix.setIdentity();\n }\n}\n\n/** @internal */\nexport class Flags {\n public redrawCompass = false;\n public dialogNeedsUpdate = false;\n public rotationNeedsUpdate = true;\n public lockedRotation = false;\n public indexLocked = false;\n public haveValidOrigin = false;\n public fixedOrg = false;\n public auxRotationPlane = RotationMode.Top;\n public contextRotMode = 0;\n public baseRotation = RotationMode.View;\n public baseMode = 0;\n public pointIsOnPlane = false; // whether rawPointOnPlane is on compass plane\n public softAngleLock = false;\n public bearingFixToPlane2D = false;\n public inDataPoint = false;\n public ignoreDataButton = false;\n public animateRotation = false;\n}\n\n/** AccuDraw value round off settings. Allows dynamic distance and angle values to be rounded to the nearest increment of the specified units value(s).\n * @public\n */\nexport class RoundOff {\n /** Whether rounding is to be applied to the corresponding dynamic distance or angle value.\n * @note To be considered active, units must also specify at least one increment value.\n */\n public active = false;\n /** Round off increment value(s), meters for distance round off, and radians for angle round off.\n * @note When multiple values are specified, rounding is based on smallest discernable value at current view zoom.\n */\n public units = new Set<number>();\n}\n\n/** @internal */\nexport class SavedState {\n public state = CurrentState.NotEnabled;\n public mode = CompassMode.Polar;\n public rotationMode = RotationMode.View;\n public readonly axes = new ThreeAxes();\n public readonly origin = new Point3d();\n public auxRotationPlane = 0;\n public contextRotMode = 0;\n public fixedOrg = false;\n public ignoreDataButton = true; // By default the data point that terminates a view tool or input collector should be ignored...\n public ignoreFlags: AccuDrawFlags = 0;\n}\n\n/** @internal */\nexport class ThreeAxes {\n public readonly x = Vector3d.unitX();\n public readonly y = Vector3d.unitY();\n public readonly z = Vector3d.unitZ();\n public setFrom(other: ThreeAxes) {\n this.x.setFrom(other.x);\n this.y.setFrom(other.y);\n this.z.setFrom(other.z);\n }\n public fromMatrix3d(rMatrix: Matrix3d): void {\n rMatrix.getRow(0, this.x);\n rMatrix.getRow(1, this.y);\n rMatrix.getRow(2, this.z);\n }\n public static createFromMatrix3d(rMatrix: Matrix3d, result?: ThreeAxes): ThreeAxes {\n result = result ? result : new ThreeAxes();\n result.fromMatrix3d(rMatrix);\n return result;\n }\n public toMatrix3d(out?: Matrix3d) { return Matrix3d.createRows(this.x, this.y, this.z, out); }\n public clone(): ThreeAxes {\n const out = new ThreeAxes();\n out.setFrom(this);\n return out;\n }\n\n public equals(other: ThreeAxes): boolean { return this.x.isExactEqual(other.x) && this.y.isExactEqual(other.y) && this.z.isExactEqual(other.z); }\n}\n\n/** Accudraw is an aide for entering coordinate data.\n * This class is public to allow applications to provide a user interface for AccuDraw, either by implementing their own, or\n * using the one supplied by the itwin appui package.\n * @note When writing an [[InteractiveTool]] it is not correct to call methods on AccuDraw directly, tools should instead\n * provide hints to AccuDraw using [[AccuDrawHintBuilder]].\n * @public\n */\nexport class AccuDraw {\n private _currentState = CurrentState.NotEnabled;\n\n /** Current AccuDraw state */\n public get currentState(): CurrentState { return this._currentState; }\n public set currentState(state: CurrentState) {\n if (state === this._currentState)\n return;\n\n const wasActive = this.isActive;\n this._currentState = state;\n\n if (wasActive !== this.isActive)\n this.onCompassDisplayChange(wasActive ? \"hide\" : \"show\");\n }\n\n /** The current compass mode */\n public compassMode = CompassMode.Rectangular;\n /** The current compass rotation */\n public rotationMode = RotationMode.View;\n /** @internal */\n public currentView?: ScreenViewport; // will be nullptr if view not yet defined\n /** @internal */\n public readonly published = new AccudrawData(); // Staging area for hints\n /** @internal */\n public readonly origin = new Point3d(); // origin point...not on compass plane when z != 0.0\n /** @internal */\n public readonly axes = new ThreeAxes(); // X, Y and Z vectors (3d rotation matrix)\n /** @internal */\n public readonly delta = Vector3d.unitZ(); // dialog items (x, y & z)\n private _distance = 0; // current distance\n private _angle = 0; // current angle\n /** @internal */\n public locked = LockedStates.NONE_LOCKED; // axis/distance locked bit mask\n /** @internal */\n public indexed = LockedStates.NONE_LOCKED; // axis/distance indexed bit mask\n private readonly _distanceRoundOff = new RoundOff(); // distance round off enabled and unit\n private readonly _angleRoundOff = new RoundOff(); // angle round off enabled and unit\n /** @internal */\n public readonly flags = new Flags(); // current state flags\n private readonly _fieldLocked: [boolean, boolean, boolean, boolean, boolean] = [false, false, false, false, false]; // locked state of fields\n private readonly _keyinStatus: [KeyinStatus, KeyinStatus, KeyinStatus, KeyinStatus, KeyinStatus] = [KeyinStatus.Dynamic, KeyinStatus.Dynamic, KeyinStatus.Dynamic, KeyinStatus.Dynamic, KeyinStatus.Dynamic]; // state of input field\n /** @internal */\n public readonly savedStateViewTool = new SavedState(); // Restore point for shortcuts/tools...\n /** @internal */\n public readonly savedStateInputCollector = new SavedState(); // Restore point for shortcuts/tools...\n private readonly _savedDistances: number[] = []; // History of previous distances...\n private readonly _savedAngles: number[] = []; // History of previous angles...\n private _savedDistanceIndex = -1; // Current saved distance index for choosing next/previous value...\n private _savedAngleIndex = -1; // Current saved distance index for choosing next/previous value...\n /** @internal */\n public readonly baseAxes = new ThreeAxes(); // Used for \"context\" base rotation to hold arbitrary rotation w/o needing to change ACS...\n /** @internal */\n public readonly lastAxes = new ThreeAxes(); // Last result from UpdateRotation, replaces cM.rMatrix...\n private _lastDistance = 0; // previous saved distance or distance indexing tick\n private _tolerance = 0; // computed view based indexing tolerance\n private _percentChanged = 0; // Compass animation state\n private _threshold = 0; // Threshold for automatic x/y field focus change.\n private _lastSnapDetail?: { point: Point3d, matrix: Matrix3d, sourceId: Id64String, isTentative: boolean, deselect?: boolean, indexed?: true };\n /** @internal */\n public readonly planePt = new Point3d(); // same as origin unless non-zero locked z value\n private readonly _rawDelta = new Point2d(); // used by rect fix point\n private readonly _rawPoint = new Point3d(); // raw uor point passed to fix point\n private readonly _rawPointOnPlane = new Point3d(); // adjusted rawPoint by applying hard/soft construction plane\n /** @internal */\n public readonly point = new Point3d(); // current cursor point\n /** @internal */\n public readonly vector = Vector3d.unitZ(); // current/last good locked direction\n private _xIsNegative = false; // Last delta.x was negative\n private _yIsNegative = false; // Last delta.y was negative\n private _xIsExplicit = false; // Sign of delta.x established from user input input, don't allow +/- side flip.\n private _yIsExplicit = false; // Sign of delta.y established from user input input, don't allow +/- side flip.\n /** Disable automatic focus change when user is entering input. */\n public dontMoveFocus = false;\n /** Set input field to move focus to (X_Item or Y_Item) for automatic focus change. */\n public newFocus = ItemField.X_Item;\n private readonly _rMatrix = new Matrix3d();\n /** @internal */\n protected _acsPickId?: string;\n\n // Compass Display Preferences...\n /** @internal */\n protected _compassSizeInches = 0.44;\n /** @internal */\n protected _animationFrames = 12;\n /** @internal */\n protected _indexToleranceInches = 0.11;\n /** @internal */\n protected readonly _frameColor = ColorDef.create(ColorByName.lightGrey);\n /** @internal */\n protected readonly _fillColor = ColorDef.create(ColorByName.blue);\n /** @internal */\n protected readonly _xColor = ColorDef.create(ColorByName.red);\n /** @internal */\n protected readonly _yColor = ColorDef.create(ColorByName.green);\n /** @internal */\n protected readonly _indexColor = ColorDef.create(ColorByName.white);\n /** @internal */\n protected readonly _frameColorNoFocus = ColorDef.create(ColorByName.darkGrey);\n /** @internal */\n protected readonly _fillColorNoFocus = ColorDef.create(ColorByName.lightGrey);\n\n /** When true improve behavior for +/- input when cursor switches side and try to automatically manage focus */\n public smartKeyin = true;\n /** When true the compass follows the origin hint as opposed to remaining at a fixed location */\n public floatingOrigin = true;\n /** When true the z input field will remain locked with it's current value after a data button */\n public stickyZLock = false;\n /** When true the compass is always active and on screen instead of following the current tools request to activate */\n public alwaysShowCompass = false;\n /** When true all tool hints are applied as opposed to only selected hints */\n public contextSensitive = true;\n /** When true the current point is adjusted to the x and y axes when within a close tolerance */\n public axisIndexing = true;\n /** When true the current point is adjusted to the last locked distance value when within a close tolerance */\n public distanceIndexing = true;\n /** When true locking the angle also moves focus to the angle input field */\n public autoFocusFields = true;\n /** When true fully specifying a point by entering both distance and angle in polar mode or XY[Z] in rectangular mode, the point is automatically accepted */\n public autoPointPlacement = false;\n /** When true and axisIndexing is allowed the current point is adjusted to the tangent or binormal vector from the last snap when within a close tolerance\n * @beta\n */\n public snapIndexing = true;\n\n /** Get distance round off settings */\n public get distanceRoundOff(): RoundOff { return this._distanceRoundOff; }\n /** Get angle round off settings */\n public get angleRoundOff(): RoundOff { return this._angleRoundOff; }\n\n private static _tempRot = new Matrix3d();\n\n /** @internal */\n public onInitialized() { this.enableForSession(); }\n /** @internal */\n public getRotation(rMatrix?: Matrix3d): Matrix3d {\n if (!rMatrix)\n rMatrix = this._rMatrix;\n\n Matrix3d.createRows(this.axes.x, this.axes.y, this.axes.z, rMatrix);\n return rMatrix;\n }\n\n /** When true AccuDraw is enabled by the application and can be used by interactive tools */\n public get isEnabled(): boolean { return (this.currentState > CurrentState.NotEnabled); }\n /** When true the compass is displayed and adjusting input points for the current interactive tool */\n public get isActive(): boolean { return CurrentState.Active === this.currentState; }\n /** When true the compass is not displayed or adjusting points, but it can be automatically activated by the current interactive tool or via shortcuts */\n public get isInactive(): boolean { return (CurrentState.Inactive === this.currentState); }\n /** When true the compass is not displayed or adjusting points, the current interactive tool has disabled automatic activation, but can still be enabled via shortcuts */\n public get isDeactivated(): boolean { return (CurrentState.Deactivated === this.currentState); }\n\n /** Get the current lock state for the supplied input field */\n public getFieldLock(index: ItemField): boolean { return this._fieldLocked[index]; }\n /** @internal */\n public getKeyinStatus(index: ItemField): KeyinStatus { return this._keyinStatus[index]; }\n /** Get the current keyin status for the supplied input field */\n public isDynamicKeyinStatus(index: ItemField): boolean { return KeyinStatus.Dynamic === this.getKeyinStatus(index) }\n\n /** Get whether AccuDraw currently has input focus */\n public get hasInputFocus() { return true; }\n /** Called to request input focus be set to AccuDraw. Focus is managed by AccuDraw UI. */\n public grabInputFocus() { }\n /** Get default focus item for the current compass mode */\n public defaultFocusItem(): ItemField { return (CompassMode.Polar === this.compassMode ? ItemField.DIST_Item : this.newFocus); }\n\n /** @internal */\n public activate(): void {\n // Upgrade state to inactive so upgradeToActiveState knows it is ok to move to active...\n if (CurrentState.Deactivated === this.currentState)\n this.currentState = CurrentState.Inactive;\n this.upgradeToActiveState();\n }\n\n /** @internal */\n public deactivate() {\n this.downgradeInactiveState();\n // Don't allow compass to come back until user re-enables it...\n if (CurrentState.Inactive === this.currentState)\n this.currentState = CurrentState.Deactivated;\n }\n\n /** Whether to show Z input field in 3d. Sub-classes can override to restrict AccuDraw to 2d input when working in overlays where\n * depth is not important.\n * @note Intended to be used in conjunction with ViewState.allow3dManipulations returning false to also disable 3d rotation and\n * ToolAdmin.acsPlaneSnapLock set to true for projecting snapped points to the view's ACS plane.\n * @see [[ViewState.allow3dManipulations]][[ToolAdmin.acsPlaneSnapLock]]\n */\n public is3dCompass(viewport: Viewport): boolean {\n return viewport.view.is3d();\n }\n\n /** Change current compass input mode to either polar or rectangular */\n public setCompassMode(mode: CompassMode): void {\n if (mode === this.compassMode)\n return;\n\n this.compassMode = mode;\n this.onCompassModeChange();\n }\n\n /** Change current compass orientation */\n public setRotationMode(mode: RotationMode): void {\n if (mode === this.rotationMode)\n return;\n\n this.rotationMode = mode;\n this.onRotationModeChange();\n }\n\n /** Change the lock status for the supplied input field */\n public setFieldLock(index: ItemField, locked: boolean): void {\n if (locked === this._fieldLocked[index])\n return;\n\n this._fieldLocked[index] = locked;\n this.onFieldLockChange(index);\n }\n\n /** @internal */\n public setKeyinStatus(index: ItemField, status: KeyinStatus): void {\n if (status === this._keyinStatus[index])\n return;\n\n this._keyinStatus[index] = status;\n if (KeyinStatus.Dynamic !== status)\n this.dontMoveFocus = true;\n if (KeyinStatus.Partial === status)\n this._threshold = Math.abs(ItemField.X_Item === index ? this._rawDelta.y : this._rawDelta.x) + this._tolerance;\n\n this.onFieldKeyinStatusChange(index);\n }\n\n private needsRefresh(vp: Viewport): boolean {\n if (!this.isEnabled || this.isDeactivated)\n return false;\n\n // Get snap point from AccuSnap/Tentative or use raw point...\n let distance = 0.0;\n let snapPt = this._rawPoint;\n const ptP = this.point;\n const snap = TentativeOrAccuSnap.getCurrentSnap();\n\n if (snap) {\n snapPt = snap.snapPoint;\n distance = ptP.distance(snapPt);\n }\n\n const isRectMode = (CompassMode.Rectangular === this.compassMode);\n const offsetSnap = ((TentativeOrAccuSnap.isHot || IModelApp.tentativePoint.isActive) && ((this.locked) || (distance > 0.0)));\n\n // XY Offset:\n if (offsetSnap) {\n if (isRectMode) {\n let xIsOffset = false, yIsOffset = false;\n\n const vec = ptP.vectorTo(this._rawPointOnPlane);\n const xOffset = vec.dotProduct(this.axes.x);\n const yOffset = vec.dotProduct(this.axes.y);\n\n xIsOffset = (Math.abs(xOffset) > 1.0);\n yIsOffset = (Math.abs(yOffset) > 1.0);\n\n if (xIsOffset || yIsOffset)\n return true;\n }\n }\n\n const isOnCompassPlane = (!vp.view.is3d() || this.flags.pointIsOnPlane || this.isZLocked(vp));\n\n // Z Offset:\n if (offsetSnap) {\n if (isOnCompassPlane) {\n const zOffset = snapPt.distance(this._rawPointOnPlane);\n if (zOffset > Constants.SMALL_ANGLE || zOffset < -Constants.SMALL_ANGLE)\n return true;\n }\n }\n\n // Fat Point:\n if (offsetSnap)\n return true;\n\n let axisIsIndexed = false;\n\n // Axis Indexing:\n if (isRectMode) {\n if ((this.indexed & LockedStates.XY_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\n axisIsIndexed = true;\n } else {\n if ((this.indexed & LockedStates.ANGLE_BM || this.locked & LockedStates.ANGLE_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\n axisIsIndexed = true;\n }\n\n if (axisIsIndexed)\n return true;\n\n // Distance Indexing:\n if (this.indexed & LockedStates.DIST_BM)\n return true;\n\n // XY Lock:\n if (isRectMode) {\n const locked = this.locked & LockedStates.XY_BM;\n\n if ((0 !== locked) && isOnCompassPlane) {\n switch (locked) {\n case LockedStates.X_BM:\n case LockedStates.Y_BM:\n case LockedStates.XY_BM:\n return true;\n }\n }\n }\n\n return false;\n }\n\n private updateLastSnapDetail(vp: ScreenViewport, fromSnap: boolean): void {\n if (!this.snapIndexing || !this.axisIndexing || this.flags.indexLocked || LockedStates.NONE_LOCKED !== this.locked) {\n this._lastSnapDetail = undefined;\n return;\n }\n\n if (!fromSnap) {\n if (this._lastSnapDetail?.deselect)\n this._lastSnapDetail = undefined;\n else if (this._lastSnapDetail)\n this._lastSnapDetail.deselect = false; // Allow moving cursor back to previous snap to clear it...\n return;\n }\n\n const snap = TentativeOrAccuSnap.getCurrentSnap();\n if (undefined === snap || this.origin.isAlmostEqual(snap.getPoint()))\n return;\n\n if (this._lastSnapDetail && this._lastSnapDetail.sourceId === snap.sourceId && this._lastSnapDetail.point.isAlmostEqual(snap.getPoint())) {\n if (false === this._lastSnapDetail.deselect)\n this._lastSnapDetail.deselect = true; // Stop indexing to previous snap...\n return; // Don't compute rotation if location hasn't changed...\n }\n\n const isTentative = IModelApp.tentativePoint.isSnapped;\n if (this._lastSnapDetail?.isTentative && !isTentative)\n return; // Don't update snap from tentative unless it's another tentative to support holding a snap location in a dense drawing...\n\n const rotation = AccuDraw.getSnapRotation(snap, vp);\n if (undefined === rotation)\n return;\n\n this._lastSnapDetail = { point: snap.getPoint().clone(), matrix: rotation, sourceId: snap.sourceId, isTentative };\n }\n\n /** @internal */\n public adjustPoint(pointActive: Point3d, vp: ScreenViewport, fromSnap: boolean): boolean {\n if (!this.isEnabled)\n return false;\n\n const lastWasIndexed = (0 !== this.indexed);\n let pointChanged = false, handled = false;\n\n if (0.0 !== pointActive.z && !vp.isPointAdjustmentRequired)\n pointActive.z = 0.0;\n\n if (1.0 !== vp.view.getAspectRatioSkew())\n this.downgradeInactiveState(); // Disable AccuDraw if skew is applied with AccuDraw already active...\n\n if (this.isInactive) {\n this.point.setFrom(pointActive);\n this.currentView = vp;\n this.fixPoint(pointActive, vp);\n\n if (!fromSnap && IModelApp.accuSnap.currHit)\n this.flags.redrawCompass = true;\n } else if (this.isActive) {\n this.updateLastSnapDetail(vp, fromSnap);\n\n const lastPt = this.point.clone();\n this.fixPoint(pointActive, vp);\n\n pointChanged = !lastPt.isExactEqual(this.point);\n this.processHints();\n handled = true;\n } else {\n this.currentView = vp; // Keep view up to date...\n }\n\n // If redraw of compass isn't required (yet!) check if needed...\n if (!this.flags.redrawCompass && this.isActive) {\n // Redraw required to erase/draw old/new indexing geometry...\n if (pointChanged && (lastWasIndexed || this.needsRefresh(vp)))\n this.flags.redrawCompass = true;\n }\n // Redraw is necessary, force decorators to be called...\n if (this.flags.redrawCompass)\n vp.invalidateDecorations();\n\n return handled;\n }\n\n private setDefaultOrigin(vp?: Viewport): void {\n if (!vp || this.locked || this._fieldLocked[ItemField.Z_Item])\n return;\n\n const view = vp.view;\n const rMatrix = view.getRotation();\n const acsOrigin = vp.getAuxCoordOrigin();\n rMatrix.multiplyVectorInPlace(acsOrigin);\n\n const origin = view.getCenter();\n view.getRotation().multiplyVectorInPlace(origin);\n origin.z = acsOrigin.z;\n view.getRotation().multiplyTransposeVectorInPlace(origin);\n\n this.origin.setFrom(origin); // View center at acs z...\n this.planePt.setFrom(origin);\n }\n\n /** @internal */\n public isZLocked(vp: Viewport): boolean {\n if (this._fieldLocked[ItemField.Z_Item])\n return true;\n if (vp.isSnapAdjustmentRequired && TentativeOrAccuSnap.isHot)\n return true;\n\n return false;\n }\n\n /** @internal */\n public accountForAuxRotationPlane(rot: ThreeAxes, plane: RotationMode): void {\n // ACS mode now can have \"front\" and \"side\" variations...\n switch (plane) {\n case RotationMode.Top:\n return;\n\n case RotationMode.Front:\n const temp = rot.y.clone();\n rot.y.setFrom(rot.z);\n temp.scale(-1.0, rot.z);\n return;\n\n case RotationMode.Side:\n const temp0 = rot.x.clone();\n rot.x.setFrom(rot.y);\n rot.y.setFrom(rot.z);\n rot.z.setFrom(temp0);\n }\n }\n\n private accountForACSContextLock(vec: Vector3d): void {\n // Base rotation is relative to ACS when ACS context lock is enabled...\n if (!this.currentView || !this.currentView.isContextRotationRequired)\n return;\n\n const rMatrix = AccuDraw.getStandardRotation(StandardViewId.Top, this.currentView, true);\n rMatrix.multiplyTransposeVectorInPlace(vec);\n }\n\n private static useACSContextRotation(vp: Viewport, isSnap: boolean): boolean {\n if (isSnap) {\n if (!vp.isSnapAdjustmentRequired)\n return false;\n } else {\n if (!vp.isContextRotationRequired)\n return false;\n }\n return true;\n }\n\n /** Gets X, Y or Z vector from top, front, (right) side, ACS, or View. */\n private getStandardVector(whichVec: number): Vector3d {\n const vp = this.currentView;\n let rMatrix: Matrix3d;\n let myAxes: ThreeAxes;\n const vecP = Vector3d.createZero();\n switch (this.flags.baseRotation) {\n case RotationMode.Top:\n switch (whichVec) {\n case 0: vecP.x = 1.0; break;\n case 1: vecP.y = 1.0; break;\n case 2: vecP.z = 1.0; break;\n }\n this.accountForACSContextLock(vecP);\n break;\n\n case RotationMode.Front:\n switch (whichVec) {\n case 0: vecP.x = 1.0; break;\n case 1: vecP.z = 1.0; break;\n case 2: vecP.y = -1.0; break;\n }\n this.accountForACSContextLock(vecP);\n break;\n\n case RotationMode.Side:\n switch (whichVec) {\n case 0: vecP.y = 1.0; break;\n case 1: vecP.z = 1.0; break;\n case 2: vecP.x = 1.0; break;\n }\n this.accountForACSContextLock(vecP);\n break;\n\n case RotationMode.ACS:\n rMatrix = vp ? vp.getAuxCoordRotation() : Matrix3d.createIdentity();\n myAxes = ThreeAxes.createFromMatrix3d(rMatrix);\n this.accountForAuxRotationPlane(myAxes, this.flags.auxRotationPlane);\n switch (whichVec) {\n case 0: vecP.setFrom(myAxes.x); break;\n case 1: vecP.setFrom(myAxes.y); break;\n case 2: vecP.setFrom(myAxes.z); break;\n }\n break;\n\n case RotationMode.View:\n rMatrix = vp ? vp.rotation : Matrix3d.createIdentity();\n rMatrix.getRow(whichVec, vecP);\n break;\n\n case RotationMode.Context:\n myAxes = this.baseAxes.clone();\n this.accountForAuxRotationPlane(myAxes, this.flags.auxRotationPlane);\n switch (whichVec) {\n case 0: vecP.setFrom(myAxes.x); break;\n case 1: vecP.setFrom(myAxes.y); break;\n case 2: vecP.setFrom(myAxes.z); break;\n }\n break;\n }\n\n return vecP;\n }\n\n private getBestViewedRotationFromXVector(rotation: ThreeAxes, vp: Viewport): void {\n const viewZ = vp.rotation.getRow(2);\n const vec1 = this.getStandardVector(2);\n const vec2 = this.getStandardVector(1);\n const vec3 = this.getStandardVector(0);\n const rot1 = vec1.crossProduct(rotation.x);\n const rot2 = vec2.crossProduct(rotation.x);\n const rot3 = vec3.crossProduct(rotation.x);\n const useRot1 = (rot1.normalizeWithLength(rot1).mag > 0.00001);\n const useRot2 = (rot2.normalizeWithLength(rot2).mag > 0.00001);\n const useRot3 = (rot3.normalizeWithLength(rot3).mag > 0.00001);\n const dot1 = (useRot1 ? Math.abs(rotation.x.crossProduct(rot1).dotProduct(viewZ)) : -1.0);\n const dot2 = (useRot2 ? Math.abs(rotation.x.crossProduct(rot2).dotProduct(viewZ)) : -1.0);\n const dot3 = (useRot3 ? Math.abs(rotation.x.crossProduct(rot3).dotProduct(viewZ)) : -1.0);\n const max = Math.max(dot1, dot2, dot3);\n\n if (Geometry.isDistanceWithinTol(dot1 - dot2, 0.1) && (max !== dot3))\n rotation.y.setFrom(rot1);\n else if (max === dot1)\n rotation.y.setFrom(rot1);\n else if (max === dot2)\n rotation.y.setFrom(rot2);\n else\n rotation.y.setFrom(rot3);\n\n rotation.z.setFrom(rotation.x.crossProduct(rotation.y));\n }\n\n private getRotationFromVector(rotation: ThreeAxes, whichVec: number): void {\n let vec: Vector3d;\n switch (whichVec) {\n case 0:\n vec = this.getStandardVector(2);\n vec.crossProduct(rotation.x, rotation.y);\n\n if (rotation.y.normalizeWithLength(rotation.y).mag < .00001) {\n vec = this.getStandardVector(1);\n vec.crossProduct(rotation.x, rotation.y);\n rotation.y.normalizeInPlace();\n }\n\n rotation.x.crossProduct(rotation.y, rotation.z);\n break;\n\n case 1:\n vec = this.getStandardVector(2);\n vec.crossProduct(rotation.y, rotation.x);\n\n if (rotation.x.normalizeWithLength(rotation.x).mag < .00001) {\n vec = this.getStandardVector(0);\n vec.crossProduct(rotation.y, rotation.x);\n rotation.x.normalizeInPlace();\n }\n\n rotation.x.crossProduct(rotation.y, rotation.z);\n break;\n\n case 2:\n vec = this.getStandardVector(0);\n rotation.z.crossProduct(vec, rotation.y);\n\n if (rotation.y.normalizeWithLength(rotation.y).mag < .00001) {\n vec = this.getStandardVector(1);\n vec.crossProduct(rotation.z, rotation.x);\n rotation.x.normalizeInPlace();\n rotation.z.crossProduct(rotation.x, rotation.y);\n } else {\n rotation.y.crossProduct(rotation.z, rotation.x);\n }\n break;\n }\n }\n\n /** @internal */\n public updateRotation(animate: boolean = false, newRotationIn?: Matrix3d): void {\n let clearLocks = true;\n const oldRotation = this.axes.clone();\n let rMatrix: Matrix3d;\n let newRotation: ThreeAxes;\n\n if (!newRotationIn)\n newRotation = this.axes.clone(); // for axis based\n else\n newRotation = ThreeAxes.createFromMatrix3d(newRotationIn); // for animating context rotation change...\n\n const vp = this.currentView;\n const useACS = vp ? vp.isContextRotationRequired : false;\n\n switch (this.rotationMode) {\n case RotationMode.Top:\n // Get standard rotation relative to ACS when ACS context lock is enabled...\n newRotation.fromMatrix3d(AccuDraw.getStandardRotation(StandardViewId.Top, vp, useACS));\n this.flags.lockedRotation = true;\n break;\n\n case RotationMode.Front:\n // Get standard rotation relative to ACS when ACS context lock is enabled...\n newRotation.fromMatrix3d(AccuDraw.getStandardRotation(StandardViewId.Front, vp, useACS));\n this.flags.lockedRotation = true;\n break;\n\n case RotationMode.Side:\n // Get standard rotation relative to ACS when ACS context lock is enabled...\n newRotation.fromMatrix3d(AccuDraw.getStandardRotation(StandardViewId.Right, vp, useACS));\n this.flags.lockedRotation = true;\n break;\n\n case RotationMode.ACS:\n rMatrix = vp ? vp.getAuxCoordRotation() : Matrix3d.createIdentity();\n newRotation.fromMatrix3d(rMatrix);\n this.accountForAuxRotationPlane(newRotation, this.flags.auxRotationPlane);\n this.flags.lockedRotation = true;\n break;\n\n case RotationMode.View:\n rMatrix = vp ? vp.rotation : Matrix3d.createIdentity();\n newRotation.fromMatrix3d(rMatrix);\n this.flags.lockedRotation = false;\n break;\n\n case RotationMode.Context:\n switch (this.flags.contextRotMode) {\n case ContextMode.XAxis:\n this.getRotationFromVector(newRotation, 0);\n clearLocks = (LockedStates.Y_BM !== this.locked || !oldRotation.x.isExactEqual(newRotation.x)); // Try to keep locked axis when tool being unsuspended...\n break;\n\n case ContextMode.XAxis2:\n if (vp)\n this.getBestViewedRotationFromXVector(newRotation, vp); // Use base rotation axis that results in compass being most closely aligned to view direction....\n else\n this.getRotationFromVector(newRotation, 0);\n clearLocks = (LockedStates.Y_BM !== this.locked || !oldRotation.x.isExactEqual(newRotation.x)); // Try to keep locked axis when tool being unsuspended...\n break;\n\n case ContextMode.YAxis:\n this.getRotationFromVector(newRotation, 1);\n clearLocks = (LockedStates.X_BM !== this.locked || !oldRotation.y.isExactEqual(newRotation.y)); // Try to keep locked axis when tool being unsuspended...\n break;\n\n case ContextMode.ZAxis:\n this.getRotationFromVector(newRotation, 2);\n break;\n\n case ContextMode.Locked:\n break;\n }\n break;\n }\n\n const isChanged = !oldRotation.equals(newRotation);\n\n // unlock stuff if rotation has changed\n if (isChanged && clearLocks && (CompassMode.Rectangular === this.compassMode || !this._fieldLocked[ItemField.DIST_Item] || animate)) {\n this.locked = this.indexed = LockedStates.NONE_LOCKED;\n this.unlockAllFields();\n }\n\n this.axes.setFrom(newRotation);\n this.lastAxes.setFrom(newRotation);\n this.flags.redrawCompass = true;\n\n // If animate frame preference is set...\n if (!animate || !vp)\n return;\n\n // AccuDrawAnimatorPtr animator = AccuDrawAnimator:: Create();\n // viewport -> SetAnimator(* animator);\n // animator -> ChangeOfRotation(Matrix3d:: FromColumnVectors(oldRotation[0], oldRotation[1], oldRotation[2]));\n }\n\n /**\n * Enable AccuDraw so that it can be used by interactive tools.\n * This method is public to allow applications to provide a user interface to enable/disable AccuDraw.\n * @note Should not be called by interactive tools, those should use [[AccuDrawHintBuilder]]. AccuDraw is enabled for applications by default.\n * @see [[disableForSession]]\n */\n public enableForSession(): void {\n if (CurrentState.NotEnabled === this.currentState)\n this.currentState = CurrentState.Inactive;\n }\n\n /**\n * Disable AccuDraw so that it can not be used by interactive tools.\n * This method is public to allow applications to provide a user interface to enable/disable AccuDraw.\n * @note Should not be called by interactive tools, those should use [[AccuDrawHintBuilder]]. AccuDraw is enabled for applications by default.\n * @see [[enableForSession]]\n */\n public disableForSession(): void {\n this.currentState = CurrentState.NotEnabled;\n this.flags.redrawCompass = true; // Make sure decorators are called so we don't draw (i.e. erase AccuDraw compass)\n }\n\n /** @internal */\n public setLastPoint(pt: Point3d): void {\n const viewport = this.currentView;\n if (!viewport)\n return;\n\n const ev = new BeButtonEvent({ point: pt, rawPoint: pt, viewPoint: viewport.worldToView(pt), viewport });\n IModelApp.toolAdmin.setAdjustedDataPoint(ev);\n }\n\n /** Emulate a mouse click at the specified location in the supplied view by sending button down/up events. */\n public async sendDataPoint(pt: Point3d, viewport: ScreenViewport): Promise<void> {\n const ev = new BeButtonEvent({ point: pt, rawPoint: pt, viewPoint: viewport.worldToView(pt), viewport, inputSource: InputSource.Mouse, isDown: true });\n\n // Send both down and up events...\n await IModelApp.toolAdmin.sendButtonEvent(ev);\n ev.isDown = false;\n return IModelApp.toolAdmin.sendButtonEvent(ev);\n }\n\n /** @internal */\n public clearTentative(): boolean {\n if (!IModelApp.tentativePoint.isActive)\n return false;\n\n const wasSnapped = IModelApp.tentativePoint.isSnapped;\n IModelApp.tentativePoint.clear(true);\n return wasSnapped;\n }\n\n /** @internal */\n public async doAutoPoint(index: ItemField, mode: CompassMode): Promise<void> {\n const vp = this.currentView;\n if (!vp)\n return;\n\n if (CompassMode.Polar === mode) {\n if (!this.autoPointPlacement)\n return;\n\n if (this._fieldLocked[ItemField.DIST_Item] && (this._fieldLocked[ItemField.ANGLE_Item] || this.indexed & LockedStates.ANGLE_BM) && KeyinStatus.Dynamic === this._keyinStatus[index]) {\n this.fixPointPolar(vp);\n return this.sendDataPoint(this.point, vp);\n }\n\n return;\n }\n\n if (this._fieldLocked[ItemField.X_Item] && this._fieldLocked[ItemField.Y_Item]) {\n if (!this.isActive) {\n if (!vp.view.is3d() || this._fieldLocked[ItemField.Z_Item]) {\n const globalOrigin = new Point3d();\n\n if (vp.view.isSpatialView())\n globalOrigin.setFrom(vp.view.iModel.globalOrigin);\n\n return this.sendDataPoint(globalOrigin.plus(this.delta), vp);\n }\n\n return;\n }\n\n if (!this.autoPointPlacement || KeyinStatus.Dynamic !== this._keyinStatus[index])\n return;\n\n this.origin.plus3Scaled(this.axes.x, this.delta.x, this.axes.y, this.delta.y, this.axes.z, this.delta.z, this.point);\n return this.sendDataPoint(this.point, vp);\n }\n\n if (!this.autoPointPlacement || KeyinStatus.Dynamic !== this._keyinStatus[index])\n return;\n\n if ((ItemField.X_Item === index && this._fieldLocked[ItemField.X_Item] && (this.indexed & LockedStates.Y_BM)) || (ItemField.Y_Item === index && this._fieldLocked[ItemField.Y_Item] && (this.indexed & LockedStates.X_BM))) {\n this.origin.plus3Scaled(this.axes.x, this.delta.x, this.axes.y, this.delta.y, this.axes.z, this.delta.z, this.point);\n return this.sendDataPoint(this.point, vp);\n }\n }\n\n /** Get the current value for the supplied input field */\n public getValueByIndex(index: ItemField): number {\n switch (index) {\n case ItemField.X_Item: return this.delta.x;\n case ItemField.Y_Item: return this.delta.y;\n case ItemField.Z_Item: return this.delta.z;\n case ItemField.DIST_Item: return this._distance;\n case ItemField.ANGLE_Item: return this._angle;\n default:\n return 0.0;\n }\n }\n\n /** Set the current value for the supplied input field */\n public setValueByIndex(index: ItemField, value: number): void {\n switch (index) {\n case ItemField.X_Item:\n this.delta.x = value;\n break;\n case ItemField.Y_Item:\n this.delta.y = value;\n break;\n case ItemField.Z_Item:\n this.delta.z = value;\n break;\n case ItemField.DIST_Item:\n this._distance = value;\n break;\n case ItemField.ANGLE_Item:\n this._angle = value;\n break;\n }\n }\n\n private updateVector(angle: number): void {\n this.vector.set(Math.cos(angle), Math.sin(angle), 0.0);\n const rMatrix = this.getRotation();\n rMatrix.multiplyTransposeVectorInPlace(this.vector);\n }\n\n /** Allow the AccuDraw user interface to supply the distance parser */\n public getLengthParser(): ParserSpec | undefined {\n return IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Length);\n }\n\n /** Allow the AccuDraw user interface to supply the distance parser */\n public getLengthFormatter(): FormatterSpec | undefined {\n return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Length);\n }\n\n private stringToDistance(str: string): QuantityParseResult {\n const parserSpec = this.getLengthParser();\n if (parserSpec)\n return parserSpec.parseToQuantityValue(str);\n return { ok: false, error: ParseError.InvalidParserSpec };\n }\n\n private stringFromDistance(distance: number): string {\n const formatterSpec = this.getLengthFormatter();\n let formattedValue = distance.toString();\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(distance, formatterSpec);\n return formattedValue;\n }\n\n /** Allow the AccuDraw user interface to specify bearing */\n public get isBearingMode(): boolean { return this.getAngleParser()?.format.type === FormatType.Bearing; }\n\n /** Allow the AccuDraw user interface to specify bearing directions are always in xy plane */\n public get bearingFixedToPlane2d() { return this.flags.bearingFixToPlane2D; }\n public set bearingFixedToPlane2d(enable: boolean) { this.flags.bearingFixToPlane2D = enable; }\n\n /** Allow the AccuDraw user interface to supply the angle/direction parser */\n public getAngleParser(): ParserSpec | undefined {\n return IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Angle);\n }\n\n /** Allow the AccuDraw user interface to supply the angle/direction formatter */\n public getAngleFormatter(): FormatterSpec | undefined {\n return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Angle);\n }\n\n private stringToAngle(inString: string): QuantityParseResult {\n const parserSpec = this.getAngleParser();\n if (parserSpec)\n return parserSpec.parseToQuantityValue(inString);\n return { ok: false, error: ParseError.InvalidParserSpec };\n }\n\n private stringFromAngle(angle: number): string {\n if (this.isBearingMode && this.flags.bearingFixToPlane2D) {\n const point = Vector3d.create(this.axes.x.x, this.axes.x.y, 0.0);\n const matrix = Matrix3d.createRows(this.axes.x, this.axes.y, this.axes.z);\n if (matrix.determinant() < 0)\n angle = -angle; // Account for left handed rotations...\n\n point.normalizeInPlace();\n let adjustment = Math.acos(point.x);\n\n if (point.y < 0.0)\n adjustment = -adjustment;\n angle += adjustment; // This is the angle measured from design x...\n angle = (Math.PI / 2) - angle; // Account for bearing direction convention...\n\n if (angle < 0)\n angle = (Math.PI * 2) + angle; // Negative bearings aren't valid?\n }\n\n const formatterSpec = this.getAngleFormatter();\n let formattedValue = angle.toString();\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(angle, formatterSpec);\n return formattedValue;\n }\n\n /** Can be called by sub-classes to get a formatted value to display for an AccuDraw input field\n * @see [[onFieldValueChange]]\n */\n public getFormattedValueByIndex(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n if (ItemField.ANGLE_Item === index)\n return this.stringFromAngle(value);\n return this.stringFromDistance(value);\n }\n\n private updateFieldValue(index: ItemField, input: string): BentleyStatus {\n if (input.length === 0)\n return BentleyStatus.ERROR;\n\n if (input.length === 1)\n switch (input) {\n case \":\":\n case \"-\":\n case \"+\":\n case \".\":\n return BentleyStatus.ERROR;\n }\n\n let parseResult;\n\n switch (index) {\n case ItemField.DIST_Item:\n parseResult = this.stringToDistance(input);\n if (Parser.isParsedQuantity(parseResult)) {\n this._distance = parseResult.value;\n break;\n }\n return BentleyStatus.ERROR;\n\n case ItemField.ANGLE_Item:\n parseResult = this.stringToAngle(input);\n if (Parser.isParsedQuantity(parseResult)) {\n if (this.isBearingMode && this.flags.bearingFixToPlane2D)\n this._angle = (Math.PI / 2) - parseResult.value;\n else\n this._angle = parseResult.value;\n break;\n }\n return BentleyStatus.ERROR;\n\n case ItemField.X_Item:\n parseResult = this.stringToDistance(input);\n if (Parser.isParsedQuantity(parseResult)) {\n this.delta.x = parseResult.value;\n\n this._xIsExplicit = (input[0] === \"+\" || input[0] === \"-\");\n if (!this._xIsExplicit) {\n if (this.smartKeyin && this.isActive && this._xIsNegative === (this.delta.x >= 0.0))\n this.delta.x = -this.delta.x;\n }\n break;\n }\n return BentleyStatus.ERROR;\n\n case ItemField.Y_Item:\n parseResult = this.stringToDistance(input);\n if (Parser.isParsedQuantity(parseResult)) {\n this.delta.y = parseResult.value;\n\n this._yIsExplicit = (input[0] === \"+\" || input[0] === \"-\");\n if (!this._yIsExplicit) {\n if (this.smartKeyin && this.isActive && this._yIsNegative === (this.delta.y >= 0.0))\n this.delta.y = -this.delta.y;\n }\n break;\n }\n return BentleyStatus.ERROR;\n\n case ItemField.Z_Item:\n parseResult = this.stringToDistance(input);\n if (Parser.isParsedQuantity(parseResult)) {\n this.delta.z = parseResult.value;\n break;\n }\n return BentleyStatus.ERROR;\n }\n\n return BentleyStatus.SUCCESS;\n }\n\n /** @internal */\n public unlockAllFields(): void {\n this.locked = LockedStates.NONE_LOCKED;;\n\n if (CompassMode.Polar === this.compassMode) {\n if (this._fieldLocked[ItemField.DIST_Item])\n this.setFieldLock(ItemField.DIST_Item, false);\n\n if (this._fieldLocked[ItemField.ANGLE_Item])\n this.setFieldLock(ItemField.ANGLE_Item, false);\n } else {\n if (this._fieldLocked[ItemField.X_Item])\n this.setFieldLock(ItemField.X_Item, false);\n\n if (this._fieldLocked[ItemField.Y_Item])\n this.setFieldLock(ItemField.Y_Item, false);\n }\n\n if (this._fieldLocked[ItemField.Z_Item]) {\n if (this.stickyZLock)\n this.delta.z = 0.0;\n else\n this.setFieldLock(ItemField.Z_Item, false);\n }\n\n this.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic);\n this.setKeyinStatus(ItemField.ANGLE_Item, KeyinStatus.Dynamic);\n this.setKeyinStatus(ItemField.X_Item, KeyinStatus.Dynamic);\n this.setKeyinStatus(ItemField.Y_Item, KeyinStatus.Dynamic);\n this.setKeyinStatus(ItemField.Z_Item, KeyinStatus.Dynamic);\n\n if (!this.smartKeyin)\n this.setFocusItem(CompassMode.Polar === this.compassMode ? ItemField.DIST_Item : ItemField.X_Item);\n\n this.dontMoveFocus = false;\n }\n\n /** produces the normal vector of the closest plane to the view which\n * contains inVec (uses true view rotation, never auxiliary)\n */\n private planeByVectorAndView(normalVec: Vector3d, inVec: Vector3d, vp: Viewport): boolean {\n if (!vp.view.is3d()) {\n normalVec.setFrom(Vector3d.unitZ());\n return true;\n }\n\n const viewNormal = vp.rotation.getRow(2);\n const yVec = viewNormal.crossProduct(inVec);\n\n if (!yVec.normalizeInPlace()) {\n normalVec.setFrom(viewNormal);\n return false;\n }\n\n inVec.crossProduct(yVec, normalVec);\n return true;\n }\n\n private _acosWithLimitCheck(value: number): number {\n if (value >= 1.0)\n return 0.0;\n if (value <= -1.0)\n return Math.PI;\n return Math.acos(value);\n }\n\n private handleDegeneratePolarCase(): void {\n if (!(this.locked & LockedStates.DIST_BM))\n this._distance = 0.0;\n\n if (this.locked & LockedStates.VEC_BM) {\n this._angle = this._acosWithLimitCheck(this.vector.dotProduct(this.axes.x));\n } else if (this.locked & LockedStates.Y_BM) {\n this.vector.setFrom(this.axes.y);\n this._angle = Math.PI / 2.0;\n this.indexed = this.locked;\n } else if (this.locked & LockedStates.X_BM) {\n this.vector.setFrom(this.axes.x);\n this._angle = 0.0;\n this.indexed = this.locked;\n } else {\n // use last good vector\n this._angle = this._acosWithLimitCheck(this.vector.dotProduct(this.axes.x));\n }\n this.origin.plusScaled(this.vector, this._distance, this.point);\n }\n\n private rawDeltaIsValid(rawDelta: number): boolean {\n /* Cursor Distance (*(+/-)) sense testing is not valid when raw delta is\n meaningless (0.0)...to make this change safer only reject the\n raw delta if unit or grid lock is also on. */\n if (0.0 !== rawDelta)\n return true;\n\n // The \"I don't want grid lock\" flag can be set by tools to override the default behavior...\n if (0 === (IModelApp.toolAdmin.toolState.coordLockOvr & CoordinateLockOverrides.Grid))\n return true;\n\n return (!IModelApp.toolAdmin.gridLock);\n }\n\n /** Call from an AccuDraw UI event to check if key is valid for updating the input field value. */\n protected itemFieldInputIsValid(key: string, item: ItemField): boolean {\n if (1 !== key.length)\n return false;\n\n switch (key) {\n case \".\":\n case \",\":\n return true;\n\n case \"'\": // feet/minutes...\n case \"\\\"\": // inches/seconds...\n return true;\n\n case \"°\": // degrees...\n return (ItemField.ANGLE_Item === item); // Allowed for angle input...\n\n case \"N\":\n case \"S\":\n case \"E\":\n case \"W\":\n case \"n\":\n case \"s\":\n case \"e\":\n case \"w\":\n return (ItemField.ANGLE_Item === item && this.isBearingMode); // Allowed for bearing direction input, trumps shortcuts...\n }\n\n if (!Number.isNaN(parseInt(key, 10)))\n return true; // Accept numeric input...\n\n if (key.toLowerCase() !== key.toUpperCase())\n return false; // Treat unhandled letters as potential shortcuts...\n\n // Let parser deal with anything else, like +-/*, etc.\n return true;\n }\n\n /** Call from an AccuDraw UI event to sync the supplied input field value */\n public async processFieldInput(index: ItemField, input: string, synchText: boolean): Promise<void> {\n if (BentleyStatus.SUCCESS !== this.updateFieldValue(index, input)) {\n this._unlockFieldInternal(index); // Don't want keyin status to change when entering '.', etc.\n return;\n }\n\n switch (index) {\n case ItemField.DIST_Item:\n this.distanceLock(synchText, false); // Don't save distance here, partial input...\n await this.doAutoPoint(index, CompassMode.Polar);\n break;\n\n case ItemField.ANGLE_Item:\n this.setFieldLock(index, true);\n\n if (synchText) {\n this.onFieldValueChange(index);\n this.setKeyinStatus(index, KeyinStatus.Dynamic);\n }\n\n if (!this.isBearingMode || !this.flags.bearingFixToPlane2D)\n this.updateVector(this._angle);\n else\n this.vector.set(Math.cos(this._angle), Math.sin(this._angle), 0.0);\n\n this.locked |= LockedStates.VEC_BM;\n await this.doAutoPoint(index, CompassMode.Polar);\n break;\n\n case ItemField.X_Item:\n case ItemField.Y_Item:\n this.locked |= (ItemField.X_Item === index) ? LockedStates.X_BM : LockedStates.Y_BM;\n\n // falls through\n case ItemField.Z_Item:\n this.setFieldLock(index, true);\n if (synchText) {\n this.onFieldValueChange(index);\n this.setKeyinStatus(index, KeyinStatus.Dynamic);\n }\n\n await this.doAutoPoint(index, this.compassMode);\n break;\n }\n\n this.refreshDecorationsAndDynamics();\n }\n\n private _lockFieldInternal(index: ItemField): void {\n if (this._fieldLocked[index])\n return;\n\n this.setFieldLock(index, true);\n\n switch (index) {\n case ItemField.DIST_Item:\n this.distanceLock(true, false);\n break;\n\n case ItemField.ANGLE_Item:\n this.angleLock();\n break;\n\n case ItemField.X_Item:\n this.locked |= LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n this.locked |= LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n break;\n }\n }\n\n private _unlockFieldInternal(index: ItemField): void {\n switch (index) {\n case ItemField.DIST_Item:\n this.locked &= ~LockedStates.DIST_BM;\n break;\n\n case ItemField.ANGLE_Item:\n this.locked &= ~LockedStates.VEC_BM;\n break;\n\n case ItemField.X_Item:\n this.locked &= ~LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n this.locked &= ~LockedStates.Y_BM;\n break;\n }\n\n if (index !== ItemField.Z_Item || !this.stickyZLock)\n this.setFieldLock(index, false);\n }\n\n /** @internal */\n public updateFieldLock(index: ItemField, locked: boolean): void {\n if (locked) {\n this._lockFieldInternal(index);\n return;\n }\n\n this._unlockFieldInternal(index);\n this.setKeyinStatus(index, KeyinStatus.Dynamic);\n }\n\n /** @internal */\n public static getSnapRotation(snap: SnapDetail, currentVp: Viewport | undefined, out?: Matrix3d): Matrix3d | undefined {\n const vp = (undefined !== currentVp) ? currentVp : snap.viewport;\n const snapDetail = snap.primitive?.closestPoint(snap.snapPoint, false);\n const frame = snapDetail?.curve?.fractionToFrenetFrame(snapDetail.fraction);\n\n if (undefined === frame && undefined === snap.normal)\n return undefined;\n\n const zVec = (vp.view.allow3dManipulations() ? (snap.normal?.clone() ?? frame?.matrix.columnZ()) : Vector3d.unitZ());\n if (undefined === zVec)\n return undefined;\n\n const rotation = out ? out : new Matrix3d();\n const viewZ = vp.rotation.rowZ();\n\n zVec.normalizeInPlace();\n if (zVec.dotProduct(viewZ) < 0.0)\n zVec.negate(zVec);\n\n if (frame) {\n const xVec = frame.matrix.columnX();\n xVec.normalizeInPlace();\n const yVec = zVec.unitCrossProduct(xVec);\n\n if (undefined !== yVec) {\n rotation.setColumns(xVec, yVec, zVec);\n rotation.makeRigid();\n rotation.transposeInPlace();\n return rotation;\n }\n }\n\n Matrix3d.createRigidHeadsUp(zVec, undefined, rotation);\n rotation.transposeInPlace();\n return rotation;\n }\n\n /** @internal */\n public static getStandardRotation(nStandard: StandardViewId, vp: Viewport | undefined, useACS: boolean, out?: Matrix3d): Matrix3d {\n const rMatrix = out ? out : new Matrix3d();\n rMatrix.setFrom(ViewState.getStandardViewMatrix(nStandard));\n const useVp = vp ? vp : IModelApp.viewManager.selectedView;\n\n if (!useACS) {\n const globeToWorld = vp?.view.getGlobeRotation();\n if (globeToWorld)\n rMatrix.multiplyMatrixMatrix(globeToWorld, rMatrix);\n }\n\n if (!useACS || !useVp)\n return rMatrix;\n\n rMatrix.multiplyMatrixMatrix(useVp.getAuxCoordRotation(AccuDraw._tempRot), rMatrix);\n return rMatrix;\n }\n\n /** @internal */\n public static getCurrentOrientation(vp: Viewport, checkAccuDraw: boolean, checkACS: boolean, rMatrix?: Matrix3d): Matrix3d | undefined {\n if (checkAccuDraw && IModelApp.accuDraw.isActive)\n return IModelApp.accuDraw.getRotation(rMatrix);\n\n const useVp = vp ? vp : IModelApp.viewManager.selectedView;\n if (!useVp)\n return Matrix3d.createIdentity(rMatrix);\n\n if (checkACS && useVp.isContextRotationRequired)\n return useVp.getAuxCoordRotation(rMatrix);\n\n return useVp.rotation;\n }\n\n /** @internal */\n public static updateAuxCoordinateSystem(acs: AuxCoordSystemState, vp: Viewport, allViews: boolean = true): void {\n // When modeling with multiple spatial views open, you'd typically want the same ACS in all views...\n if (allViews && vp.view.isSpatialView()) {\n for (const otherVp of IModelApp.viewManager) {\n if (otherVp !== vp && otherVp.view.isSpatialView())\n otherVp.view.setAuxiliaryCoordinateSystem(acs);\n }\n }\n\n vp.view.setAuxiliaryCoordinateSystem(acs);\n\n // NOTE: Change AccuDraw's base rotation to ACS.\n IModelApp.accuDraw.setContext(AccuDrawFlags.OrientACS);\n }\n\n /** @internal */\n public distanceLock(synchText: boolean, saveInHistory: boolean): void {\n this.locked |= LockedStates.DIST_BM;\n\n if (!this._fieldLocked[ItemField.DIST_Item])\n this.setFieldLock(ItemField.DIST_Item, true);\n\n if (saveInHistory)\n this.saveCoordinate(ItemField.DIST_Item, this._distance);\n\n if (synchText) {\n this.onFieldValueChange(ItemField.DIST_Item);\n this.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic);\n }\n }\n\n /** @internal */\n public angleLock(): void {\n if (this.indexed & LockedStates.Y_BM)\n this.locked |= LockedStates.Y_BM;\n else if (this.indexed & LockedStates.X_BM)\n this.locked |= LockedStates.X_BM;\n else\n this.locked |= LockedStates.VEC_BM;\n\n this.clearTentative();\n\n if (!this._fieldLocked[ItemField.ANGLE_Item]) {\n this.setFieldLock(ItemField.ANGLE_Item, true);\n this.setKeyinStatus(ItemField.ANGLE_Item, KeyinStatus.Dynamic);\n }\n\n this.flags.lockedRotation = true;\n this.flags.softAngleLock = false;\n }\n\n /** @internal */\n public doLockAngle(isSnapped: boolean): void {\n if (CompassMode.Polar !== this.compassMode) {\n this.locked = LockedStates.NONE_LOCKED;\n this._rawPoint.setFrom(this.point);\n\n const vp = this.currentView;\n if (vp)\n this.fixPointPolar(vp);\n\n this.changeCompassMode(true);\n }\n\n this.setFieldLock(ItemField.ANGLE_Item, !this._fieldLocked[ItemField.ANGLE_Item]);\n\n if (this._fieldLocked[ItemField.ANGLE_Item]) {\n // Move focus to angle field...\n if (!isSnapped && this.autoFocusFields)\n this.setFocusItem(ItemField.ANGLE_Item);\n\n this.angleLock();\n\n if (!isSnapped)\n this.flags.softAngleLock = true;\n } else {\n this.locked &= ~LockedStates.ANGLE_BM;\n this.saveCoordinate(ItemField.ANGLE_Item, this._angle);\n this.setKeyinStatus(ItemField.ANGLE_Item, KeyinStatus.Dynamic);\n }\n }\n\n private saveAngle(value: number): void {\n if (Geometry.isAlmostEqualNumber(value, 0.0) || Geometry.isAlmostEqualNumber(Math.abs(value), Math.PI) || Geometry.isAlmostEqualNumber(Math.abs(value), (Math.PI / 2.0)))\n return; // Don't accept 0, 90, -90, 180 and -180 degrees...\n\n const foundIndex = this._savedAngles.findIndex(angle => Geometry.isAlmostEqualNumber(angle, value));\n if (-1 !== foundIndex) {\n this._savedAngleIndex = foundIndex; // Set index to existing entry with matching value...\n return;\n }\n\n this._savedAngleIndex++;\n if (this._savedAngleIndex >= Constants.MAX_SAVED_VALUES)\n this._savedAngleIndex = 0;\n\n this._savedAngles[this._savedAngleIndex] = value;\n }\n\n private saveDistance(value: number): void {\n if (Geometry.isAlmostEqualNumber(value, 0.0))\n return; // Don't accept zero or nearly zero...\n\n value = Math.abs(value); // Only save positive distance...\n const foundIndex = this._savedDistances.findIndex(distance => Geometry.isAlmostEqualNumber(distance, value));\n if (-1 !== foundIndex) {\n this._savedDistanceIndex = foundIndex; // Set index to existing entry with matching value...\n return;\n }\n\n this._savedDistanceIndex++;\n if (this._savedDistanceIndex >= Constants.MAX_SAVED_VALUES)\n this._savedDistanceIndex = 0;\n\n this._savedDistances[this._savedDistanceIndex] = value;\n this._lastDistance = value;\n }\n\n /** @internal */\n public saveCoordinate(index: ItemField, value: number): void {\n if (ItemField.ANGLE_Item === index)\n this.saveAngle(value);\n else\n this.saveDistance(value);\n }\n\n private getSavedAngle(next: boolean): number | undefined {\n if (-1 === this._savedAngleIndex || 0 === this._savedAngles.length)\n return undefined;\n\n const value = this._savedAngles[this._savedAngleIndex];\n\n if (next) {\n this._savedAngleIndex++;\n if (this._savedAngleIndex >= this._savedAngles.length)\n this._savedAngleIndex = 0;\n }\n else {\n this._savedAngleIndex--;\n if (this._savedAngleIndex < 0)\n this._savedAngleIndex = this._savedAngles.length - 1;\n }\n\n return value;\n }\n\n private getSavedDistance(next: boolean): number | undefined {\n if (-1 === this._savedDistanceIndex || 0 === this._savedDistances.length)\n return undefined;\n\n const value = this._savedDistances[this._savedDistanceIndex];\n\n if (next) {\n this._savedDistanceIndex++;\n if (this._savedDistanceIndex >= this._savedDistances.length)\n this._savedDistanceIndex = 0;\n }\n else {\n this._savedDistanceIndex--;\n if (this._savedDistanceIndex < 0)\n this._savedDistanceIndex = this._savedDistances.length - 1;\n }\n\n return value;\n }\n\n /** @internal */\n public getSavedValue(index: ItemField, next: boolean): void {\n const isAngle = (ItemField.ANGLE_Item === index);\n const savedValue = (isAngle ? this.getSavedAngle(next) : this.getSavedDistance(next));\n if (undefined === savedValue)\n return;\n\n if (!isAngle)\n this._lastDistance = savedValue;\n\n const currValue = this.getValueByIndex(index);\n this.setValueByIndex(index, currValue < 0.0 ? -savedValue : savedValue);\n\n switch (index) {\n case ItemField.X_Item:\n this.setFieldLock(ItemField.X_Item, true);\n this.onFieldValueChange(ItemField.X_Item);\n this.locked |= LockedStates.X_BM;\n break;\n\n case ItemField.Y_Item:\n this.setFieldLock(ItemField.Y_Item, true);\n this.onFieldValueChange(ItemField.Y_Item);\n this.locked |= LockedStates.Y_BM;\n break;\n\n case ItemField.Z_Item:\n this.setFieldLock(ItemField.Z_Item, true);\n this.onFieldValueChange(ItemField.Z_Item);\n break;\n\n case ItemField.DIST_Item:\n this.distanceLock(true, false);\n break;\n\n case ItemField.ANGLE_Item:\n this.locked &= ~LockedStates.XY_BM;\n this.updateVector(this._angle);\n this.angleLock();\n break;\n }\n }\n\n /** @internal */\n public clearSavedValues(): void {\n this._savedDistances.length = this._savedAngles.length = 0;\n this._savedDistanceIndex = this._savedAngleIndex = -1;\n }\n\n /** @internal */\n public changeCompassMode(animate: boolean = false): void {\n this.unlockAllFields(); // Clear locks for the current mode and send change notifications...\n this.setCompassMode(CompassMode.Polar === this.compassMode ? CompassMode.Rectangular : CompassMode.Polar);\n\n const viewport = this.currentView;\n if (!animate || !viewport)\n return;\n\n // AccuDrawAnimatorPtr animator = AccuDrawAnimator:: Create();\n // viewport.setAnimator(* animator);\n // animator -> ChangeOfMode();\n }\n\n /** @internal */\n public changeBaseRotationMode(mode: RotationMode): void {\n if (mode > RotationMode.Context)\n return;\n\n if (RotationMode.Context === mode) {\n // See if it is better to stay with the current base rotation (only care about z)...\n if (RotationMode.Context !== this.flags.baseRotation) {\n const baseRMatrix = this.getBaseRotation();\n const baseZ = baseRMatrix.getRow(2);\n\n if (baseZ.isParallelTo(this.axes.z, true))\n return;\n }\n\n this.baseAxes.setFrom(this.axes);\n this.flags.auxRotationPlane = RotationMode.Top;\n }\n\n this.flags.baseRotation = mode;\n }\n\n private getBaseRotation(): Matrix3d {\n const vp = this.currentView;\n let baseRMatrix: Matrix3d;\n const useAcs = vp ? vp.isContextRotationRequired : false;\n switch (this.flags.baseRotation) {\n case RotationMode.Top: {\n baseRMatrix = AccuDraw.getStandardRotation(StandardViewId.Top, vp, useAcs);\n break;\n }\n\n case RotationMode.Front: {\n baseRMatrix = AccuDraw.getStandardRotation(StandardViewId.Front, vp, useAcs);\n break;\n }\n\n case RotationMode.Side: {\n baseRMatrix = AccuDraw.getStandardRotation(StandardViewId.Right, vp, useAcs);\n break;\n }\n\n case RotationMode.ACS: {\n baseRMatrix = vp ? vp.getAuxCoordRotation() : Matrix3d.createIdentity();\n const axes = ThreeAxes.createFromMatrix3d(baseRMatrix);\n this.accountForAuxRotationPlane(axes, this.flags.auxRotationPlane);\n axes.toMatrix3d(baseRMatrix);\n break;\n }\n\n case RotationMode.View: {\n baseRMatrix = vp ? vp.rotation : Matrix3d.createIdentity();\n break;\n }\n\n case RotationMode.Context: {\n const axes = new ThreeAxes();\n axes.setFrom(this.baseAxes);\n this.accountForAuxRotationPlane(axes, this.flags.auxRotationPlane);\n baseRMatrix = axes.toMatrix3d();\n break;\n }\n\n default: {\n baseRMatrix = Matrix3d.createIdentity();\n break;\n }\n }\n return baseRMatrix;\n }\n\n /** @internal */\n public setContextRotation(rMatrix: Matrix3d, locked: boolean, animate: boolean): void {\n this.flags.lockedRotation = locked;\n this.flags.contextRotMode = locked ? ContextMode.Locked : ContextMode.None;\n this.setRotationMode(RotationMode.Context);\n this.updateRotation(animate, rMatrix);\n }\n\n private clearContext(): void {\n this.published.flags = 0;\n this.flags.rotationNeedsUpdate = true;\n this.flags.fixedOrg = false;\n\n this.newFocus = ItemField.X_Item;\n this.unlockAllFields();\n\n if (this.rotationMode !== this.flags.baseRotation)\n this.setRotationMode(this.flags.baseRotation);\n\n if (this.compassMode !== this.flags.baseMode)\n this.setCompassMode(this.flags.baseMode);\n }\n\n /** @internal */\n public setContext(flags: AccuDrawFlags, originP?: Point3d, orientationP?: Matrix3d | Vector3d, deltaP?: Vector3d, distanceP?: number, angleP?: number, transP?: Transform): BentleyStatus {\n this.published.flags |= flags;\n\n if (flags & AccuDrawFlags.SetOrigin && originP) {\n this.published.origin.setFrom(originP);\n\n if (transP)\n transP.multiplyPoint3d(this.published.origin, this.published.origin);\n }\n\n if (deltaP) {\n this.published.delta.setFrom(deltaP);\n\n if (transP)\n this.published.delta.scaleInPlace(transP.matrix.columnX().magnitude());\n }\n\n if (typeof distanceP === \"number\") {\n this.published.distance = distanceP;\n\n if (transP)\n this.published.distance *= transP.matrix.columnX().magnitude();\n }\n\n if (typeof angleP === \"number\")\n this.published.angle = angleP;\n\n if (orientationP) {\n if (flags & AccuDrawFlags.SetXAxis || flags & AccuDrawFlags.SetNormal || flags & AccuDrawFlags.SetXAxis2) {\n this.published.vector.setFrom(orientationP as Vector3d);\n\n if (transP)\n transP.matrix.multiplyVectorInPlace(this.published.vector);\n\n this.published.vector.normalizeInPlace();\n } else if (flags & AccuDrawFlags.SetRMatrix) {\n this.published.rMatrix.setFrom(orientationP as Matrix3d);\n\n if (transP) {\n this.published.rMatrix.multiplyMatrixMatrix(transP.matrix, this.published.rMatrix);\n this.published.rMatrix.normalizeColumnsInPlace();\n }\n }\n }\n\n if (flags) {\n this.onEventCommon();\n if (!this.flags.haveValidOrigin)\n this.setDefaultOrigin(this.currentView);\n }\n\n return this.isEnabled ? BentleyStatus.SUCCESS : BentleyStatus.ERROR;\n }\n\n private onEventCommon(): void {\n if (this.published.flags & AccuDrawFlags.RedrawCompass) {\n this.flags.indexLocked = true;\n this.flags.redrawCompass = true;\n }\n\n if (this.published.flags & AccuDrawFlags.UpdateRotation) {\n this.flags.indexLocked = true;\n this.flags.contextRotMode = ContextMode.XAxis;\n this.setRotationMode(RotationMode.Context);\n this.updateRotation();\n this.flags.indexLocked = true;\n }\n }\n\n /** @internal */\n public onPrimitiveToolInstall(): boolean {\n this._lastSnapDetail = undefined;\n if (!this.isEnabled)\n return false;\n\n this.onEventCommon();\n this.saveLockedCoords();\n // Setup default starting tool state...\n this.currentState = CurrentState.Inactive;\n this.clearContext();\n if (this.alwaysShowCompass)\n this.activate();\n\n return false;\n }\n\n /** @internal */\n public onViewToolInstall(): boolean {\n if (!this.isEnabled)\n return false;\n\n this.onEventCommon();\n\n const tool = IModelApp.toolAdmin.activeTool;\n if (tool && !(tool instanceof ViewTool))\n this.saveState(this.savedStateViewTool); // Save AccuDraw state of tool being suspended...\n\n this.currentState = CurrentState.Deactivated; // Default to disabled for view tools.\n return false;\n }\n\n /** @internal */\n public onViewToolExit(): boolean {\n if (!this.isEnabled)\n return false;\n\n this.onEventCommon();\n this.restoreState(this.savedStateViewTool); // Restore AccuDraw state of suspended tool...\n return false;\n }\n\n /** @internal */\n public onInputCollectorInstall(): boolean {\n if (!this.isEnabled)\n return false;\n\n this.onEventCommon();\n\n const tool = IModelApp.toolAdmin.activeTool;\n if (tool && !(tool instanceof InputCollector))\n this.saveState(this.savedStateInputCollector); // Save AccuDraw state of tool being suspended...\n\n this.currentState = CurrentState.Inactive; // Default to inactive for input collectors.\n return false;\n }\n\n /** @internal */\n public onInputCollectorExit(): boolean {\n if (!this.isEnabled)\n return false;\n\n this.onEventCommon();\n this.restoreState(this.savedStateInputCollector); // Restore AccuDraw state of suspended tool...\n return false;\n }\n\n /** @internal */\n public saveState(stateBuffer: SavedState): void {\n stateBuffer.state = this.currentState;\n stateBuffer.mode = this.compassMode;\n stateBuffer.rotationMode = this.rotationMode;\n stateBuffer.axes.setFrom(this.axes);\n stateBuffer.origin.setFrom(this.origin);\n stateBuffer.auxRotationPlane = this.flags.auxRotationPlane;\n stateBuffer.contextRotMode = this.flags.contextRotMode;\n stateBuffer.fixedOrg = this.flags.fixedOrg;\n stateBuffer.ignoreDataButton = true;\n stateBuffer.ignoreFlags = 0;\n }\n\n /** @internal */\n public restoreState(stateBuffer: SavedState): void {\n if (0 === (stateBuffer.ignoreFlags & AccuDrawFlags.Disable)) {\n this.currentState = stateBuffer.state;\n }\n\n if (0 === (stateBuffer.ignoreFlags & AccuDrawFlags.SetOrigin)) {\n this.origin.setFrom(stateBuffer.origin);\n this.planePt.setFrom(stateBuffer.origin);\n }\n\n if (0 === (stateBuffer.ignoreFlags & AccuDrawFlags.SetRMatrix)) {\n this.axes.setFrom(stateBuffer.axes);\n this.setRotationMode(stateBuffer.rotationMode);\n this.flags.auxRotationPlane = stateBuffer.auxRotationPlane;\n this.flags.contextRotMode = stateBuffer.contextRotMode;\n }\n\n this.flags.fixedOrg = stateBuffer.fixedOrg;\n this.setCompassMode(stateBuffer.mode);\n this.updateRotation();\n\n if (stateBuffer.ignoreDataButton)\n this.flags.ignoreDataButton = (this.flags.inDataPoint ? true : false);\n }\n\n private getCompassPlanePoint(point: Point3d, vp: Viewport): boolean {\n point.setFrom(this.origin); // Isn't this just planePt?!? Maybe at display time it is not setup yet?!?\n if (this._fieldLocked[ItemField.Z_Item] && vp.view.is3d()) {\n if (0.0 !== this.delta.z && !(this.delta.z < Constants.SMALL_ANGLE && this.delta.z > -Constants.SMALL_ANGLE)) {\n point.addScaledInPlace(this.axes.z, this.delta.z);\n return true;\n }\n }\n return false;\n }\n\n private getDisplayTransform(vp: Viewport): Transform {\n const rMatrix = (!this.flags.animateRotation || 0.0 === this._percentChanged) ? this.axes.toMatrix3d() : this.lastAxes.toMatrix3d();\n const origin = new Point3d(); // Compass origin is adjusted by active z-lock...\n this.getCompassPlanePoint(origin, vp);\n const scale = vp.pixelsFromInches(this._compassSizeInches) * vp.getPixelSizeAtPoint(origin);\n\n rMatrix.transposeInPlace();\n rMatrix.scaleColumns(scale, scale, scale, rMatrix);\n return Transform.createRefs(origin, rMatrix);\n }\n\n private setIndexingTolerance(vp: Viewport) {\n const origin = new Point3d(); // Compass origin is adjusted by active z-lock...\n this.getCompassPlanePoint(origin, vp);\n this._tolerance = vp.pixelsFromInches(this._indexToleranceInches) * vp.getPixelSizeAtPoint(origin);\n if (Constants.SMALL_ANGLE > this._tolerance)\n this._tolerance = Constants.SMALL_ANGLE;\n }\n\n private displayAlignments(graphic: GraphicBuilder, vp: Viewport): void {\n const bgColor = vp.view.backgroundColor;\n const colorIndex = this._indexColor.adjustedForContrast(bgColor, 130);\n const origin = new Point3d(); // Compass origin is adjusted by active z-lock...\n // For non-zero Z value draw indicator line from plane point to compass origin...\n if (this.getCompassPlanePoint(origin, vp)) {\n const colorZ = this._frameColor.adjustedForContrast(bgColor, 155);\n graphic.setSymbology(colorZ, colorZ, 2);\n graphic.addLineString([origin, this.origin]);\n graphic.setSymbology(colorZ, colorZ, 4);\n graphic.addPointString([this.origin]);\n }\n\n // Get snap point from AccuSnap/Tentative or use raw point...\n let distance = 0.0;\n let snapPt = this._rawPoint;\n\n const snap = TentativeOrAccuSnap.getCurrentSnap();\n if (snap) {\n snapPt = snap.snapPoint;\n distance = this.point.distance(snapPt);\n }\n\n const isRectMode = (CompassMode.Rectangular === this.compassMode);\n const offsetSnap = ((TentativeOrAccuSnap.isHot || IModelApp.tentativePoint.isActive) && ((this.locked) || (distance > 0.0)));\n\n // XY Offset:\n if (offsetSnap) {\n if (isRectMode) {\n const vec = this.point.vectorTo(this._rawPointOnPlane);\n const xOffset = vec.dotProduct(this.axes.x);\n const yOffset = vec.dotProduct(this.axes.y);\n const xIsOffset = (Math.abs(xOffset) > 1.0);\n const yIsOffset = (Math.abs(yOffset) > 1.0);\n\n if (xIsOffset) {\n if (yIsOffset) { /* both */\n const pts: Point3d[] = [\n this.point,\n this.point.plusScaled(this.axes.y, yOffset),\n this._rawPointOnPlane,\n this.point.plusScaled(this.axes.x, xOffset)];\n pts[4] = pts[0];\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString(pts);\n } else { /* just X */\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([this.point, this._rawPointOnPlane]);\n }\n } else if (yIsOffset) { /* just Y */\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([this.point, this._rawPointOnPlane]);\n }\n }\n }\n\n const isOnCompassPlane = (!vp.view.is3d() || this.flags.pointIsOnPlane || this.isZLocked(vp));\n\n // Z Offset:\n if (offsetSnap) {\n if (isOnCompassPlane) {\n if (isRectMode) {\n const zOffset = snapPt.distance(this._rawPointOnPlane);\n if (zOffset > Constants.SMALL_ANGLE || zOffset < -Constants.SMALL_ANGLE) {\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([this._rawPointOnPlane, this._rawPoint]);\n }\n } else {\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([this.point, this._rawPoint]);\n }\n }\n }\n\n // Fat Point:\n if (offsetSnap) {\n graphic.setSymbology(colorIndex, colorIndex, 8);\n graphic.addPointString([this.point]);\n }\n\n let axisIsIndexed = false;\n\n // Axis Indexing:\n if (isRectMode) {\n if ((this.indexed & LockedStates.XY_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\n axisIsIndexed = true;\n } else {\n if ((this.indexed & LockedStates.ANGLE_BM || this.locked & LockedStates.ANGLE_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\n axisIsIndexed = true;\n }\n\n if (axisIsIndexed) {\n graphic.setSymbology(colorIndex, colorIndex, 4);\n graphic.addLineString([this.point, this.planePt]);\n }\n\n // Distance Indexing:\n if (this.indexed & LockedStates.DIST_BM) {\n const len = this._tolerance; // Show tick mark based on _GetIndexToleranceInches for length...\n let vec: Vector3d;\n\n if (isRectMode) {\n let index = this.indexed & LockedStates.XY_BM;\n\n if (!index)\n index = this.locked & LockedStates.XY_BM;\n\n vec = (index === LockedStates.X_BM) ? this.axes.x : this.axes.y;\n } else {\n const deltaVec = this.origin.vectorTo(this.point);\n vec = this.axes.z.crossProduct(deltaVec);\n vec.normalizeInPlace();\n }\n\n graphic.setSymbology(colorIndex, colorIndex, 3);\n graphic.addLineString([this.point.plusScaled(vec, len), this.point.plusScaled(vec, -len)]);\n }\n\n // XY Lock:\n if (isRectMode && !axisIsIndexed) {\n const locked = this.locked & LockedStates.XY_BM;\n\n if ((0 !== locked) && isOnCompassPlane) {\n const pts: Point3d[] = [this.point, this.point, this.point];\n\n if (locked & LockedStates.X_BM)\n pts[2].setFrom(this.planePt.plusScaled(this.axes.x, this.delta.x));\n\n if (locked & LockedStates.Y_BM)\n pts[0].setFrom(this.planePt.plusScaled(this.axes.y, this.delta.y));\n\n switch (locked) {\n case LockedStates.X_BM:\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([pts[1], pts[2]]);\n break;\n\n case LockedStates.Y_BM:\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([pts[0], pts[1]]);\n break;\n\n case LockedStates.XY_BM:\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString(pts);\n break;\n }\n }\n }\n\n if (undefined !== this._lastSnapDetail && undefined === snap) {\n if (this._lastSnapDetail.indexed) {\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\n graphic.addLineString([this.point, this._lastSnapDetail.point]);\n }\n\n graphic.setSymbology(colorIndex, colorIndex, 8, LinePixels.Solid);\n graphic.addPointString([this._lastSnapDetail.point]);\n }\n }\n\n /** @internal */\n public testDecorationHit(id: string): boolean { return id === this._acsPickId; }\n /** @internal */\n public getDecorationGeometry(hit: HitDetail): GeometryStreamProps | undefined {\n if (!hit.viewport.viewFlags.acsTriad)\n return undefined;\n const geomData = GeomJson.Writer.toIModelJson(PointString3d.create(hit.viewport.view.auxiliaryCoordinateSystem.getOrigin()));\n if (undefined === geomData)\n return undefined;\n const acsGeom: GeometryStreamProps = [geomData];\n return acsGeom;\n }\n\n /** @internal */\n public decorate(context: DecorateContext) {\n if (context.viewport.viewFlags.acsTriad) {\n context.viewport.view.auxiliaryCoordinateSystem.display(context, (ACSDisplayOptions.CheckVisible | ACSDisplayOptions.Active));\n if (undefined === this._acsPickId)\n this._acsPickId = context.viewport.iModel.transientIds.getNext();\n const acsPickBuilder = context.createGraphicBuilder(GraphicType.WorldDecoration, undefined, this._acsPickId);\n const color = ColorDef.blue.adjustedForContrast(context.viewport.view.backgroundColor, 50);\n acsPickBuilder.setSymbology(color, color, 6);\n acsPickBuilder.addPointString([context.viewport.view.auxiliaryCoordinateSystem.getOrigin()]);\n context.addDecorationFromBuilder(acsPickBuilder);\n }\n\n // Make sure this is cleared even if we do nothing...redraw might have been to make compass go away...\n this.flags.redrawCompass = false;\n\n // Check that AccuDraw is enabled...\n if (!this.isActive)\n return;\n\n const vp = context.viewport;\n if (this.currentView !== vp) // Do nothing if AccuDraw is not enabled for this view...\n return;\n\n this.setIndexingTolerance(vp);\n\n // Display indexing lines, distance locks, etc. without compass transform...\n let builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n this.displayAlignments(builder, vp);\n context.addDecorationFromBuilder(builder);\n\n // Create a new graphics with the compass transform and scale so that compass size is 1.0...\n builder = context.createGraphicBuilder(GraphicType.WorldOverlay, this.getDisplayTransform(vp));\n\n const hasFocus = this.hasInputFocus;\n const bgColor = vp.view.backgroundColor;\n const frameColor = (hasFocus ? this._frameColor : this._frameColorNoFocus).adjustedForContrast(bgColor, 155);\n const fillColor = (hasFocus ? this._fillColor : this._fillColorNoFocus).adjustedForContrast(bgColor, 75);\n const xColor = (hasFocus ? this._xColor : this._frameColorNoFocus).adjustedForContrast(bgColor, 155);\n const yColor = (hasFocus ? this._yColor : this._frameColorNoFocus).adjustedForContrast(bgColor, 155);\n const shadowColor = frameColor;\n\n // Display compass frame...\n builder.setSymbology(shadowColor, fillColor, 1);\n const center = Point3d.createZero();\n\n if (this.flags.animateRotation || 0.0 === this._percentChanged) {\n if (CompassMode.Polar === this.compassMode) {\n const ellipse = Arc3d.createXYEllipse(center, 1, 1);\n builder.addArc(ellipse, true, true);\n builder.addArc(ellipse, false, false);\n } else {\n const pts: Point3d[] = [\n new Point3d(-1.0, 1.0, 0.0),\n new Point3d(1.0, 1.0, 0.0),\n new Point3d(1.0, -1.0, 0.0),\n new Point3d(-1.0, -1.0, 0.0)];\n pts[4] = pts[0].clone();\n builder.addShape(pts);\n builder.addLineString(pts);\n }\n } else {\n let nSides, radius;\n const minSides = 7, maxSides = 24, factor = 1.0 / 5.0;\n\n // if currently animating change to polar need to get larger radius...go between 1.0 && 1.0 * sqrt (2.0)\n if (CompassMode.Polar === this.compassMode) {\n nSides = minSides + Math.floor(maxSides * this._percentChanged);\n radius = 1.0 + factor - (factor * this._percentChanged);\n } else {\n nSides = (maxSides - Math.floor(maxSides * this._percentChanged)) + minSides;\n radius = 1.0 + (factor * this._percentChanged);\n }\n\n let angle = 0.0;\n const delta = (Math.PI * 2) / nSides;\n const pts: Point3d[] = [];\n\n for (let iSide = 0; iSide < nSides; iSide++, angle += delta)\n pts[iSide] = new Point3d(radius * Math.cos(angle), radius * Math.sin(angle), 0.0);\n pts[nSides] = pts[0].clone();\n\n builder.addShape(pts);\n builder.addLineString(pts);\n }\n\n // Display sticky z-lock indicator as frame inset...\n if (this._fieldLocked[ItemField.Z_Item] && this.stickyZLock && vp.view.is3d()) {\n builder.setSymbology(frameColor, fillColor, 1);\n\n if (CompassMode.Polar === this.compassMode) {\n const ellipse = Arc3d.createXYEllipse(center, .5, .5);\n builder.addArc(ellipse, false, false);\n } else {\n const pts: Point3d[] = [\n new Point3d(-0.5, 0.5, 0.0),\n new Point3d(0.5, 0.5, 0.0),\n new Point3d(0.5, -0.5, 0.0),\n new Point3d(-0.5, -0.5, 0.0)];\n pts[4] = pts[0].clone();\n builder.addLineString(pts);\n }\n }\n\n // Display compass center mark...\n builder.setSymbology(frameColor, frameColor, 8);\n builder.addPointString([center]);\n\n // Display positive \"X\" tick...\n builder.setSymbology(xColor, xColor, 4);\n builder.addLineString([new Point3d(1.2, 0.0, 0.0), new Point3d(0.8, 0.0, 0.0)]);\n\n // Display negative \"X\" tick...\n builder.setSymbology(frameColor, frameColor, 1);\n builder.addLineString([new Point3d(-1.2, 0.0, 0.0), new Point3d(-0.8, 0.0, 0.0)]);\n\n // Display positive \"Y\" tick...\n builder.setSymbology(yColor, yColor, 4);\n builder.addLineString([new Point3d(0.0, 1.2, 0.0), new Point3d(0.0, 0.8, 0.0)]);\n\n // Display negative \"Y\" tick...\n builder.setSymbology(frameColor, frameColor, 1);\n builder.addLineString([new Point3d(0.0, -1.2, 0.0), new Point3d(0.0, -0.8, 0.0)]);\n\n context.addDecorationFromBuilder(builder); // add compass as world overlay decorator\n }\n\n private checkRotation(): void {\n this.updateRotation();\n\n if (RotationMode.View === this.rotationMode || !this.flags.lockedRotation)\n return;\n\n const vp = this.currentView;\n if (!vp || vp.isCameraOn)\n return;\n\n const viewZRoot = vp.rotation.getRow(2);\n if (!this.axes.z.isPerpendicularTo(viewZRoot))\n return;\n\n const preferY = (Math.abs(this.axes.x.dotProduct(viewZRoot)) < Math.abs(this.axes.y.dotProduct(viewZRoot)));\n\n // NOTE: Cycle rotation to get one that isn't edge-on...\n switch (this.rotationMode) {\n case RotationMode.Top:\n this.setRotationMode(preferY ? RotationMode.Front : RotationMode.Side);\n break;\n case RotationMode.Front:\n this.setRotationMode(preferY ? RotationMode.Top : RotationMode.Side);\n break;\n case RotationMode.Side:\n this.setRotationMode(preferY ? RotationMode.Top : RotationMode.Front);\n break;\n case RotationMode.ACS:\n switch (this.flags.auxRotationPlane) {\n case RotationMode.Top:\n this.flags.auxRotationPlane = preferY ? RotationMode.Front : RotationMode.Side;\n break;\n case RotationMode.Front:\n this.flags.auxRotationPlane = preferY ? RotationMode.Top : RotationMode.Side;\n break;\n case RotationMode.Side:\n this.flags.auxRotationPlane = preferY ? RotationMode.Top : RotationMode.Front;\n break;\n default:\n return;\n }\n break;\n default:\n return;\n }\n\n this.updateRotation();\n this.flags.baseRotation = this.rotationMode;\n }\n\n private saveLockedCoords(): void {\n if (CompassMode.Polar === this.compassMode) {\n if (this._fieldLocked[ItemField.DIST_Item])\n this.saveCoordinate(ItemField.DIST_Item, this._distance);\n if (this._fieldLocked[ItemField.ANGLE_Item])\n this.saveCoordinate(ItemField.ANGLE_Item, this._angle);\n } else {\n if (this._fieldLocked[ItemField.X_Item])\n this.saveCoordinate(ItemField.X_Item, this.delta.x);\n if (this._fieldLocked[ItemField.Y_Item])\n this.saveCoordinate(ItemField.Y_Item, this.delta.y);\n }\n\n const vp = this.currentView;\n if (vp && vp.view.is3d()) {\n if (this._fieldLocked[ItemField.Z_Item])\n this.saveCoordinate(ItemField.Z_Item, this.delta.z);\n }\n }\n\n /** Called after compass state is changed between the active state and one of the disabled states */\n public onCompassDisplayChange(_state: \"show\" | \"hide\"): void { }\n /** Called after compass mode is changed between polar and rectangular */\n public onCompassModeChange(): void { }\n /** Called after compass rotation is changed */\n public onRotationModeChange(): void { }\n /** Called after input field locked state is changed */\n public onFieldLockChange(_index: ItemField) { }\n /** Called after input field value changes */\n public onFieldValueChange(_index: ItemField) { }\n /** Called after input field keyin status changes */\n public onFieldKeyinStatusChange(_index: ItemField) { }\n /** Called to request focus change to the specified input field */\n public setFocusItem(_index: ItemField) { }\n /** Called to get the item field that currently has input focus */\n public getFocusItem(): ItemField | undefined { return undefined; }\n\n private static getMinPolarMag(origin: Point3d): number {\n return (1.0e-12 * (1.0 + origin.magnitude()));\n }\n\n /** projects cursor onto plane in view, or returns an error */\n private constructionPlane(outPtP: Point3d, inPtP: Point3d, pointOnPlaneP: Point3d, normalVectorP: Vector3d, vp: Viewport, perpendicular: boolean): BentleyStatus {\n let fromPtP: Point3d;\n let dotProduct: number;\n let distance: number;\n let projectionVector = new Vector3d();\n\n if (perpendicular) {\n if (AccuDraw.useACSContextRotation(vp, true)) { // Project along ACS axis to AccuDraw plane...\n const rMatrix = vp.getAuxCoordRotation(AccuDraw._tempRot);\n const axes = ThreeAxes.createFromMatrix3d(rMatrix);\n this.accountForAuxRotationPlane(axes, this.flags.auxRotationPlane);\n linePlaneIntersect(outPtP, inPtP, axes.z, pointOnPlaneP, normalVectorP, false);\n } else {\n projectionVector = inPtP.vectorTo(pointOnPlaneP);\n distance = projectionVector.dotProduct(normalVectorP);\n inPtP.plusScaled(normalVectorP, distance, outPtP);\n }\n } else {\n const isCamera = vp.isCameraOn;\n if (vp.view.is3d() && isCamera) {\n const cameraPos = vp.view.getEyePoint();\n fromPtP = cameraPos;\n fromPtP.vectorTo(inPtP, projectionVector).normalizeInPlace();\n } else {\n const rMatrix = vp.rotation;\n fromPtP = inPtP;\n rMatrix.getRow(2, projectionVector);\n }\n\n dotProduct = projectionVector.dotProduct(normalVectorP);\n\n if (Math.abs(dotProduct) < Constants.SMALL_DELTA)\n return BentleyStatus.ERROR; // PARALLEL;\n\n distance = (normalVectorP.dotProduct(pointOnPlaneP) - normalVectorP.dotProduct(fromPtP)) / dotProduct;\n\n if (isCamera && distance < Constants.SMALL_DELTA)\n return BentleyStatus.ERROR; // BEHIND_EYE_POINT;\n\n fromPtP.plusScaled(projectionVector, distance, outPtP);\n }\n\n return BentleyStatus.SUCCESS;\n }\n\n /** @internal */\n public softConstructionPlane(outPtP: Point3d, inPtP: Point3d, pointOnPlaneP: Point3d, normalVectorP: Vector3d, vp: Viewport, isSnap: boolean): boolean {\n if (!vp.isPointAdjustmentRequired) {\n outPtP.setFrom(inPtP);\n return true;\n }\n\n if (isSnap) {\n outPtP.setFrom(inPtP);\n const delta = pointOnPlaneP.vectorTo(outPtP);\n return (Math.abs(normalVectorP.dotProduct(delta)) < Constants.SMALL_DELTA);\n }\n if (BentleyStatus.SUCCESS !== this.constructionPlane(outPtP, inPtP, pointOnPlaneP, normalVectorP, vp, false)) {\n const viewNormal = vp.rotation.getRow(2);\n this.constructionPlane(outPtP, inPtP, pointOnPlaneP, viewNormal, vp, false);\n this.constructionPlane(outPtP, outPtP, pointOnPlaneP, normalVectorP, vp, true);\n return false;\n }\n return true;\n }\n\n /** @internal */\n public hardConstructionPlane(outPtP: Point3d, inPtP: Point3d, pointOnPlaneP: Point3d, normalVectorP: Vector3d, vp: Viewport, isSnap: boolean): boolean {\n if (!vp.isPointAdjustmentRequired) {\n outPtP.setFrom(inPtP);\n return true;\n }\n\n if (BentleyStatus.SUCCESS !== this.constructionPlane(outPtP, inPtP, pointOnPlaneP, normalVectorP, vp, isSnap)) {\n const viewNormal = vp.rotation.getRow(2);\n this.constructionPlane(outPtP, inPtP, pointOnPlaneP, viewNormal, vp, false);\n this.constructionPlane(outPtP, outPtP, pointOnPlaneP, normalVectorP, vp, true);\n }\n\n return true;\n }\n\n private static allowAxisIndexing(pointIsOnPlane: boolean): boolean {\n // NOTE: Normally we don't want indexing overriding a hot snap location. The\n // exception to this is nearest snap. If the nearest snap is in the plane\n // of the AccuDraw compass, it is confusing not having axis indexing.\n if (!TentativeOrAccuSnap.isHot)\n return true;\n\n if (!pointIsOnPlane)\n return false;\n\n const snapDetail = IModelApp.accuSnap.getCurrSnapDetail();\n return (undefined !== snapDetail && (SnapMode.Nearest === snapDetail.snapMode));\n }\n\n private applyDistanceRoundOff(distance: number, vp: Viewport): number | undefined {\n if (!this._distanceRoundOff.active || !this._distanceRoundOff.units.size)\n return undefined;\n\n let roundValue = this._distanceRoundOff.units.values().next().value ?? 0;\n\n if (this._distanceRoundOff.units.size > 1) {\n // NOTE: Set isn't ordered, find smallest entry...\n this._distanceRoundOff.units.forEach((thisRoundValue) => {\n if (thisRoundValue < roundValue)\n roundValue = thisRoundValue;\n });\n\n if (vp.viewDelta.magnitudeXY() < roundValue)\n return undefined; // Smallest rounding value is larger than view...don't use...\n\n const smallScreenDist = 0.0787402; // ~2 mm...\n const pixelSize = vp.getPixelSizeAtPoint(this.origin);\n const screenDist = vp.pixelsFromInches(smallScreenDist) * pixelSize;\n\n this._distanceRoundOff.units.forEach((thisRoundValue) => {\n if (thisRoundValue > roundValue && thisRoundValue < screenDist)\n roundValue = thisRoundValue;\n });\n }\n\n if (roundValue <= 0.0)\n return undefined;\n\n return roundValue * Math.floor((distance / roundValue) + 0.5);\n }\n\n private applyAngleRoundOff(angle: number, distance: number, vp: Viewport): number | undefined {\n if (!this._angleRoundOff.active || !this._angleRoundOff.units.size)\n return undefined;\n\n let roundValue = this._angleRoundOff.units.values().next().value ?? 0;\n\n if (this._angleRoundOff.units.size > 1) {\n // NOTE: Set isn't ordered, find smallest entry...\n this._angleRoundOff.units.forEach((thisRoundValue) => {\n if (thisRoundValue < roundValue)\n roundValue = thisRoundValue;\n });\n\n const circumference = 2.0 * Math.PI * distance;\n const roundDist = circumference / ((2.0 * Math.PI) / roundValue);\n\n if (vp.viewDelta.magnitudeXY() < roundDist)\n return undefined; // Smallest rounding value is larger than view...don't use...\n\n const smallScreenDist = 0.0787402; // ~2 mm...\n const pixelSize = vp.getPixelSizeAtPoint(this.origin);\n const screenDist = vp.pixelsFromInches(smallScreenDist) * pixelSize;\n\n this._angleRoundOff.units.forEach((thisRoundValue) => {\n const thisRoundDist = circumference / ((2.0 * Math.PI) / thisRoundValue);\n if (thisRoundValue > roundValue && thisRoundDist < screenDist)\n roundValue = thisRoundValue;\n });\n }\n\n if (roundValue <= 0.0)\n return undefined;\n\n return roundValue * Math.floor((angle / roundValue) + 0.5);\n }\n\n /** @internal */\n public fixPointPolar(vp: Viewport): void {\n let angleChanged = false;\n let distChanged = false;\n const zLocked = this.isZLocked(vp);\n const xyCorrection = new Point3d();\n\n this.planePt.setFrom(this.origin);\n\n if (zLocked && !(this.delta.z < Constants.SMALL_ANGLE && this.delta.z > -Constants.SMALL_ANGLE))\n this.planePt.addScaledInPlace(this.axes.z, this.delta.z);\n\n if (this.locked & LockedStates.VEC_BM) {\n if (!TentativeOrAccuSnap.isHot) {\n const normVec = new Vector3d();\n this.planeByVectorAndView(normVec, this.vector, vp);\n this.softConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, normVec, vp, false);\n } else {\n this._rawPointOnPlane.setFrom(this._rawPoint);\n this.flags.pointIsOnPlane = false;\n }\n } else {\n if (zLocked) {\n this.hardConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot);\n this.flags.pointIsOnPlane = true;\n } else {\n this.flags.pointIsOnPlane = (this.softConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot) || !!(this.locked & LockedStates.XY_BM));\n }\n }\n\n let delta: Vector3d;\n if (zLocked)\n delta = this.planePt.vectorTo(this._rawPointOnPlane);\n else\n delta = this.origin.vectorTo(this._rawPointOnPlane);\n\n const minPolarMag = AccuDraw.getMinPolarMag(this.origin);\n\n let mag: number;\n if (this.locked & LockedStates.VEC_BM) {\n mag = delta.dotProduct(this.vector);\n xyCorrection.x -= delta.x - mag * this.vector.x;\n xyCorrection.y -= delta.y - mag * this.vector.y;\n xyCorrection.z -= delta.z - mag * this.vector.z;\n this.vector.scale(mag, delta);\n if (mag < 0.0)\n mag = -mag;\n if (mag < minPolarMag) {\n this.handleDegeneratePolarCase();\n return;\n }\n\n this.flags.pointIsOnPlane = (Math.abs(this.axes.z.dotProduct(delta)) < Constants.SMALL_DELTA);\n } else {\n mag = delta.magnitude();\n if (mag < minPolarMag) {\n this.handleDegeneratePolarCase();\n return;\n }\n }\n\n const newPt = this._rawPointOnPlane.plus(xyCorrection);\n xyCorrection.setZero();\n\n // measure angle\n const rotVec = new Point3d();\n rotVec.x = this.axes.x.dotProduct(delta);\n\n // NOTE: Always return angle relative to compass plane...used to return \"angle out of plane\" for points off plane.\n rotVec.y = this.axes.y.dotProduct(delta);\n this._angle = Math.atan2(rotVec.y, rotVec.x);\n\n // constrain angle\n if (this.flags.pointIsOnPlane && !(this.locked & LockedStates.VEC_BM)) {\n if (!TentativeOrAccuSnap.isHot) {\n const newAngle = this.applyAngleRoundOff(this._angle, mag, vp);\n if (undefined !== newAngle) {\n angleChanged = true;\n this._angle = newAngle;\n xyCorrection.x += Math.cos(this._angle) * mag - rotVec.x;\n xyCorrection.y += Math.sin(this._angle) * mag - rotVec.y;\n rotVec.x = Math.cos(this._angle) * mag;\n rotVec.y = Math.sin(this._angle) * mag;\n }\n }\n\n if (this.locked & LockedStates.X_BM || (AccuDraw.allowAxisIndexing(this.flags.pointIsOnPlane) && (rotVec.x < this._tolerance && rotVec.x > - this._tolerance) && !this.flags.indexLocked && this.axisIndexing)) {\n this.indexed |= LockedStates.X_BM; // indexed in X\n\n xyCorrection.x -= rotVec.x;\n rotVec.x = 0.0;\n\n if (TentativeOrAccuSnap.isHot)\n xyCorrection.z -= delta.dotProduct(this.axes.z);\n\n this._angle = (rotVec.y < 0.0) ? -Math.PI / 2.0 : Math.PI / 2.0;\n angleChanged = true;\n }\n\n if (this.locked & LockedStates.Y_BM || (AccuDraw.allowAxisIndexing(this.flags.pointIsOnPlane) && (rotVec.y < this._tolerance && rotVec.y > -this._tolerance) && !this.flags.indexLocked && this.axisIndexing)) {\n if (this.indexed & LockedStates.X_BM) { // both indexed\n this.handleDegeneratePolarCase();\n return;\n }\n\n this.indexed |= LockedStates.Y_BM; // indexed in Y\n xyCorrection.y -= rotVec.y;\n\n if (TentativeOrAccuSnap.isHot)\n xyCorrection.z -= delta.dotProduct(this.axes.z);\n\n rotVec.y = 0.0;\n this._angle = (rotVec.x < 0.0) ? Math.PI : 0.0;\n angleChanged = true;\n }\n\n if (angleChanged) {\n this.axes.x.scale(rotVec.x, delta);\n delta.addScaledInPlace(this.axes.y, rotVec.y);\n mag = delta.magnitude();\n if (mag < minPolarMag) {\n this.handleDegeneratePolarCase();\n return;\n }\n }\n }\n\n // constrain distance\n const oldMag = mag;\n\n if (this.locked & LockedStates.DIST_BM) { // distance locked\n mag = this._distance;\n distChanged = true;\n this.indexed &= ~LockedStates.DIST_BM;\n } else if (!TentativeOrAccuSnap.isHot) { // if non-snap, try rounding and aligning\n const newDist = this.applyDistanceRoundOff(mag, vp);\n if (undefined !== newDist) {\n distChanged = true;\n mag = newDist;\n }\n\n if (Geometry.isDistanceWithinTol(mag - this._lastDistance, this._tolerance) && !this.flags.indexLocked && this.distanceIndexing) {\n this.indexed |= LockedStates.DIST_BM; // distance indexed\n mag = this._lastDistance;\n distChanged = true;\n }\n }\n\n // project to corrected point\n newPt.plus3Scaled(this.axes.x, xyCorrection.x, this.axes.y, xyCorrection.y, this.axes.z, xyCorrection.z, newPt);\n\n // display index highlight even if snapped\n if (TentativeOrAccuSnap.isHot && this.flags.pointIsOnPlane) {\n if (Math.abs(rotVec.x) < Constants.SMALL_ANGLE)\n this.indexed |= LockedStates.X_BM;\n else if (Math.abs(rotVec.y) < Constants.SMALL_ANGLE)\n this.indexed |= LockedStates.Y_BM;\n }\n\n if (distChanged) {\n if (mag < minPolarMag && mag > -minPolarMag) {\n this.handleDegeneratePolarCase();\n return;\n }\n\n // adjust corrected point for distance indexing\n newPt.addScaledInPlace(delta, mag / oldMag - 1.0);\n delta.scaleInPlace(mag / oldMag);\n }\n\n // save corrected point\n this.point.setFrom(newPt);\n\n // finish up\n this._distance = mag;\n\n if (!(this.locked & LockedStates.VEC_BM))\n delta.scale(1.0 / mag, this.vector);\n\n if (this.locked & LockedStates.XY_BM)\n this.indexed |= this.locked;\n\n if (!zLocked)\n this.delta.z = (this.flags.pointIsOnPlane) ? 0.0 : delta.dotProduct(this.axes.z);\n }\n\n /** @internal */\n public fixPointRectangular(vp: Viewport): void {\n const zLocked = this.isZLocked(vp);\n const xyCorrection = new Vector3d();\n\n this.planePt.setFrom(this.origin);\n this.indexed = 0;\n\n if (zLocked) {\n this.flags.pointIsOnPlane = (this.delta.z < Constants.SMALL_ANGLE && this.delta.z > -Constants.SMALL_ANGLE);\n if (!this.flags.pointIsOnPlane)\n this.planePt.addScaledInPlace(this.axes.z, this.delta.z);\n this.hardConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot);\n } else {\n this.flags.pointIsOnPlane = this.softConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.origin, this.axes.z, vp, TentativeOrAccuSnap.isHot);\n }\n\n const trueDelta = this.origin.vectorTo(this._rawPointOnPlane);\n this._rawDelta.x = trueDelta.dotProduct(this.axes.x);\n this._xIsNegative = (this._rawDelta.x < -Constants.SMALL_ANGLE);\n\n this._rawDelta.y = trueDelta.dotProduct(this.axes.y);\n this._yIsNegative = (this._rawDelta.y < -Constants.SMALL_ANGLE);\n\n if (!zLocked)\n this.delta.z = (this.flags.pointIsOnPlane) ? 0.0 : trueDelta.dotProduct(this.axes.z);\n\n if (AccuDraw.allowAxisIndexing(this.flags.pointIsOnPlane)) {\n if (!(this.locked & LockedStates.X_BM)) { // not locked in x\n const roundedDeltaX = this.applyDistanceRoundOff(this._rawDelta.x, vp); // round x\n if (undefined !== roundedDeltaX) {\n xyCorrection.x = roundedDeltaX - this._rawDelta.x;\n this._rawDelta.x = roundedDeltaX;\n }\n\n if (this._rawDelta.x < this._tolerance && this._rawDelta.x > -this._tolerance &&\n !this.flags.indexLocked && this.axisIndexing) { // index x\n this.indexed |= LockedStates.X_BM; // indexed in X\n xyCorrection.x -= this._rawDelta.x;\n this._rawDelta.x = 0.0;\n }\n }\n if (!(this.locked & LockedStates.Y_BM)) {\n const roundedDeltaY = this.applyDistanceRoundOff(this._rawDelta.y, vp); // round y\n if (undefined !== roundedDeltaY) {\n xyCorrection.y = roundedDeltaY - this._rawDelta.y;\n this._rawDelta.y = roundedDeltaY;\n }\n\n if (this._rawDelta.y < this._tolerance && this._rawDelta.y > -this._tolerance &&\n !this.flags.indexLocked && this.axisIndexing) { // index y\n this.indexed |= LockedStates.Y_BM; // indexed in Y\n xyCorrection.y -= this._rawDelta.y;\n this._rawDelta.y = 0.0;\n }\n }\n }\n\n if (this.locked & LockedStates.X_BM) {\n if (this.rawDeltaIsValid(this._rawDelta.x)) {\n // cursor changed sides, reverse value\n if ((this.delta.x < -Constants.SMALL_ANGLE) !== this._xIsNegative &&\n this.smartKeyin && this._keyinStatus[ItemField.X_Item] === KeyinStatus.Partial &&\n !this._xIsExplicit)\n this.delta.x = -this.delta.x;\n }\n\n xyCorrection.x = this.delta.x - this._rawDelta.x;\n } else {\n const lastDist = (this._rawDelta.x < 0.0) ? (-this._lastDistance) : this._lastDistance;\n\n if (!TentativeOrAccuSnap.isHot && ((this.locked & LockedStates.Y_BM) || (this.indexed & LockedStates.Y_BM)) && !(this.indexed & LockedStates.X_BM) &&\n Geometry.isDistanceWithinTol(this._rawDelta.x - lastDist, this._tolerance) &&\n !this.flags.indexLocked && this.distanceIndexing) {\n xyCorrection.x += lastDist - this._rawDelta.x;\n this.delta.x = lastDist;\n this.indexed |= LockedStates.DIST_BM;\n } else {\n this.delta.x = this._rawDelta.x;\n }\n }\n\n if (this.locked & LockedStates.Y_BM) {\n if (this.rawDeltaIsValid(this._rawDelta.y)) {\n // cursor changed sides, reverse value\n if ((this.delta.y < -Constants.SMALL_ANGLE) !== this._yIsNegative &&\n this.smartKeyin && this._keyinStatus[ItemField.Y_Item] === KeyinStatus.Partial &&\n !this._yIsExplicit)\n this.delta.y = -this.delta.y;\n }\n\n xyCorrection.y = this.delta.y - this._rawDelta.y;\n } else {\n const lastDist = (this._rawDelta.y < Constants.SMALL_ANGLE) ? - this._lastDistance : this._lastDistance;\n\n if (!TentativeOrAccuSnap.isHot && ((this.locked & LockedStates.X_BM) || (this.indexed & LockedStates.X_BM)) && !(this.indexed & LockedStates.Y_BM) &&\n Geometry.isDistanceWithinTol(this._rawDelta.y - lastDist, this._tolerance) &&\n !this.flags.indexLocked && this.distanceIndexing) {\n xyCorrection.y += lastDist - this._rawDelta.y;\n this.delta.y = lastDist;\n this.indexed |= LockedStates.DIST_BM;\n } else {\n this.delta.y = this._rawDelta.y;\n }\n }\n\n this._rawPointOnPlane.plus2Scaled(this.axes.x, xyCorrection.x, this.axes.y, xyCorrection.y, this.point);\n\n if (zLocked && !this.flags.pointIsOnPlane)\n this.hardConstructionPlane(this.point, this.point, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot);\n\n if ((this.locked & LockedStates.X_BM && this.delta.x === 0.0) || (this.locked & LockedStates.Y_BM && this.delta.y === 0.0)) {\n this.indexed |= this.locked; // to display index highlight\n } else if (TentativeOrAccuSnap.isHot) {\n if (Math.abs(this.delta.x) < Constants.SMALL_ANGLE)\n this.indexed |= LockedStates.X_BM;\n else if (Math.abs(this.delta.y) < Constants.SMALL_ANGLE)\n this.indexed |= LockedStates.Y_BM;\n }\n\n const lock = this.locked & LockedStates.XY_BM;\n const index = this.indexed & LockedStates.XY_BM;\n\n if (lock === LockedStates.Y_BM && index !== LockedStates.X_BM) {\n if (this._keyinStatus[ItemField.Y_Item] !== KeyinStatus.Dynamic) {\n if (Math.abs(this._rawDelta.x) < this._threshold)\n return;\n }\n\n this.newFocus = ItemField.X_Item;\n this.dontMoveFocus = false;\n } else if (lock === LockedStates.X_BM && index !== LockedStates.Y_BM) {\n if (this._keyinStatus[ItemField.X_Item] !== KeyinStatus.Dynamic) {\n if (Math.abs(this._rawDelta.y) < this._threshold)\n return;\n }\n\n this.newFocus = ItemField.Y_Item;\n this.dontMoveFocus = false;\n } else {\n this.newFocus = ((Math.abs(this._rawDelta.x) > Math.abs(this._rawDelta.y)) ? ItemField.X_Item : ItemField.Y_Item);\n }\n }\n\n private fixPointLastSnapDetail(vp: ScreenViewport): void {\n if (undefined === this._lastSnapDetail)\n return;\n\n this._lastSnapDetail.indexed = undefined;\n if (!this.axisIndexing || this.flags.indexLocked || LockedStates.NONE_LOCKED !== this.locked || this.indexed & LockedStates.DIST_BM || TentativeOrAccuSnap.isHot)\n return; // Don't adjust point if already adjusted or indexing is disabled...\n\n const minMag = AccuDraw.getMinPolarMag(this.point);\n const tmpVec = Vector3d.createStartEnd(this.planePt, this.point);\n if (tmpVec.magnitude() < minMag)\n return; // Current point is at compass origin...\n\n if (!this.hardConstructionPlane(this._rawPointOnPlane, this._lastSnapDetail.point, this.point, this.axes.z, vp, true))\n return;\n\n const snapDelta = this._rawPointOnPlane.vectorTo(this.point);\n if (snapDelta.magnitude() < minMag)\n return; // Haven't moved far enough away from snap point...\n\n const snapRayX = Ray3d.createCapture(this._rawPointOnPlane, this._lastSnapDetail.matrix.rowX());\n const snapRayY = Ray3d.createCapture(this._rawPointOnPlane, this._lastSnapDetail.matrix.rowY());\n const snapDeltaX = snapDelta.dotProduct(snapRayX.direction);\n const snapDeltaY = snapDelta.dotProduct(snapRayY.direction);\n\n let rayS;\n if (snapDeltaX < this._tolerance && snapDeltaX > -this._tolerance)\n rayS = snapRayY;\n else if (snapDeltaY < this._tolerance && snapDeltaY > -this._tolerance)\n rayS = snapRayX;\n else\n return;\n\n const rayA = Ray3d.createCapture(this.planePt, tmpVec);\n const detail = Ray3d.closestApproachRay3dRay3d(rayA, rayS);\n if (CurveCurveApproachType.Intersection !== detail.approachType)\n return;\n\n this.planePt.vectorTo(detail.detailA.point, tmpVec);\n Point2d.create(tmpVec.dotProduct(this.axes.x), tmpVec.dotProduct(this.axes.y), this._rawDelta);\n const xyCorrection = new Vector2d();\n\n if (this.indexed & LockedStates.X_BM) {\n xyCorrection.x -= this._rawDelta.x;\n this._rawDelta.x = 0.0;\n } else if (this.indexed & LockedStates.Y_BM) {\n xyCorrection.y -= this._rawDelta.y;\n this._rawDelta.y = 0.0;\n }\n\n if (this._rawDelta.magnitude() < minMag)\n return; // Don't accept adjustment back to compass origin...\n\n detail.detailA.point.plus2Scaled(this.axes.x, xyCorrection.x, this.axes.y, xyCorrection.y, this._rawPointOnPlane);\n if (this.point.distance(this._rawPointOnPlane) > (1.5 * this._tolerance))\n return; // Don't accept adjustment if distance is too great such as from nearly parallel vectors...\n\n if (CompassMode.Polar === this.compassMode) {\n this._distance = this.origin.distance(this._rawPointOnPlane);\n } else {\n this.delta.x = this._rawDelta.x;\n this.delta.y = this._rawDelta.y;\n }\n\n this.point.setFrom(this._rawPointOnPlane);\n this._lastSnapDetail.indexed = true;\n }\n\n private fixPoint(pointActive: Point3d, vp: ScreenViewport): void {\n if (this.isActive && ((vp !== this.currentView) || this.flags.rotationNeedsUpdate)) {\n this.currentView = vp;\n\n if (!(this.locked & LockedStates.ANGLE_BM || this._fieldLocked[ItemField.Z_Item])) {\n // origin not locked down...may change when vie changes...\n if (!this.flags.haveValidOrigin)\n this.setDefaultOrigin(vp);\n\n // in a view based rotation, and the view has changed, so update the rotation...\n if (!this.flags.lockedRotation) {\n this.updateRotation();\n this.flags.rotationNeedsUpdate = false;\n }\n }\n }\n if (this.isInactive || this.isDeactivated) {\n this.point.setFrom(pointActive);\n this.currentView = vp;\n this.processHints();\n return;\n }\n if (this.isActive) {\n this._rawPoint.setFrom(pointActive);\n this.currentView = vp;\n this.flags.dialogNeedsUpdate = true;\n\n if (TentativeOrAccuSnap.isHot && CompassMode.Polar === this.compassMode)\n this.indexed = this.locked;\n else\n this.indexed = LockedStates.NONE_LOCKED;\n\n if (CompassMode.Polar === this.compassMode)\n this.fixPointPolar(vp);\n else\n this.fixPointRectangular(vp);\n\n this.fixPointLastSnapDetail(vp);\n\n pointActive.setFrom(this.point);\n } else if (CompassMode.Rectangular === this.compassMode) {\n if (this._fieldLocked[ItemField.X_Item])\n pointActive.x = this.delta.x;\n\n if (this._fieldLocked[ItemField.Y_Item])\n pointActive.y = this.delta.y;\n\n if (this._fieldLocked[ItemField.Z_Item])\n pointActive.z = this.delta.z;\n }\n }\n\n /** @internal */\n public refreshDecorationsAndDynamics(): void {\n // Immediately process hints and show dynamics using adjusted point when not called from button down...\n if (!this.flags.inDataPoint)\n this.processHints();\n\n // Make sure AccuDraw updates its decorations...\n if (undefined !== this.currentView)\n this.currentView.invalidateDecorations();\n\n // Make sure active tool updates its dynamics. NOTE: Need point adjusted for new locks, etc.\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true);\n }\n\n /** @internal */\n public upgradeToActiveState(): boolean {\n if (!this.isEnabled)\n return false;\n\n this.onEventCommon();\n\n if (!this.isInactive)\n return false;\n\n const vp = this.currentView;\n if (!vp || 1.0 !== vp.view.getAspectRatioSkew())\n return false; // Disallow AccuDraw being enabled for exaggerated views...\n\n // NOTE: If ACS Plane lock setup initial and base rotation to ACS...\n if (vp && AccuDraw.useACSContextRotation(vp, false)) {\n this.setRotationMode(RotationMode.ACS);\n this.flags.baseRotation = RotationMode.ACS;\n this.flags.auxRotationPlane = RotationMode.Top;\n }\n\n if (this.published.flags & AccuDrawFlags.SmartRotation) {\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined !== snap) {\n const rotation = AccuDraw.getSnapRotation(snap, vp);\n if (undefined !== rotation) {\n this.setContextRotation(rotation, true, false);\n this.changeBaseRotationMode(RotationMode.Context);\n }\n }\n }\n\n this.checkRotation();\n\n // Compass will jump to correct location when fixPoint is called...but we don't want to see the jump...\n if (!this.flags.haveValidOrigin)\n this.setDefaultOrigin(vp);\n\n // Initialize rawPoint data...invalid for alignments until next fixPoint...\n this._rawPoint.setFrom(this.point);\n this._rawPointOnPlane.setFrom(this.point);\n\n // Upgrade state to enabled...want compass to display...\n this.currentState = CurrentState.Active;\n\n return false;\n }\n\n /** @internal */\n public downgradeInactiveState(): boolean {\n if (!this.isEnabled)\n return false;\n this.onEventCommon();\n if (!this.isActive)\n return false;\n // Downgrade state back to inactive...\n this.currentState = CurrentState.Inactive;\n return false;\n }\n\n /** @internal */\n public onBeginDynamics(): boolean { return this.upgradeToActiveState(); }\n /** @internal */\n public onEndDynamics(): boolean { return this.downgradeInactiveState(); }\n\n /** Can be called by sub-classes as the default implementation of onMotion.\n * @see [[onMotion]]\n * @note Input fields are expected to call [[AccuDrawShortcuts.itemFieldNewInput]] when the user enters a value that is not a shortcut\n * and call [[AccuDrawShortcuts.itemFieldCompletedInput]] when a value is accepted, such as when focusing out of the field. This is\n * required for processMotion to correctly handle updating dynamic field values to reflect the current cursor location.\n */\n public processMotion(): void {\n if (this.flags.dialogNeedsUpdate || !this.isActive) {\n if (this.isActive && this.smartKeyin) {\n // NOTE: fixPointRectangular sets newFocus to either x or y based on which axis is closer to the input point...\n if (CompassMode.Rectangular === this.compassMode && !this.dontMoveFocus && !this.getFieldLock(this.newFocus) && this.hasInputFocus)\n this.setFocusItem(this.newFocus);\n }\n\n const sendDynamicFieldValueChange = (item: ItemField): void => {\n if (KeyinStatus.Dynamic === this.getKeyinStatus(item))\n this.onFieldValueChange(item);\n };\n\n // NOTE: Shows the current deltas for rectangular mode when active and current coordinate when not active...\n sendDynamicFieldValueChange(ItemField.X_Item);\n sendDynamicFieldValueChange(ItemField.Y_Item);\n sendDynamicFieldValueChange(ItemField.Z_Item);\n sendDynamicFieldValueChange(ItemField.ANGLE_Item);\n sendDynamicFieldValueChange(ItemField.DIST_Item);\n }\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n * @see [[processMotion]]\n */\n public onMotion(_ev: BeButtonEvent): void { }\n\n /** @internal */\n public onPreButtonEvent(ev: BeButtonEvent): boolean {\n if (BeButton.Reset === ev.button && !ev.isDown && !ev.isDragging) {\n if (IModelApp.tentativePoint.isActive && this.isActive) {\n IModelApp.tentativePoint.clear(true);\n this.refreshDecorationsAndDynamics();\n return true;\n }\n\n if (this.isEnabled)\n this.onEventCommon();\n return false;\n }\n\n if (BeButton.Data !== ev.button || !ev.isDown || !this.isEnabled)\n return false;\n\n this.onEventCommon();\n this.flags.inDataPoint = true;\n if (this.currentState < CurrentState.Inactive)\n return false;\n if (!this.currentView)\n this.currentView = ev.viewport;\n this.updateRotation();\n return false;\n }\n\n /** @internal */\n public onPostButtonEvent(ev: BeButtonEvent): boolean {\n if (BeButton.Data !== ev.button || !ev.isDown || !this.isEnabled) {\n this._lastSnapDetail = undefined;\n return false;\n }\n\n this.onEventCommon();\n\n if (this.flags.ignoreDataButton) {\n // NOTE: Ignore this data point, was used to terminate a viewing command or input collector...\n this.flags.ignoreDataButton = false;\n } else if (!this.flags.fixedOrg && this.currentState >= CurrentState.Inactive) {\n /* set origin to last point placed unless its being set elsewhere */\n if (((!this.contextSensitive &&\n !(this.published.flags & (AccuDrawFlags.AlwaysSetOrigin ^ AccuDrawFlags.SetOrigin))) ||\n !(this.published.flags & AccuDrawFlags.SetOrigin))) {\n this.published.flags |= AccuDrawFlags.SetOrigin;\n\n if (this.currentState >= CurrentState.Inactive)\n this.published.origin.setFrom(ev.point);\n else\n this.published.origin.setFrom(this.point);\n }\n\n this.saveLockedCoords();\n this.processHints();\n\n if (this.currentState >= CurrentState.Inactive)\n this.updateRotation();\n }\n\n this.flags.inDataPoint = false;\n this.flags.indexLocked = false;\n return false;\n }\n\n /** @internal */\n public onTentative(): boolean {\n if (this.isActive || this.isInactive)\n this.grabInputFocus(); // AccuDraw gets input focus on a tentative\n\n return false;\n }\n\n private intersectXYCurve(snap: SnapDetail, curve: CurvePrimitive, usePointOnSnap: boolean) {\n if (undefined === this.currentView)\n return;\n\n const curveSegment = snap.getCurvePrimitive(); // Get single segment of linestring/shape...\n if (undefined === curveSegment)\n return;\n\n const worldToView = this.currentView.worldToViewMap.transform0;\n const detail = CurveCurve.intersectionProjectedXYPairs(worldToView, usePointOnSnap ? curveSegment : curve, true, usePointOnSnap ? curve : curveSegment, true);\n if (0 === detail.length)\n return;\n\n let closeIndex = 0;\n if (detail.length > 1) {\n const snapPt = worldToView.multiplyPoint3d(snap.getPoint(), 1);\n let lastDist: number | undefined;\n\n for (let i = 0; i < detail.length; i++) {\n const testPt = worldToView.multiplyPoint3d(detail[i].detailA.point, 1);\n const testDist = snapPt.realDistanceXY(testPt);\n\n if (undefined !== testDist && (undefined === lastDist || testDist < lastDist)) {\n lastDist = testDist;\n closeIndex = i;\n }\n }\n }\n\n snap.setSnapPoint(detail[closeIndex].detailA.point, SnapHeat.NotInRange);\n }\n\n private intersectLine(snap: SnapDetail, linePt: Point3d, unitVec: Vector3d) {\n const vec = Vector3d.createStartEnd(linePt, snap.getPoint());\n const endPt = linePt.plusScaled(unitVec, vec.dotProduct(unitVec));\n const cpLine = LineSegment3d.create(linePt, endPt);\n this.intersectXYCurve(snap, cpLine, true); // Get point on snapped curve, not AccuDraw axis. Snap point isn't required to be in AccuDraw plane when Z isn't locked.\n }\n\n private intersectCircle(snap: SnapDetail, center: Point3d, normal: Vector3d, radius: number) {\n const matrix = Matrix3d.createRigidHeadsUp(normal);\n const vector0 = matrix.columnX();\n const vector90 = matrix.columnY();\n vector0.scaleToLength(radius, vector0);\n vector90.scaleToLength(radius, vector90);\n const cpArc = Arc3d.create(center, vector0, vector90);\n this.intersectXYCurve(snap, cpArc, false); // Get point on AccuDraw distance circle, not snapped curve. Want to preserve distance constraint with apparent intersection in XY.\n }\n\n /** @internal */\n public onSnap(snap: SnapDetail): boolean {\n // If accudraw is locked, adjust near snap point to be the nearest point on this element, CONSTRAINED by the accudraw lock.\n if (!this.isActive || !this.locked)\n return false;\n\n if (SnapMode.Nearest !== snap.snapMode)\n return false;\n\n if (!snap.primitive)\n return false;\n\n switch (this.locked) {\n case LockedStates.VEC_BM: {\n this.intersectLine(snap, this.origin, this.vector);\n break;\n }\n\n case LockedStates.X_BM: {\n const refPt = (CompassMode.Rectangular === this.compassMode) ? this.planePt.plusScaled(this.axes.x, this.delta.x) : this.origin;\n this.intersectLine(snap, refPt, this.axes.y);\n break;\n }\n\n case LockedStates.Y_BM: {\n const refPt = (CompassMode.Rectangular === this.compassMode) ? this.planePt.plusScaled(this.axes.y, this.delta.y) : this.origin;\n this.intersectLine(snap, refPt, this.axes.x);\n break;\n }\n\n case LockedStates.DIST_BM: {\n this.intersectCircle(snap, this.origin, this.axes.z, this._distance);\n break;\n }\n }\n\n return false;\n }\n\n /** @internal */\n public onSelectedViewportChanged(previous: ScreenViewport | undefined, current: ScreenViewport | undefined): void {\n // In case previous is closing, always update AccuDraw to current view...\n if (undefined !== this.currentView && this.currentView === previous)\n this.currentView = current;\n\n // Reset AccuDraw when iModel or view type changes...\n if (undefined !== current && undefined !== previous &&\n (current.view.classFullName === previous.view.classFullName) &&\n (current.view.iModel === previous.view.iModel))\n return;\n\n this._acsPickId = undefined;\n this.currentView = undefined;\n this.flags.redrawCompass = false;\n\n this.flags.baseRotation = RotationMode.View;\n this.flags.auxRotationPlane = RotationMode.Top;\n this.flags.rotationNeedsUpdate = true;\n\n this.flags.haveValidOrigin = false;\n this.flags.indexLocked = false;\n this.flags.bearingFixToPlane2D = false;\n\n this.setRotationMode(RotationMode.View);\n this.updateRotation();\n\n this.saveState(this.savedStateViewTool);\n this.saveState(this.savedStateInputCollector);\n }\n\n private doProcessHints(): void {\n if (!this.floatingOrigin) {\n if (this.published.flags & AccuDrawFlags.SetOrigin)\n this.unlockAllFields();\n return;\n }\n\n // Set Context Origin\n if (this.published.flags & AccuDrawFlags.SetOrigin) {\n if (this.floatingOrigin) {\n this.origin.setFrom(this.published.origin);\n this.point.setFrom(this.origin);\n this.planePt.setFrom(this.origin);\n }\n this.flags.haveValidOrigin = true;\n this.setLastPoint(this.origin);\n this.unlockAllFields();\n this.updateRotation();\n }\n\n if (!this.contextSensitive)\n return;\n\n // Mode -- Polar or Rectangular\n if (this.published.flags & (AccuDrawFlags.SetModePolar | AccuDrawFlags.SetModeRect)) {\n if (this.compassMode !== ((this.published.flags & AccuDrawFlags.SetModePolar) ? CompassMode.Polar : CompassMode.Rectangular))\n this.changeCompassMode();\n }\n\n // Fixed Origin\n if (this.published.flags & AccuDrawFlags.FixedOrigin)\n this.flags.fixedOrg = true;\n\n // Save Distance\n if (this.published.flags & (AccuDrawFlags.SetDistance | AccuDrawFlags.LockDistance))\n this.saveCoordinate(ItemField.DIST_Item, this.published.distance);\n\n const vp = this.currentView;\n // Do Context Rotation\n if (this.published.flags & AccuDrawFlags.SetRMatrix) {\n this.axes.fromMatrix3d(this.published.rMatrix);\n this.flags.lockedRotation = true;\n this.flags.contextRotMode = ContextMode.Locked;\n this.setRotationMode(RotationMode.Context);\n this.updateRotation();\n } else if (this.published.flags & AccuDrawFlags.SetXAxis) {\n this.axes.x.setFrom(this.published.vector);\n this.flags.contextRotMode = ContextMode.XAxis;\n this.setRotationMode(RotationMode.Context);\n this.updateRotation();\n } else if (this.published.flags & AccuDrawFlags.SetXAxis2) {\n this.axes.x.setFrom(this.published.vector);\n this.flags.contextRotMode = ContextMode.XAxis2;\n this.setRotationMode(RotationMode.Context);\n this.updateRotation();\n } else if (this.published.flags & AccuDrawFlags.SetNormal) {\n if (vp && vp.view.is3d()) {\n this.axes.z.setFrom(this.published.vector);\n this.flags.contextRotMode = ContextMode.ZAxis;\n this.setRotationMode(RotationMode.Context);\n this.updateRotation();\n }\n } else if (this.published.flags & AccuDrawFlags.OrientACS) {\n this.flags.lockedRotation = true;\n this.flags.baseRotation = RotationMode.ACS;\n this.setRotationMode(RotationMode.ACS);\n this.updateRotation();\n } else if (this.isInactive || (this.published.flags & AccuDrawFlags.OrientDefault)) {\n this.setRotationMode(this.flags.baseRotation);\n this.updateRotation();\n }\n\n // Lock Items\n switch (this.compassMode) {\n case CompassMode.Polar:\n if (this.published.flags & AccuDrawFlags.LockDistance) {\n this._distance = this.published.distance;\n this.distanceLock(true, true);\n }\n\n if (this.published.flags & AccuDrawFlags.LockAngle) {\n this.updateVector(this.published.angle);\n this.indexed = LockedStates.NONE_LOCKED;\n this.angleLock();\n this.saveCoordinate(ItemField.ANGLE_Item, this.published.angle);\n }\n break;\n\n case CompassMode.Rectangular:\n if ((this.published.flags & AccuDrawFlags.Lock_X)) {\n this.locked |= LockedStates.X_BM;\n this.delta.x = this.published.delta.x;\n this.setFieldLock(ItemField.X_Item, true);\n this.saveCoordinate(ItemField.X_Item, this.published.delta.x);\n }\n\n if ((this.published.flags & AccuDrawFlags.Lock_Y)) {\n this.locked |= LockedStates.Y_BM;\n this.delta.y = this.published.delta.y;\n this.setFieldLock(ItemField.Y_Item, true);\n this.saveCoordinate(ItemField.Y_Item, this.published.delta.y);\n }\n\n if ((this.published.flags & AccuDrawFlags.Lock_Z)) {\n if (vp && vp.view.is3d()) {\n this.delta.z = this.published.delta.z;\n this.setFieldLock(ItemField.Z_Item, true);\n this.saveCoordinate(ItemField.Z_Item, this.published.delta.z);\n }\n }\n break;\n }\n }\n\n /** @internal */\n public processHints(): void {\n if (!this.published.flags || !this.isEnabled)\n return;\n\n if (this.published.flags & AccuDrawFlags.Disable) {\n this.published.flags = 0;\n this.currentState = CurrentState.Deactivated;\n return;\n }\n const setFocus: boolean = !!(this.published.flags & AccuDrawFlags.SetFocus);\n const smartRotation: boolean = !!(this.published.flags & AccuDrawFlags.SmartRotation);\n this.doProcessHints();\n this.published.zero();\n if (smartRotation && this.isInactive) // Preserve smart rotation hint until when/if AccuDraw is enabled for the current tool...\n this.published.flags = AccuDrawFlags.SmartRotation;\n if (this.isEnabled || setFocus)\n this.grabInputFocus();\n }\n}\n\n/** Specify the rotation to return from [[AccuDrawHintBuilder.getContextRotation]].\n * @public\n * @extensions\n */\nexport enum ContextRotationId { Top, Front, Left, Bottom, Back, Right, View, Face }\n\n/** [[AccuDrawHintBuilder]] is an [[InteractiveTool]] helper class that facilitates AccuDraw interaction.\n * Accudraw is an aide for entering coordinate data.\n * A tool does not directly change the current AccuDraw state; the tool's job is merely\n * to supply \"hints\" to AccuDraw regarding its preferred AccuDraw configuration for the\n * current tool state. User settings such as \"Context Sensitivity\" and \"Floating Origin\"\n * affect how and which hints are applied. Additionally the user can drive AccuDraw\n * through keyboard shortcuts.\n * @see [Using AccuDraw]($docs/learning/frontend/primitivetools.md#AccuDraw)*\n * @public\n * @extensions\n */\nexport class AccuDrawHintBuilder {\n private _flagOrigin = false;\n private _flagNormal = false;\n private _flagRotation = false;\n private _flagXAxis = false;\n private _flagXAxis2 = false;\n private _flagDistance = false;\n private _flagAngle = false;\n private _flagModePolar = false;\n private _flagModeRectangular = false;\n private _origin?: Point3d;\n private _axis?: Vector3d;\n private _rMatrix?: Matrix3d;\n private _distance = 0;\n private _angle = 0;\n\n /** Don't automatically set compass origin to point from data button events */\n public setOriginFixed = false;\n /** Override \"fixed\" and \"floating\" origin settings for [[setOrigin] hint */\n public setOriginAlways = false;\n /** Lock current distance value in polar mode */\n public setLockDistance = false;\n /** Lock current angle value in polar mode */\n public setLockAngle = false;\n /** Lock current x delta value in rectangular mode */\n public setLockX = false;\n /** Lock current y delta value in rectangular mode */\n public setLockY = false;\n /** Lock current z delta value in 3d views */\n public setLockZ = false;\n /** Set the initial compass orientation from the current [[SnapDetail]] when activating */\n public enableSmartRotation = false;\n\n /** Add hint to specify a new compass origin */\n public setOrigin(origin: Point3d): void {\n this._origin = origin.clone();\n this._flagOrigin = true;\n }\n\n /** Add hint to fully specify compass orientation from a Matrix3d */\n public setMatrix(matrix: Matrix3d): boolean {\n const invMatrix = matrix.inverse();\n if (undefined === invMatrix)\n return false;\n this.setRotation(invMatrix);\n return true;\n }\n\n /** @internal Add hint to fully specify compass orientation from a Matrix3d in row format */\n public setRotation(rowMatrix: Matrix3d): void {\n this._rMatrix = rowMatrix.clone();\n this._flagRotation = true;\n this._flagXAxis = this._flagNormal = false;\n }\n\n /** Add hint to change compass orientation by combining the supplied x axis direction with the current base rotation */\n public setXAxis(xAxis: Vector3d): void {\n this._axis = xAxis.clone();\n this._flagXAxis = true;\n this._flagRotation = this._flagNormal = this._flagXAxis2 = false;\n }\n\n /** Add hint to change compass orientation by combining the supplied x axis direction with the current base rotation preferring the result most closely aligned to the view */\n public setXAxis2(xAxis: Vector3d): void {\n this._axis = xAxis.clone();\n this._flagXAxis2 = true;\n this._flagRotation = this._flagNormal = this._flagXAxis = false;\n }\n\n /** Add hint to change compass orientation by combining the supplied z axis direction with the current base rotation */\n public setNormal(normal: Vector3d): void {\n this._axis = normal.clone();\n this._flagNormal = true;\n this._flagRotation = this._flagXAxis = this._flagXAxis2 = false;\n }\n\n /** Add hint to change compass to polar mode */\n public setModePolar(): void {\n this._flagModePolar = true;\n this._flagModeRectangular = false;\n }\n\n /** Add hint to change compass to rectangular mode */\n public setModeRectangular(): void {\n this._flagModeRectangular = true;\n this._flagModePolar = false;\n }\n\n /** Set current distance value in polar mode */\n public setDistance(distance: number): void {\n this._distance = distance;\n this._flagDistance = true;\n }\n\n /** Set current angle value in polar mode */\n public setAngle(angle: number): void {\n this._angle = angle;\n this._flagAngle = true;\n }\n\n /** Enable AccuDraw for the current tool without sending any hints */\n public static activate(): void { IModelApp.accuDraw.activate(); }\n\n /** Disable AccuDraw for the current tool */\n public static deactivate(): void { IModelApp.accuDraw.deactivate(); }\n\n /** Whether AccuDraw is enabled by the host application this session and can be used */\n public static get isEnabled(): boolean { return IModelApp.accuDraw.isEnabled; }\n\n /** Whether AccuDraw compass is currently displayed and points are being adjusted */\n public static get isActive(): boolean { return IModelApp.accuDraw.isActive; }\n\n /**\n * Immediately process pending hints and update tool dynamics using the adjusted point when not called from a button down event.\n * @note Provided to help with exceptions cases, such as starting an InputCollector from the active tool's drag event, that are not handled by normal hint processing.\n * A typical interactive tool should not call this method and should only be calling sendHints.\n * @see [[sendHints]]\n */\n public static processHintsImmediate(): void { return IModelApp.accuDraw.refreshDecorationsAndDynamics(); }\n\n /**\n * Provide hints to AccuDraw using the current builder state.\n * @return true if hints were successfully sent.\n */\n public sendHints(activate = true): boolean {\n let flags = 0;\n if (this._flagOrigin)\n flags |= AccuDrawFlags.SetOrigin;\n if (this.setOriginFixed)\n flags |= AccuDrawFlags.FixedOrigin;\n if (this.setOriginAlways)\n flags |= AccuDrawFlags.AlwaysSetOrigin;\n if (this._flagRotation)\n flags |= AccuDrawFlags.SetRMatrix;\n if (this._flagXAxis)\n flags |= AccuDrawFlags.SetXAxis;\n if (this._flagXAxis2)\n flags |= AccuDrawFlags.SetXAxis2;\n if (this._flagNormal)\n flags |= AccuDrawFlags.SetNormal;\n if (this._flagModePolar)\n flags |= AccuDrawFlags.SetModePolar;\n if (this._flagModeRectangular)\n flags |= AccuDrawFlags.SetModeRect;\n if (this.setLockDistance)\n flags |= AccuDrawFlags.LockDistance;\n if (this.setLockAngle)\n flags |= AccuDrawFlags.LockAngle;\n if (this.setLockX)\n flags |= AccuDrawFlags.Lock_X;\n if (this.setLockY)\n flags |= AccuDrawFlags.Lock_Y;\n if (this.setLockZ)\n flags |= AccuDrawFlags.Lock_Z;\n if (this.enableSmartRotation)\n flags |= AccuDrawFlags.SmartRotation;\n\n const accuDraw = IModelApp.accuDraw;\n if (BentleyStatus.SUCCESS !== accuDraw.setContext(flags, this._origin, this._flagRotation ? this._rMatrix : this._axis, undefined, this._flagDistance ? this._distance : undefined, this._flagAngle ? this._angle : undefined))\n return false; // Not enabled for this session...\n\n if (activate)\n accuDraw.activate(); // If not already enabled (ex. dynamics not started) most/all callers would want to enable it now (optional activate arg provided just in case)...\n\n return true;\n }\n\n /** Adjust the location of the last data button. If dynamics are enabled on this event, [[InteractiveTool.onDynamicFrame]] is called with this location. */\n public setLastPoint(ev: BeButtonEvent): void {\n IModelApp.toolAdmin.setAdjustedDataPoint(ev);\n }\n\n /** Create a [[Ray3d]] whose origin is the supplied space point and direction is into the view */\n public static getBoresite(spacePt: Point3d, vp: Viewport, checkAccuDraw: boolean = false, checkACS: boolean = false): Ray3d {\n if (checkAccuDraw && IModelApp.accuDraw.isActive)\n return Ray3d.create(spacePt, IModelApp.accuDraw.getRotation().getRow(2).negate());\n\n if (checkACS && vp.isContextRotationRequired)\n return Ray3d.create(spacePt, vp.getAuxCoordRotation().getRow(2).negate());\n\n const eyePoint = vp.worldToViewMap.transform1.columnZ();\n const direction = Vector3d.createFrom(eyePoint);\n const aa = Geometry.conditionalDivideFraction(1, eyePoint.w);\n if (aa !== undefined) {\n const xyzEye = direction.scale(aa);\n direction.setFrom(spacePt.vectorTo(xyzEye));\n }\n direction.scaleToLength(-1.0, direction);\n return Ray3d.create(spacePt, direction);\n }\n\n /** Return ray intersection with a plane defined by a point and normal\n * @see [[getBoresite]]\n */\n public static projectPointToPlaneInView(spacePt: Point3d, planePt: Point3d, planeNormal: Vector3d, vp: Viewport, checkAccuDraw: boolean = false, checkACS: boolean = false): Point3d | undefined {\n const plane = Plane3dByOriginAndUnitNormal.create(planePt, planeNormal);\n if (undefined === plane)\n return undefined;\n const rayToEye = AccuDrawHintBuilder.getBoresite(spacePt, vp, checkAccuDraw, checkACS);\n const projectedPt = Point3d.createZero();\n if (undefined === rayToEye.intersectionWithPlane(plane, projectedPt))\n return undefined;\n return projectedPt;\n }\n\n /** Return ray intersection with a line defined by a point and direction\n * @see [[getBoresite]]\n */\n public static projectPointToLineInView(spacePt: Point3d, linePt: Point3d, lineDirection: Vector3d, vp: Viewport, checkAccuDraw: boolean = false, checkACS: boolean = false): Point3d | undefined {\n const lineRay = Ray3d.create(linePt, lineDirection);\n const rayToEye = AccuDrawHintBuilder.getBoresite(spacePt, vp, checkAccuDraw, checkACS);\n if (rayToEye.direction.isParallelTo(lineRay.direction, true))\n return lineRay.projectPointToRay(spacePt);\n const matrix = Matrix3d.createRigidFromColumns(lineRay.direction, rayToEye.direction, AxisOrder.XZY);\n if (undefined === matrix)\n return undefined;\n const plane = Plane3dByOriginAndUnitNormal.create(linePt, matrix.columnZ());\n if (undefined === plane)\n return undefined;\n const projectedPt = Point3d.createZero();\n if (undefined === rayToEye.intersectionWithPlane(plane, projectedPt))\n return undefined;\n return lineRay.projectPointToRay(projectedPt);\n }\n\n /** Return a [[Matrix3d]] representing the current working plane specified by AccuDraw, [[Viewport.auxCoordSystem]], or [[Viewport.rotation]]. */\n public static getCurrentRotation(vp: Viewport, checkAccuDraw: boolean, checkACS: boolean, matrix?: Matrix3d): Matrix3d | undefined {\n const current = AccuDraw.getCurrentOrientation(vp, checkAccuDraw, checkACS, matrix);\n return (undefined !== current ? current.inverse() : undefined);\n }\n\n /** Return a [[Matrix3d]] from a [[SnapDetail]].\n * Uses [[SnapDetail.normal]] and [[SnapDetail.primitive]] when available to create the most well defined rotation for the given snap location.\n */\n public static getSnapRotation(snap: SnapDetail, matrix?: Matrix3d): Matrix3d | undefined {\n const out = AccuDraw.getSnapRotation(snap, undefined, matrix);\n return (undefined !== out ? out.inverse() : undefined);\n }\n\n /** Return a [[Matrix3d]] corresponding to the supplied [[ContextRotationId]].\n * A [[ContextRotationId]] that corresponds to a standard view, \"Top\", \"Front\", etc. will return a [[Matrix3d]] that\n * is relative to the current [[Viewport.auxCoordSystem]] when ACS context lock is enabled.\n * @see [[ToolAdmin.acsContextLock]]\n */\n public static getContextRotation(id: ContextRotationId, vp: Viewport): Matrix3d | undefined {\n switch (id) {\n case ContextRotationId.Top:\n return AccuDraw.getStandardRotation(StandardViewId.Top, vp, vp.isContextRotationRequired).inverse();\n case ContextRotationId.Front:\n return AccuDraw.getStandardRotation(StandardViewId.Front, vp, vp.isContextRotationRequired).inverse();\n case ContextRotationId.Left:\n return AccuDraw.getStandardRotation(StandardViewId.Left, vp, vp.isContextRotationRequired).inverse();\n case ContextRotationId.Bottom:\n return AccuDraw.getStandardRotation(StandardViewId.Bottom, vp, vp.isContextRotationRequired).inverse();\n case ContextRotationId.Back:\n return AccuDraw.getStandardRotation(StandardViewId.Back, vp, vp.isContextRotationRequired).inverse();\n case ContextRotationId.Right:\n return AccuDraw.getStandardRotation(StandardViewId.Right, vp, vp.isContextRotationRequired).inverse();\n case ContextRotationId.View:\n return vp.view.getRotation().inverse();\n case ContextRotationId.Face:\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\n if (undefined === snap || undefined === snap.normal)\n return undefined;\n const normal = Vector3d.createZero();\n const boresite = this.getBoresite(snap.hitPoint, vp);\n if (snap.normal.dotProduct(boresite.direction) < 0.0)\n normal.setFrom(snap.normal);\n else\n snap.normal.negate(normal);\n return Matrix3d.createRigidHeadsUp(normal);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AccuDraw.js","sourceRoot":"","sources":["../../src/AccuDraw.ts"],"names":[],"mappings":"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"}