@itwin/core-frontend 5.1.1 → 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.
- package/CHANGELOG.md +13 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/cjs/AuxCoordSys.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/CatalogConnection.js.map +1 -1
- package/lib/cjs/CategorySelectorState.js.map +1 -1
- package/lib/cjs/ChangeFlags.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/CoordSystem.js.map +1 -1
- package/lib/cjs/DecorationsCache.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EntityState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/FrontendHubAccess.js.map +1 -1
- package/lib/cjs/Frustum2d.js.map +1 -1
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/FuzzySearch.js.map +1 -1
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/GlobeAnimator.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IModeljs-css.js.map +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/MarginPercent.js.map +1 -1
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelSelectorState.js.map +1 -1
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/NotificationManager.js.map +1 -1
- package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialClassifiersState.js.map +1 -1
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/StandardView.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/TxnEntityChanges.js.map +1 -1
- package/lib/cjs/UserPreferences.js.map +1 -1
- package/lib/cjs/ViewAnimation.js.map +1 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewStatus.js.map +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/ViewportSync.js.map +1 -1
- package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/common/ImageUtil.js.map +1 -1
- package/lib/cjs/common/ViewRect.js.map +1 -1
- package/lib/cjs/common/WorkerProxy.js.map +1 -1
- package/lib/cjs/common/gltf/GltfModel.js.map +1 -1
- package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
- package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
- package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/cjs/common/internal/Symbols.js.map +1 -1
- package/lib/cjs/common/internal/render/AnimationNodeId.js.map +1 -1
- package/lib/cjs/common/internal/render/AuxChannelTable.js.map +1 -1
- package/lib/cjs/common/internal/render/ColorMap.js.map +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
- package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/common/internal/render/GeometryList.js.map +1 -1
- package/lib/cjs/common/internal/render/GeometryPrimitives.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshParams.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitive.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
- package/lib/cjs/common/internal/render/PointCloudPrimitive.js.map +1 -1
- package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
- package/lib/cjs/common/internal/render/Polyface.js.map +1 -1
- package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
- package/lib/cjs/common/internal/render/Primitives.js.map +1 -1
- package/lib/cjs/common/internal/render/Strokes.js.map +1 -1
- package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexIndices.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexKey.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/common/render/BatchOptions.js.map +1 -1
- package/lib/cjs/common/render/GraphicAssembler.js.map +1 -1
- package/lib/cjs/common/render/GraphicDescriptionBuilder.js.map +1 -1
- package/lib/cjs/common/render/GraphicDescriptionContext.js.map +1 -1
- package/lib/cjs/common/render/GraphicPrimitive.js.map +1 -1
- package/lib/cjs/common/render/GraphicType.js.map +1 -1
- package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/cjs/common/render/MaterialParams.js.map +1 -1
- package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -1
- package/lib/cjs/common/render/TextureParams.js.map +1 -1
- package/lib/cjs/common.js.map +1 -1
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/Extension.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/extension/ExtensionHost.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -1
- package/lib/cjs/internal/ScriptUtils.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/render/AnimationBranchState.js.map +1 -1
- package/lib/cjs/internal/render/FrameStatsCollector.js.map +1 -1
- package/lib/cjs/internal/render/GraphicBranchFrustum.js.map +1 -1
- package/lib/cjs/internal/render/GraphicTemplateImpl.js.map +1 -1
- package/lib/cjs/internal/render/MeshMapLayerGraphicParams.js.map +1 -1
- package/lib/cjs/internal/render/MockRender.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/QueryVisibileFeatures.js.map +1 -1
- package/lib/cjs/internal/render/RenderAreaPattern.js.map +1 -1
- package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/cjs/internal/render/RenderMaterialSource.js.map +1 -1
- package/lib/cjs/internal/render/RenderPlan.js.map +1 -1
- package/lib/cjs/internal/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/RenderSkyBoxParams.js.map +1 -1
- package/lib/cjs/internal/render/RenderSystemDebugControl.js.map +1 -1
- package/lib/cjs/internal/render/RenderTargetDebugControl.js.map +1 -1
- package/lib/cjs/internal/render/RenderTerrain.js.map +1 -1
- package/lib/cjs/internal/render/RenderTextureDrape.js.map +1 -1
- package/lib/cjs/internal/render/SceneVolumeClassifier.js.map +1 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchStack.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClipVolume.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ContourUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Disposable.js.map +1 -1
- package/lib/cjs/internal/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/internal/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/GL.js.map +1 -1
- package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/internal/render/webgl/HiliteUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/internal/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Layer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/LayerCommands.js.map +1 -1
- package/lib/cjs/internal/render/webgl/LightingUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/LineCode.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Material.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Matrix.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/internal/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Sync.js.map +1 -1
- package/lib/cjs/internal/render/webgl/System.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/cjs/internal/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/internal/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/internal/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/internal/render/webgl/TextureDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/internal/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ViewRectUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/BatchedTileIdMap.js.map +1 -1
- package/lib/cjs/internal/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/ContextShareProvider.js.map +1 -1
- package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
- package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
- package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
- package/lib/cjs/internal/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
- package/lib/cjs/internal/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/internal/tile/ImdlParser.js.map +1 -1
- package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/cjs/internal/tile/MeshoptCompression.js.map +1 -1
- package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/PntsReader.js.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
- package/lib/cjs/internal/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WebMercator.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/internal/tile/map/UrlUtils.js.map +1 -1
- package/lib/cjs/internal/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/internal/tile/map/WmsUtilities.js.map +1 -1
- package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/internal/webgl.js.map +1 -1
- package/lib/cjs/properties/AngleDescription.js.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/cjs/properties/LengthDescription.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
- package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
- package/lib/cjs/render/CanvasDecoration.js.map +1 -1
- package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -1
- package/lib/cjs/render/CreateTextureArgs.js.map +1 -1
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/FrameStats.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/GraphicTemplate.js.map +1 -1
- package/lib/cjs/render/MeshArgs.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/PolylineArgs.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderClipVolume.js.map +1 -1
- package/lib/cjs/render/RenderGraphic.js.map +1 -1
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/Scene.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/request/Request.js.map +1 -1
- package/lib/cjs/request/utils.js.map +1 -1
- package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileContent.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
- package/lib/cjs/tile/TileParams.js.map +1 -1
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileStorage.js.map +1 -1
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
- package/lib/cjs/tile/TileTreeParams.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
- package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
- package/lib/cjs/tile/TileUser.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/EventController.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/cjs/workers/RegisterWorker.js.map +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/esm/AuxCoordSys.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/CatalogConnection.js.map +1 -1
- package/lib/esm/CategorySelectorState.js.map +1 -1
- package/lib/esm/ChangeFlags.js.map +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/CoordSystem.js.map +1 -1
- package/lib/esm/DecorationsCache.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EntityState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FeatureOverrideProvider.js.map +1 -1
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/FrontendHubAccess.js.map +1 -1
- package/lib/esm/Frustum2d.js.map +1 -1
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/FuzzySearch.js.map +1 -1
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/GlobeAnimator.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IModeljs-css.js.map +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LinePlaneIntersect.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/MarginPercent.js.map +1 -1
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelSelectorState.js.map +1 -1
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/NotificationManager.js.map +1 -1
- package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialClassifiersState.js.map +1 -1
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/StandardView.js.map +1 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/TxnEntityChanges.js.map +1 -1
- package/lib/esm/UserPreferences.js.map +1 -1
- package/lib/esm/ViewAnimation.js.map +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewStatus.js.map +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/ViewportSync.js.map +1 -1
- package/lib/esm/common/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/common/ImageUtil.js.map +1 -1
- package/lib/esm/common/ViewRect.js.map +1 -1
- package/lib/esm/common/WorkerProxy.js.map +1 -1
- package/lib/esm/common/gltf/GltfModel.js.map +1 -1
- package/lib/esm/common/gltf/GltfParser.js.map +1 -1
- package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
- package/lib/esm/common/imdl/CompactEdges.js.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/esm/common/internal/Symbols.js.map +1 -1
- package/lib/esm/common/internal/render/AnimationNodeId.js.map +1 -1
- package/lib/esm/common/internal/render/AuxChannelTable.js.map +1 -1
- package/lib/esm/common/internal/render/ColorMap.js.map +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/esm/common/internal/render/EdgeParams.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryList.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryPrimitives.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/LineCode.js.map +1 -1
- package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
- package/lib/esm/common/internal/render/MeshParams.js.map +1 -1
- package/lib/esm/common/internal/render/MeshPrimitive.js.map +1 -1
- package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
- package/lib/esm/common/internal/render/PointCloudPrimitive.js.map +1 -1
- package/lib/esm/common/internal/render/PointStringParams.js.map +1 -1
- package/lib/esm/common/internal/render/Polyface.js.map +1 -1
- package/lib/esm/common/internal/render/PolylineParams.js.map +1 -1
- package/lib/esm/common/internal/render/Primitives.js.map +1 -1
- package/lib/esm/common/internal/render/Strokes.js.map +1 -1
- package/lib/esm/common/internal/render/SurfaceParams.js.map +1 -1
- package/lib/esm/common/internal/render/VertexIndices.js.map +1 -1
- package/lib/esm/common/internal/render/VertexKey.js.map +1 -1
- package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
- package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/VertexTableSplitter.js.map +1 -1
- package/lib/esm/common/render/BatchOptions.js.map +1 -1
- package/lib/esm/common/render/GraphicAssembler.js.map +1 -1
- package/lib/esm/common/render/GraphicDescriptionBuilder.js.map +1 -1
- package/lib/esm/common/render/GraphicDescriptionContext.js.map +1 -1
- package/lib/esm/common/render/GraphicPrimitive.js.map +1 -1
- package/lib/esm/common/render/GraphicType.js.map +1 -1
- package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/esm/common/render/MaterialParams.js.map +1 -1
- package/lib/esm/common/render/RenderInstancesParams.js.map +1 -1
- package/lib/esm/common/render/TextureParams.js.map +1 -1
- package/lib/esm/common.js.map +1 -1
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/Extension.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/extension/ExtensionHost.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
- package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -1
- package/lib/esm/internal/ScriptUtils.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/render/AnimationBranchState.js.map +1 -1
- package/lib/esm/internal/render/FrameStatsCollector.js.map +1 -1
- package/lib/esm/internal/render/GraphicBranchFrustum.js.map +1 -1
- package/lib/esm/internal/render/GraphicTemplateImpl.js.map +1 -1
- package/lib/esm/internal/render/MeshMapLayerGraphicParams.js.map +1 -1
- package/lib/esm/internal/render/MockRender.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/QueryVisibileFeatures.js.map +1 -1
- package/lib/esm/internal/render/RenderAreaPattern.js.map +1 -1
- package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/esm/internal/render/RenderMaterialSource.js.map +1 -1
- package/lib/esm/internal/render/RenderPlan.js.map +1 -1
- package/lib/esm/internal/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/RenderSkyBoxParams.js.map +1 -1
- package/lib/esm/internal/render/RenderSystemDebugControl.js.map +1 -1
- package/lib/esm/internal/render/RenderTargetDebugControl.js.map +1 -1
- package/lib/esm/internal/render/RenderTerrain.js.map +1 -1
- package/lib/esm/internal/render/RenderTextureDrape.js.map +1 -1
- package/lib/esm/internal/render/SceneVolumeClassifier.js.map +1 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchStack.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClipVolume.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/internal/render/webgl/ContourUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
- package/lib/esm/internal/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/internal/render/webgl/Disposable.js.map +1 -1
- package/lib/esm/internal/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
- package/lib/esm/internal/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/internal/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/GL.js.map +1 -1
- package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
- package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/internal/render/webgl/HiliteUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/internal/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/Layer.js.map +1 -1
- package/lib/esm/internal/render/webgl/LayerCommands.js.map +1 -1
- package/lib/esm/internal/render/webgl/LightingUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/LineCode.js.map +1 -1
- package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/Material.js.map +1 -1
- package/lib/esm/internal/render/webgl/Matrix.js.map +1 -1
- package/lib/esm/internal/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/internal/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/internal/render/webgl/PointString.js.map +1 -1
- package/lib/esm/internal/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/internal/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/internal/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/Sync.js.map +1 -1
- package/lib/esm/internal/render/webgl/System.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/esm/internal/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
- package/lib/esm/internal/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/internal/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
- package/lib/esm/internal/render/webgl/TextureDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/internal/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/internal/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/internal/render/webgl/ViewRectUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Common.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/BatchedTileIdMap.js.map +1 -1
- package/lib/esm/internal/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/internal/tile/ContextShareProvider.js.map +1 -1
- package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
- package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
- package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
- package/lib/esm/internal/tile/I3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/IModelTile.js.map +1 -1
- package/lib/esm/internal/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
- package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/internal/tile/ImdlParser.js.map +1 -1
- package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/esm/internal/tile/MeshoptCompression.js.map +1 -1
- package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/internal/tile/PntsReader.js.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
- package/lib/esm/internal/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/WebMercator.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/internal/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/internal/tile/map/UrlUtils.js.map +1 -1
- package/lib/esm/internal/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/internal/tile/map/WmsUtilities.js.map +1 -1
- package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/internal/webgl.js.map +1 -1
- package/lib/esm/properties/AngleDescription.js.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/esm/properties/LengthDescription.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
- package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
- package/lib/esm/render/CanvasDecoration.js.map +1 -1
- package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -1
- package/lib/esm/render/CreateTextureArgs.js.map +1 -1
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/FrameStats.js.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/GraphicTemplate.js.map +1 -1
- package/lib/esm/render/MeshArgs.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/PolylineArgs.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderClipVolume.js.map +1 -1
- package/lib/esm/render/RenderGraphic.js.map +1 -1
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/Scene.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/request/Request.js.map +1 -1
- package/lib/esm/request/utils.js.map +1 -1
- package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/RenderGraphicTileTree.js.map +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileContent.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
- package/lib/esm/tile/TileParams.js.map +1 -1
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileRequestChannel.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileStorage.js.map +1 -1
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TileTreeOwner.js.map +1 -1
- package/lib/esm/tile/TileTreeParams.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
- package/lib/esm/tile/TileUsageMarker.js.map +1 -1
- package/lib/esm/tile/TileUser.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/EventController.js.map +1 -1
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/esm/workers/RegisterWorker.js.map +1 -1
- package/package.json +20 -20
package/lib/cjs/AccuDraw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccuDraw.js","sourceRoot":"","sources":["../../src/AccuDraw.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module AccuDraw\r\n */\r\nimport { BentleyStatus, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Arc3d, AxisOrder, CurveCurve, CurveCurveApproachType, CurvePrimitive, Geometry, IModelJson as GeomJson, LineSegment3d, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d,\r\n PointString3d, Ray3d, Transform, Vector2d, Vector3d,\r\n} from \"@itwin/core-geometry\";\r\nimport { ColorByName, ColorDef, GeometryStreamProps, LinePixels } from \"@itwin/core-common\";\r\nimport { TentativeOrAccuSnap } from \"./AccuSnap\";\r\nimport { ACSDisplayOptions, AuxCoordSystemState } from \"./AuxCoordSys\";\r\nimport { HitDetail, SnapDetail, SnapHeat, SnapMode } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { GraphicBuilder } from \"./render/GraphicBuilder\";\r\nimport { StandardViewId } from \"./StandardView\";\r\nimport { BeButton, BeButtonEvent, CoordinateLockOverrides, InputCollector, InputSource } from \"./tools/Tool\";\r\nimport { ViewTool } from \"./tools/ViewTool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { linePlaneIntersect } from \"./LinePlaneIntersect\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { ViewState } from \"./ViewState\";\r\nimport { QuantityType } from \"./quantity-formatting/QuantityFormatter\";\r\nimport { FormatterSpec, FormatType, ParseError, Parser, ParserSpec, QuantityParseResult } from \"@itwin/core-quantity\";\r\nimport { GraphicType } from \"./common/render/GraphicType\";\r\n\r\n// cspell:ignore dont primitivetools\r\n\r\n/** @internal */\r\nexport enum AccuDrawFlags {\r\n None = 0,\r\n SetModePolar = 1,\r\n SetModeRect = 1 << 1,\r\n SetOrigin = (1 << 2),\r\n FixedOrigin = (1 << 3),\r\n SetRMatrix = (1 << 4),\r\n SetXAxis = (1 << 5),\r\n SetNormal = (1 << 6),\r\n SetDistance = (1 << 7),\r\n LockDistance = (1 << 8),\r\n Lock_X = (1 << 9),\r\n Lock_Y = (1 << 10),\r\n Lock_Z = (1 << 11),\r\n Disable = (1 << 12),\r\n OrientDefault = (1 << 14),\r\n SetFocus = (1 << 15),\r\n OrientACS = (1 << 17),\r\n SetXAxis2 = (1 << 18),\r\n LockAngle = (1 << 19),\r\n AlwaysSetOrigin = SetOrigin | (1 << 21),\r\n RedrawCompass = (1 << 22),\r\n UpdateRotation = (1 << 23),\r\n SmartRotation = (1 << 24),\r\n}\r\n\r\n/** AccuDraw coordinate input mode\r\n * @public\r\n */\r\nexport enum CompassMode {\r\n /** Coordinate input using distance and angle */\r\n Polar = 0,\r\n /** Coordinate input using x, y, and z deltas */\r\n Rectangular = 1,\r\n}\r\n\r\n/** AccuDraw compass base rotation\r\n * @public\r\n */\r\nexport enum RotationMode {\r\n /** Aligned with standard view top or ACS top when [[ToolAdmin.acsContextLock]] is enabled */\r\n Top = 1,\r\n /** Aligned with standard view front or ACS front when [[ToolAdmin.acsContextLock]] is enabled */\r\n Front = 2,\r\n /** Aligned with standard view right or ACS right when [[ToolAdmin.acsContextLock]] is enabled */\r\n Side = 3,\r\n /** Aligned with view */\r\n View = 4,\r\n /** Aligned with view ACS */\r\n ACS = 5,\r\n /** Not aligned with a standard rotation or ACS */\r\n Context = 6,\r\n}\r\n\r\n/** @internal */\r\nexport enum LockedStates {\r\n NONE_LOCKED = 0,\r\n X_BM = (1),\r\n Y_BM = (1 << 1),\r\n VEC_BM = (1 << 2),\r\n DIST_BM = (1 << 3),\r\n XY_BM = (X_BM | Y_BM),\r\n ANGLE_BM = (XY_BM | VEC_BM),\r\n}\r\n\r\n/** AccuDraw enabled states\r\n * @public\r\n */\r\nexport enum CurrentState {\r\n /** Compass disabled/unwanted for this session */\r\n NotEnabled = 0,\r\n /** Compass deactivated but CAN be activated by user */\r\n Deactivated = 1,\r\n /** Compass not displayed awaiting automatic activation (default tool state) */\r\n Inactive = 2,\r\n /** Compass displayed and adjusting points */\r\n Active = 3,\r\n}\r\n\r\n/** @internal */\r\nexport enum ContextMode {\r\n Locked = 0,\r\n XAxis = 1,\r\n YAxis = 2,\r\n ZAxis = 3,\r\n XAxis2 = 4,\r\n None = 15,\r\n}\r\n\r\n/** AccuDraw coordinate input fields\r\n * @public\r\n */\r\nexport enum ItemField {\r\n /** Distance for polar mode */\r\n DIST_Item = 0,\r\n /** Angle for polar mode */\r\n ANGLE_Item = 1,\r\n /** X delta for rectangular mode */\r\n X_Item = 2,\r\n /** Y delta for rectangular mode */\r\n Y_Item = 3,\r\n /** Z delta (3d only) */\r\n Z_Item = 4,\r\n}\r\n\r\n/** @internal */\r\nexport enum KeyinStatus {\r\n Dynamic = 0,\r\n Partial = 1,\r\n}\r\n\r\nconst enum Constants { // eslint-disable-line no-restricted-syntax\r\n MAX_SAVED_VALUES = 10,\r\n SMALL_ANGLE = 1.0e-12,\r\n SMALL_DELTA = 0.00001,\r\n}\r\n\r\n/** @internal */\r\nexport class AccudrawData {\r\n public flags = 0; // AccuDrawFlags\r\n public readonly origin = new Point3d(); // used if ACCUDRAW_SetOrigin\r\n public readonly delta = new Point3d(); // if ACCUDRAW_Lock_X, etc.\r\n public readonly rMatrix = new Matrix3d(); // if ACCUDRAW_SetRMatrix/ACCUDRAW_Set3dMatrix\r\n public readonly vector = new Vector3d(); // if ACCUDRAW_SetXAxis, etc.\r\n public distance = 0; // if ACCUDRAW_SetDistance\r\n public angle = 0; // if ACCUDRAW_SetAngle\r\n public zero() {\r\n this.flags = this.distance = this.angle = 0;\r\n this.origin.setZero();\r\n this.delta.setZero();\r\n this.vector.setZero();\r\n this.rMatrix.setIdentity();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Flags {\r\n public redrawCompass = false;\r\n public dialogNeedsUpdate = false;\r\n public rotationNeedsUpdate = true;\r\n public lockedRotation = false;\r\n public indexLocked = false;\r\n public haveValidOrigin = false;\r\n public fixedOrg = false;\r\n public auxRotationPlane = RotationMode.Top;\r\n public contextRotMode = 0;\r\n public baseRotation = RotationMode.View;\r\n public baseMode = 0;\r\n public pointIsOnPlane = false; // whether rawPointOnPlane is on compass plane\r\n public softAngleLock = false;\r\n public bearingFixToPlane2D = false;\r\n public inDataPoint = false;\r\n public ignoreDataButton = false;\r\n public animateRotation = false;\r\n}\r\n\r\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).\r\n * @public\r\n */\r\nexport class RoundOff {\r\n /** Whether rounding is to be applied to the corresponding dynamic distance or angle value.\r\n * @note To be considered active, units must also specify at least one increment value.\r\n */\r\n public active = false;\r\n /** Round off increment value(s), meters for distance round off, and radians for angle round off.\r\n * @note When multiple values are specified, rounding is based on smallest discernable value at current view zoom.\r\n */\r\n public units = new Set<number>();\r\n}\r\n\r\n/** @internal */\r\nexport class SavedState {\r\n public state = CurrentState.NotEnabled;\r\n public mode = CompassMode.Polar;\r\n public rotationMode = RotationMode.View;\r\n public readonly axes = new ThreeAxes();\r\n public readonly origin = new Point3d();\r\n public auxRotationPlane = 0;\r\n public contextRotMode = 0;\r\n public fixedOrg = false;\r\n public ignoreDataButton = true; // By default the data point that terminates a view tool or input collector should be ignored...\r\n public ignoreFlags: AccuDrawFlags = 0;\r\n}\r\n\r\n/** @internal */\r\nexport class ThreeAxes {\r\n public readonly x = Vector3d.unitX();\r\n public readonly y = Vector3d.unitY();\r\n public readonly z = Vector3d.unitZ();\r\n public setFrom(other: ThreeAxes) {\r\n this.x.setFrom(other.x);\r\n this.y.setFrom(other.y);\r\n this.z.setFrom(other.z);\r\n }\r\n public fromMatrix3d(rMatrix: Matrix3d): void {\r\n rMatrix.getRow(0, this.x);\r\n rMatrix.getRow(1, this.y);\r\n rMatrix.getRow(2, this.z);\r\n }\r\n public static createFromMatrix3d(rMatrix: Matrix3d, result?: ThreeAxes): ThreeAxes {\r\n result = result ? result : new ThreeAxes();\r\n result.fromMatrix3d(rMatrix);\r\n return result;\r\n }\r\n public toMatrix3d(out?: Matrix3d) { return Matrix3d.createRows(this.x, this.y, this.z, out); }\r\n public clone(): ThreeAxes {\r\n const out = new ThreeAxes();\r\n out.setFrom(this);\r\n return out;\r\n }\r\n\r\n public equals(other: ThreeAxes): boolean { return this.x.isExactEqual(other.x) && this.y.isExactEqual(other.y) && this.z.isExactEqual(other.z); }\r\n}\r\n\r\n/** Accudraw is an aide for entering coordinate data.\r\n * This class is public to allow applications to provide a user interface for AccuDraw, either by implementing their own, or\r\n * using the one supplied by the itwin appui package.\r\n * @note When writing an [[InteractiveTool]] it is not correct to call methods on AccuDraw directly, tools should instead\r\n * provide hints to AccuDraw using [[AccuDrawHintBuilder]].\r\n * @public\r\n */\r\nexport class AccuDraw {\r\n private _currentState = CurrentState.NotEnabled;\r\n\r\n /** Current AccuDraw state */\r\n public get currentState(): CurrentState { return this._currentState; }\r\n public set currentState(state: CurrentState) {\r\n if (state === this._currentState)\r\n return;\r\n\r\n const wasActive = this.isActive;\r\n this._currentState = state;\r\n\r\n if (wasActive !== this.isActive)\r\n this.onCompassDisplayChange(wasActive ? \"hide\" : \"show\");\r\n }\r\n\r\n /** The current compass mode */\r\n public compassMode = CompassMode.Rectangular;\r\n /** The current compass rotation */\r\n public rotationMode = RotationMode.View;\r\n /** @internal */\r\n public currentView?: ScreenViewport; // will be nullptr if view not yet defined\r\n /** @internal */\r\n public readonly published = new AccudrawData(); // Staging area for hints\r\n /** @internal */\r\n public readonly origin = new Point3d(); // origin point...not on compass plane when z != 0.0\r\n /** @internal */\r\n public readonly axes = new ThreeAxes(); // X, Y and Z vectors (3d rotation matrix)\r\n /** @internal */\r\n public readonly delta = Vector3d.unitZ(); // dialog items (x, y & z)\r\n private _distance = 0; // current distance\r\n private _angle = 0; // current angle\r\n /** @internal */\r\n public locked = LockedStates.NONE_LOCKED; // axis/distance locked bit mask\r\n /** @internal */\r\n public indexed = LockedStates.NONE_LOCKED; // axis/distance indexed bit mask\r\n private readonly _distanceRoundOff = new RoundOff(); // distance round off enabled and unit\r\n private readonly _angleRoundOff = new RoundOff(); // angle round off enabled and unit\r\n /** @internal */\r\n public readonly flags = new Flags(); // current state flags\r\n private readonly _fieldLocked: [boolean, boolean, boolean, boolean, boolean] = [false, false, false, false, false]; // locked state of fields\r\n private readonly _keyinStatus: [KeyinStatus, KeyinStatus, KeyinStatus, KeyinStatus, KeyinStatus] = [KeyinStatus.Dynamic, KeyinStatus.Dynamic, KeyinStatus.Dynamic, KeyinStatus.Dynamic, KeyinStatus.Dynamic]; // state of input field\r\n /** @internal */\r\n public readonly savedStateViewTool = new SavedState(); // Restore point for shortcuts/tools...\r\n /** @internal */\r\n public readonly savedStateInputCollector = new SavedState(); // Restore point for shortcuts/tools...\r\n private readonly _savedDistances: number[] = []; // History of previous distances...\r\n private readonly _savedAngles: number[] = []; // History of previous angles...\r\n private _savedDistanceIndex = -1; // Current saved distance index for choosing next/previous value...\r\n private _savedAngleIndex = -1; // Current saved distance index for choosing next/previous value...\r\n /** @internal */\r\n public readonly baseAxes = new ThreeAxes(); // Used for \"context\" base rotation to hold arbitrary rotation w/o needing to change ACS...\r\n /** @internal */\r\n public readonly lastAxes = new ThreeAxes(); // Last result from UpdateRotation, replaces cM.rMatrix...\r\n private _lastDistance = 0; // previous saved distance or distance indexing tick\r\n private _tolerance = 0; // computed view based indexing tolerance\r\n private _percentChanged = 0; // Compass animation state\r\n private _threshold = 0; // Threshold for automatic x/y field focus change.\r\n private _lastSnapDetail?: { point: Point3d, matrix: Matrix3d, sourceId: Id64String, isTentative: boolean, deselect?: boolean, indexed?: true };\r\n /** @internal */\r\n public readonly planePt = new Point3d(); // same as origin unless non-zero locked z value\r\n private readonly _rawDelta = new Point2d(); // used by rect fix point\r\n private readonly _rawPoint = new Point3d(); // raw uor point passed to fix point\r\n private readonly _rawPointOnPlane = new Point3d(); // adjusted rawPoint by applying hard/soft construction plane\r\n /** @internal */\r\n public readonly point = new Point3d(); // current cursor point\r\n /** @internal */\r\n public readonly vector = Vector3d.unitZ(); // current/last good locked direction\r\n private _xIsNegative = false; // Last delta.x was negative\r\n private _yIsNegative = false; // Last delta.y was negative\r\n private _xIsExplicit = false; // Sign of delta.x established from user input input, don't allow +/- side flip.\r\n private _yIsExplicit = false; // Sign of delta.y established from user input input, don't allow +/- side flip.\r\n /** Disable automatic focus change when user is entering input. */\r\n public dontMoveFocus = false;\r\n /** Set input field to move focus to (X_Item or Y_Item) for automatic focus change. */\r\n public newFocus = ItemField.X_Item;\r\n private readonly _rMatrix = new Matrix3d();\r\n /** @internal */\r\n protected _acsPickId?: string;\r\n\r\n // Compass Display Preferences...\r\n /** @internal */\r\n protected _compassSizeInches = 0.44;\r\n /** @internal */\r\n protected _animationFrames = 12;\r\n /** @internal */\r\n protected _indexToleranceInches = 0.11;\r\n /** @internal */\r\n protected readonly _frameColor = ColorDef.create(ColorByName.lightGrey);\r\n /** @internal */\r\n protected readonly _fillColor = ColorDef.create(ColorByName.blue);\r\n /** @internal */\r\n protected readonly _xColor = ColorDef.create(ColorByName.red);\r\n /** @internal */\r\n protected readonly _yColor = ColorDef.create(ColorByName.green);\r\n /** @internal */\r\n protected readonly _indexColor = ColorDef.create(ColorByName.white);\r\n /** @internal */\r\n protected readonly _frameColorNoFocus = ColorDef.create(ColorByName.darkGrey);\r\n /** @internal */\r\n protected readonly _fillColorNoFocus = ColorDef.create(ColorByName.lightGrey);\r\n\r\n /** When true improve behavior for +/- input when cursor switches side and try to automatically manage focus */\r\n public smartKeyin = true;\r\n /** When true the compass follows the origin hint as opposed to remaining at a fixed location */\r\n public floatingOrigin = true;\r\n /** When true the z input field will remain locked with it's current value after a data button */\r\n public stickyZLock = false;\r\n /** When true the compass is always active and on screen instead of following the current tools request to activate */\r\n public alwaysShowCompass = false;\r\n /** When true all tool hints are applied as opposed to only selected hints */\r\n public contextSensitive = true;\r\n /** When true the current point is adjusted to the x and y axes when within a close tolerance */\r\n public axisIndexing = true;\r\n /** When true the current point is adjusted to the last locked distance value when within a close tolerance */\r\n public distanceIndexing = true;\r\n /** When true locking the angle also moves focus to the angle input field */\r\n public autoFocusFields = true;\r\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 */\r\n public autoPointPlacement = false;\r\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\r\n * @beta\r\n */\r\n public snapIndexing = true;\r\n\r\n /** Get distance round off settings */\r\n public get distanceRoundOff(): RoundOff { return this._distanceRoundOff; }\r\n /** Get angle round off settings */\r\n public get angleRoundOff(): RoundOff { return this._angleRoundOff; }\r\n\r\n private static _tempRot = new Matrix3d();\r\n\r\n /** @internal */\r\n public onInitialized() { this.enableForSession(); }\r\n /** @internal */\r\n public getRotation(rMatrix?: Matrix3d): Matrix3d {\r\n if (!rMatrix)\r\n rMatrix = this._rMatrix;\r\n\r\n Matrix3d.createRows(this.axes.x, this.axes.y, this.axes.z, rMatrix);\r\n return rMatrix;\r\n }\r\n\r\n /** When true AccuDraw is enabled by the application and can be used by interactive tools */\r\n public get isEnabled(): boolean { return (this.currentState > CurrentState.NotEnabled); }\r\n /** When true the compass is displayed and adjusting input points for the current interactive tool */\r\n public get isActive(): boolean { return CurrentState.Active === this.currentState; }\r\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 */\r\n public get isInactive(): boolean { return (CurrentState.Inactive === this.currentState); }\r\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 */\r\n public get isDeactivated(): boolean { return (CurrentState.Deactivated === this.currentState); }\r\n\r\n /** Get the current lock state for the supplied input field */\r\n public getFieldLock(index: ItemField): boolean { return this._fieldLocked[index]; }\r\n /** @internal */\r\n public getKeyinStatus(index: ItemField): KeyinStatus { return this._keyinStatus[index]; }\r\n /** Get the current keyin status for the supplied input field */\r\n public isDynamicKeyinStatus(index: ItemField): boolean { return KeyinStatus.Dynamic === this.getKeyinStatus(index) }\r\n\r\n /** Get whether AccuDraw currently has input focus */\r\n public get hasInputFocus() { return true; }\r\n /** Called to request input focus be set to AccuDraw. Focus is managed by AccuDraw UI. */\r\n public grabInputFocus() { }\r\n /** Get default focus item for the current compass mode */\r\n public defaultFocusItem(): ItemField { return (CompassMode.Polar === this.compassMode ? ItemField.DIST_Item : this.newFocus); }\r\n\r\n /** @internal */\r\n public activate(): void {\r\n // Upgrade state to inactive so upgradeToActiveState knows it is ok to move to active...\r\n if (CurrentState.Deactivated === this.currentState)\r\n this.currentState = CurrentState.Inactive;\r\n this.upgradeToActiveState();\r\n }\r\n\r\n /** @internal */\r\n public deactivate() {\r\n this.downgradeInactiveState();\r\n // Don't allow compass to come back until user re-enables it...\r\n if (CurrentState.Inactive === this.currentState)\r\n this.currentState = CurrentState.Deactivated;\r\n }\r\n\r\n /** Whether to show Z input field in 3d. Sub-classes can override to restrict AccuDraw to 2d input when working in overlays where\r\n * depth is not important.\r\n * @note Intended to be used in conjunction with ViewState.allow3dManipulations returning false to also disable 3d rotation and\r\n * ToolAdmin.acsPlaneSnapLock set to true for projecting snapped points to the view's ACS plane.\r\n * @see [[ViewState.allow3dManipulations]][[ToolAdmin.acsPlaneSnapLock]]\r\n */\r\n public is3dCompass(viewport: Viewport): boolean {\r\n return viewport.view.is3d();\r\n }\r\n\r\n /** Change current compass input mode to either polar or rectangular */\r\n public setCompassMode(mode: CompassMode): void {\r\n if (mode === this.compassMode)\r\n return;\r\n\r\n this.compassMode = mode;\r\n this.onCompassModeChange();\r\n }\r\n\r\n /** Change current compass orientation */\r\n public setRotationMode(mode: RotationMode): void {\r\n if (mode === this.rotationMode)\r\n return;\r\n\r\n this.rotationMode = mode;\r\n this.onRotationModeChange();\r\n }\r\n\r\n /** Change the lock status for the supplied input field */\r\n public setFieldLock(index: ItemField, locked: boolean): void {\r\n if (locked === this._fieldLocked[index])\r\n return;\r\n\r\n this._fieldLocked[index] = locked;\r\n this.onFieldLockChange(index);\r\n }\r\n\r\n /** @internal */\r\n public setKeyinStatus(index: ItemField, status: KeyinStatus): void {\r\n if (status === this._keyinStatus[index])\r\n return;\r\n\r\n this._keyinStatus[index] = status;\r\n if (KeyinStatus.Dynamic !== status)\r\n this.dontMoveFocus = true;\r\n if (KeyinStatus.Partial === status)\r\n this._threshold = Math.abs(ItemField.X_Item === index ? this._rawDelta.y : this._rawDelta.x) + this._tolerance;\r\n\r\n this.onFieldKeyinStatusChange(index);\r\n }\r\n\r\n private needsRefresh(vp: Viewport): boolean {\r\n if (!this.isEnabled || this.isDeactivated)\r\n return false;\r\n\r\n // Get snap point from AccuSnap/Tentative or use raw point...\r\n let distance = 0.0;\r\n let snapPt = this._rawPoint;\r\n const ptP = this.point;\r\n const snap = TentativeOrAccuSnap.getCurrentSnap();\r\n\r\n if (snap) {\r\n snapPt = snap.snapPoint;\r\n distance = ptP.distance(snapPt);\r\n }\r\n\r\n const isRectMode = (CompassMode.Rectangular === this.compassMode);\r\n const offsetSnap = ((TentativeOrAccuSnap.isHot || IModelApp.tentativePoint.isActive) && ((this.locked) || (distance > 0.0)));\r\n\r\n // XY Offset:\r\n if (offsetSnap) {\r\n if (isRectMode) {\r\n let xIsOffset = false, yIsOffset = false;\r\n\r\n const vec = ptP.vectorTo(this._rawPointOnPlane);\r\n const xOffset = vec.dotProduct(this.axes.x);\r\n const yOffset = vec.dotProduct(this.axes.y);\r\n\r\n xIsOffset = (Math.abs(xOffset) > 1.0);\r\n yIsOffset = (Math.abs(yOffset) > 1.0);\r\n\r\n if (xIsOffset || yIsOffset)\r\n return true;\r\n }\r\n }\r\n\r\n const isOnCompassPlane = (!vp.view.is3d() || this.flags.pointIsOnPlane || this.isZLocked(vp));\r\n\r\n // Z Offset:\r\n if (offsetSnap) {\r\n if (isOnCompassPlane) {\r\n const zOffset = snapPt.distance(this._rawPointOnPlane);\r\n if (zOffset > Constants.SMALL_ANGLE || zOffset < -Constants.SMALL_ANGLE)\r\n return true;\r\n }\r\n }\r\n\r\n // Fat Point:\r\n if (offsetSnap)\r\n return true;\r\n\r\n let axisIsIndexed = false;\r\n\r\n // Axis Indexing:\r\n if (isRectMode) {\r\n if ((this.indexed & LockedStates.XY_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\r\n axisIsIndexed = true;\r\n } else {\r\n if ((this.indexed & LockedStates.ANGLE_BM || this.locked & LockedStates.ANGLE_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\r\n axisIsIndexed = true;\r\n }\r\n\r\n if (axisIsIndexed)\r\n return true;\r\n\r\n // Distance Indexing:\r\n if (this.indexed & LockedStates.DIST_BM)\r\n return true;\r\n\r\n // XY Lock:\r\n if (isRectMode) {\r\n const locked = this.locked & LockedStates.XY_BM;\r\n\r\n if ((0 !== locked) && isOnCompassPlane) {\r\n switch (locked) {\r\n case LockedStates.X_BM:\r\n case LockedStates.Y_BM:\r\n case LockedStates.XY_BM:\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private updateLastSnapDetail(vp: ScreenViewport, fromSnap: boolean): void {\r\n if (!this.snapIndexing || !this.axisIndexing || this.flags.indexLocked || LockedStates.NONE_LOCKED !== this.locked) {\r\n this._lastSnapDetail = undefined;\r\n return;\r\n }\r\n\r\n if (!fromSnap) {\r\n if (this._lastSnapDetail?.deselect)\r\n this._lastSnapDetail = undefined;\r\n else if (this._lastSnapDetail)\r\n this._lastSnapDetail.deselect = false; // Allow moving cursor back to previous snap to clear it...\r\n return;\r\n }\r\n\r\n const snap = TentativeOrAccuSnap.getCurrentSnap();\r\n if (undefined === snap || this.origin.isAlmostEqual(snap.getPoint()))\r\n return;\r\n\r\n if (this._lastSnapDetail && this._lastSnapDetail.sourceId === snap.sourceId && this._lastSnapDetail.point.isAlmostEqual(snap.getPoint())) {\r\n if (false === this._lastSnapDetail.deselect)\r\n this._lastSnapDetail.deselect = true; // Stop indexing to previous snap...\r\n return; // Don't compute rotation if location hasn't changed...\r\n }\r\n\r\n const isTentative = IModelApp.tentativePoint.isSnapped;\r\n if (this._lastSnapDetail?.isTentative && !isTentative)\r\n return; // Don't update snap from tentative unless it's another tentative to support holding a snap location in a dense drawing...\r\n\r\n const rotation = AccuDraw.getSnapRotation(snap, vp);\r\n if (undefined === rotation)\r\n return;\r\n\r\n this._lastSnapDetail = { point: snap.getPoint().clone(), matrix: rotation, sourceId: snap.sourceId, isTentative };\r\n }\r\n\r\n /** @internal */\r\n public adjustPoint(pointActive: Point3d, vp: ScreenViewport, fromSnap: boolean): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n const lastWasIndexed = (0 !== this.indexed);\r\n let pointChanged = false, handled = false;\r\n\r\n if (0.0 !== pointActive.z && !vp.isPointAdjustmentRequired)\r\n pointActive.z = 0.0;\r\n\r\n if (1.0 !== vp.view.getAspectRatioSkew())\r\n this.downgradeInactiveState(); // Disable AccuDraw if skew is applied with AccuDraw already active...\r\n\r\n if (this.isInactive) {\r\n this.point.setFrom(pointActive);\r\n this.currentView = vp;\r\n this.fixPoint(pointActive, vp);\r\n\r\n if (!fromSnap && IModelApp.accuSnap.currHit)\r\n this.flags.redrawCompass = true;\r\n } else if (this.isActive) {\r\n this.updateLastSnapDetail(vp, fromSnap);\r\n\r\n const lastPt = this.point.clone();\r\n this.fixPoint(pointActive, vp);\r\n\r\n pointChanged = !lastPt.isExactEqual(this.point);\r\n this.processHints();\r\n handled = true;\r\n } else {\r\n this.currentView = vp; // Keep view up to date...\r\n }\r\n\r\n // If redraw of compass isn't required (yet!) check if needed...\r\n if (!this.flags.redrawCompass && this.isActive) {\r\n // Redraw required to erase/draw old/new indexing geometry...\r\n if (pointChanged && (lastWasIndexed || this.needsRefresh(vp)))\r\n this.flags.redrawCompass = true;\r\n }\r\n // Redraw is necessary, force decorators to be called...\r\n if (this.flags.redrawCompass)\r\n vp.invalidateDecorations();\r\n\r\n return handled;\r\n }\r\n\r\n private setDefaultOrigin(vp?: Viewport): void {\r\n if (!vp || this.locked || this._fieldLocked[ItemField.Z_Item])\r\n return;\r\n\r\n const view = vp.view;\r\n const rMatrix = view.getRotation();\r\n const acsOrigin = vp.getAuxCoordOrigin();\r\n rMatrix.multiplyVectorInPlace(acsOrigin);\r\n\r\n const origin = view.getCenter();\r\n view.getRotation().multiplyVectorInPlace(origin);\r\n origin.z = acsOrigin.z;\r\n view.getRotation().multiplyTransposeVectorInPlace(origin);\r\n\r\n this.origin.setFrom(origin); // View center at acs z...\r\n this.planePt.setFrom(origin);\r\n }\r\n\r\n /** @internal */\r\n public isZLocked(vp: Viewport): boolean {\r\n if (this._fieldLocked[ItemField.Z_Item])\r\n return true;\r\n if (vp.isSnapAdjustmentRequired && TentativeOrAccuSnap.isHot)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public accountForAuxRotationPlane(rot: ThreeAxes, plane: RotationMode): void {\r\n // ACS mode now can have \"front\" and \"side\" variations...\r\n switch (plane) {\r\n case RotationMode.Top:\r\n return;\r\n\r\n case RotationMode.Front:\r\n const temp = rot.y.clone();\r\n rot.y.setFrom(rot.z);\r\n temp.scale(-1.0, rot.z);\r\n return;\r\n\r\n case RotationMode.Side:\r\n const temp0 = rot.x.clone();\r\n rot.x.setFrom(rot.y);\r\n rot.y.setFrom(rot.z);\r\n rot.z.setFrom(temp0);\r\n }\r\n }\r\n\r\n private accountForACSContextLock(vec: Vector3d): void {\r\n // Base rotation is relative to ACS when ACS context lock is enabled...\r\n if (!this.currentView || !this.currentView.isContextRotationRequired)\r\n return;\r\n\r\n const rMatrix = AccuDraw.getStandardRotation(StandardViewId.Top, this.currentView, true);\r\n rMatrix.multiplyTransposeVectorInPlace(vec);\r\n }\r\n\r\n private static useACSContextRotation(vp: Viewport, isSnap: boolean): boolean {\r\n if (isSnap) {\r\n if (!vp.isSnapAdjustmentRequired)\r\n return false;\r\n } else {\r\n if (!vp.isContextRotationRequired)\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** Gets X, Y or Z vector from top, front, (right) side, ACS, or View. */\r\n private getStandardVector(whichVec: number): Vector3d {\r\n const vp = this.currentView;\r\n let rMatrix: Matrix3d;\r\n let myAxes: ThreeAxes;\r\n const vecP = Vector3d.createZero();\r\n switch (this.flags.baseRotation) {\r\n case RotationMode.Top:\r\n switch (whichVec) {\r\n case 0: vecP.x = 1.0; break;\r\n case 1: vecP.y = 1.0; break;\r\n case 2: vecP.z = 1.0; break;\r\n }\r\n this.accountForACSContextLock(vecP);\r\n break;\r\n\r\n case RotationMode.Front:\r\n switch (whichVec) {\r\n case 0: vecP.x = 1.0; break;\r\n case 1: vecP.z = 1.0; break;\r\n case 2: vecP.y = -1.0; break;\r\n }\r\n this.accountForACSContextLock(vecP);\r\n break;\r\n\r\n case RotationMode.Side:\r\n switch (whichVec) {\r\n case 0: vecP.y = 1.0; break;\r\n case 1: vecP.z = 1.0; break;\r\n case 2: vecP.x = 1.0; break;\r\n }\r\n this.accountForACSContextLock(vecP);\r\n break;\r\n\r\n case RotationMode.ACS:\r\n rMatrix = vp ? vp.getAuxCoordRotation() : Matrix3d.createIdentity();\r\n myAxes = ThreeAxes.createFromMatrix3d(rMatrix);\r\n this.accountForAuxRotationPlane(myAxes, this.flags.auxRotationPlane);\r\n switch (whichVec) {\r\n case 0: vecP.setFrom(myAxes.x); break;\r\n case 1: vecP.setFrom(myAxes.y); break;\r\n case 2: vecP.setFrom(myAxes.z); break;\r\n }\r\n break;\r\n\r\n case RotationMode.View:\r\n rMatrix = vp ? vp.rotation : Matrix3d.createIdentity();\r\n rMatrix.getRow(whichVec, vecP);\r\n break;\r\n\r\n case RotationMode.Context:\r\n myAxes = this.baseAxes.clone();\r\n this.accountForAuxRotationPlane(myAxes, this.flags.auxRotationPlane);\r\n switch (whichVec) {\r\n case 0: vecP.setFrom(myAxes.x); break;\r\n case 1: vecP.setFrom(myAxes.y); break;\r\n case 2: vecP.setFrom(myAxes.z); break;\r\n }\r\n break;\r\n }\r\n\r\n return vecP;\r\n }\r\n\r\n private getBestViewedRotationFromXVector(rotation: ThreeAxes, vp: Viewport): void {\r\n const viewZ = vp.rotation.getRow(2);\r\n const vec1 = this.getStandardVector(2);\r\n const vec2 = this.getStandardVector(1);\r\n const vec3 = this.getStandardVector(0);\r\n const rot1 = vec1.crossProduct(rotation.x);\r\n const rot2 = vec2.crossProduct(rotation.x);\r\n const rot3 = vec3.crossProduct(rotation.x);\r\n const useRot1 = (rot1.normalizeWithLength(rot1).mag > 0.00001);\r\n const useRot2 = (rot2.normalizeWithLength(rot2).mag > 0.00001);\r\n const useRot3 = (rot3.normalizeWithLength(rot3).mag > 0.00001);\r\n const dot1 = (useRot1 ? Math.abs(rotation.x.crossProduct(rot1).dotProduct(viewZ)) : -1.0);\r\n const dot2 = (useRot2 ? Math.abs(rotation.x.crossProduct(rot2).dotProduct(viewZ)) : -1.0);\r\n const dot3 = (useRot3 ? Math.abs(rotation.x.crossProduct(rot3).dotProduct(viewZ)) : -1.0);\r\n const max = Math.max(dot1, dot2, dot3);\r\n\r\n if (Geometry.isDistanceWithinTol(dot1 - dot2, 0.1) && (max !== dot3))\r\n rotation.y.setFrom(rot1);\r\n else if (max === dot1)\r\n rotation.y.setFrom(rot1);\r\n else if (max === dot2)\r\n rotation.y.setFrom(rot2);\r\n else\r\n rotation.y.setFrom(rot3);\r\n\r\n rotation.z.setFrom(rotation.x.crossProduct(rotation.y));\r\n }\r\n\r\n private getRotationFromVector(rotation: ThreeAxes, whichVec: number): void {\r\n let vec: Vector3d;\r\n switch (whichVec) {\r\n case 0:\r\n vec = this.getStandardVector(2);\r\n vec.crossProduct(rotation.x, rotation.y);\r\n\r\n if (rotation.y.normalizeWithLength(rotation.y).mag < .00001) {\r\n vec = this.getStandardVector(1);\r\n vec.crossProduct(rotation.x, rotation.y);\r\n rotation.y.normalizeInPlace();\r\n }\r\n\r\n rotation.x.crossProduct(rotation.y, rotation.z);\r\n break;\r\n\r\n case 1:\r\n vec = this.getStandardVector(2);\r\n vec.crossProduct(rotation.y, rotation.x);\r\n\r\n if (rotation.x.normalizeWithLength(rotation.x).mag < .00001) {\r\n vec = this.getStandardVector(0);\r\n vec.crossProduct(rotation.y, rotation.x);\r\n rotation.x.normalizeInPlace();\r\n }\r\n\r\n rotation.x.crossProduct(rotation.y, rotation.z);\r\n break;\r\n\r\n case 2:\r\n vec = this.getStandardVector(0);\r\n rotation.z.crossProduct(vec, rotation.y);\r\n\r\n if (rotation.y.normalizeWithLength(rotation.y).mag < .00001) {\r\n vec = this.getStandardVector(1);\r\n vec.crossProduct(rotation.z, rotation.x);\r\n rotation.x.normalizeInPlace();\r\n rotation.z.crossProduct(rotation.x, rotation.y);\r\n } else {\r\n rotation.y.crossProduct(rotation.z, rotation.x);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public updateRotation(animate: boolean = false, newRotationIn?: Matrix3d): void {\r\n let clearLocks = true;\r\n const oldRotation = this.axes.clone();\r\n let rMatrix: Matrix3d;\r\n let newRotation: ThreeAxes;\r\n\r\n if (!newRotationIn)\r\n newRotation = this.axes.clone(); // for axis based\r\n else\r\n newRotation = ThreeAxes.createFromMatrix3d(newRotationIn); // for animating context rotation change...\r\n\r\n const vp = this.currentView;\r\n const useACS = vp ? vp.isContextRotationRequired : false;\r\n\r\n switch (this.rotationMode) {\r\n case RotationMode.Top:\r\n // Get standard rotation relative to ACS when ACS context lock is enabled...\r\n newRotation.fromMatrix3d(AccuDraw.getStandardRotation(StandardViewId.Top, vp, useACS));\r\n this.flags.lockedRotation = true;\r\n break;\r\n\r\n case RotationMode.Front:\r\n // Get standard rotation relative to ACS when ACS context lock is enabled...\r\n newRotation.fromMatrix3d(AccuDraw.getStandardRotation(StandardViewId.Front, vp, useACS));\r\n this.flags.lockedRotation = true;\r\n break;\r\n\r\n case RotationMode.Side:\r\n // Get standard rotation relative to ACS when ACS context lock is enabled...\r\n newRotation.fromMatrix3d(AccuDraw.getStandardRotation(StandardViewId.Right, vp, useACS));\r\n this.flags.lockedRotation = true;\r\n break;\r\n\r\n case RotationMode.ACS:\r\n rMatrix = vp ? vp.getAuxCoordRotation() : Matrix3d.createIdentity();\r\n newRotation.fromMatrix3d(rMatrix);\r\n this.accountForAuxRotationPlane(newRotation, this.flags.auxRotationPlane);\r\n this.flags.lockedRotation = true;\r\n break;\r\n\r\n case RotationMode.View:\r\n rMatrix = vp ? vp.rotation : Matrix3d.createIdentity();\r\n newRotation.fromMatrix3d(rMatrix);\r\n this.flags.lockedRotation = false;\r\n break;\r\n\r\n case RotationMode.Context:\r\n switch (this.flags.contextRotMode) {\r\n case ContextMode.XAxis:\r\n this.getRotationFromVector(newRotation, 0);\r\n clearLocks = (LockedStates.Y_BM !== this.locked || !oldRotation.x.isExactEqual(newRotation.x)); // Try to keep locked axis when tool being unsuspended...\r\n break;\r\n\r\n case ContextMode.XAxis2:\r\n if (vp)\r\n this.getBestViewedRotationFromXVector(newRotation, vp); // Use base rotation axis that results in compass being most closely aligned to view direction....\r\n else\r\n this.getRotationFromVector(newRotation, 0);\r\n clearLocks = (LockedStates.Y_BM !== this.locked || !oldRotation.x.isExactEqual(newRotation.x)); // Try to keep locked axis when tool being unsuspended...\r\n break;\r\n\r\n case ContextMode.YAxis:\r\n this.getRotationFromVector(newRotation, 1);\r\n clearLocks = (LockedStates.X_BM !== this.locked || !oldRotation.y.isExactEqual(newRotation.y)); // Try to keep locked axis when tool being unsuspended...\r\n break;\r\n\r\n case ContextMode.ZAxis:\r\n this.getRotationFromVector(newRotation, 2);\r\n break;\r\n\r\n case ContextMode.Locked:\r\n break;\r\n }\r\n break;\r\n }\r\n\r\n const isChanged = !oldRotation.equals(newRotation);\r\n\r\n // unlock stuff if rotation has changed\r\n if (isChanged && clearLocks && (CompassMode.Rectangular === this.compassMode || !this._fieldLocked[ItemField.DIST_Item] || animate)) {\r\n this.locked = this.indexed = LockedStates.NONE_LOCKED;\r\n this.unlockAllFields();\r\n }\r\n\r\n this.axes.setFrom(newRotation);\r\n this.lastAxes.setFrom(newRotation);\r\n this.flags.redrawCompass = true;\r\n\r\n // If animate frame preference is set...\r\n if (!animate || !vp)\r\n return;\r\n\r\n // AccuDrawAnimatorPtr animator = AccuDrawAnimator:: Create();\r\n // viewport -> SetAnimator(* animator);\r\n // animator -> ChangeOfRotation(Matrix3d:: FromColumnVectors(oldRotation[0], oldRotation[1], oldRotation[2]));\r\n }\r\n\r\n /**\r\n * Enable AccuDraw so that it can be used by interactive tools.\r\n * This method is public to allow applications to provide a user interface to enable/disable AccuDraw.\r\n * @note Should not be called by interactive tools, those should use [[AccuDrawHintBuilder]]. AccuDraw is enabled for applications by default.\r\n * @see [[disableForSession]]\r\n */\r\n public enableForSession(): void {\r\n if (CurrentState.NotEnabled === this.currentState)\r\n this.currentState = CurrentState.Inactive;\r\n }\r\n\r\n /**\r\n * Disable AccuDraw so that it can not be used by interactive tools.\r\n * This method is public to allow applications to provide a user interface to enable/disable AccuDraw.\r\n * @note Should not be called by interactive tools, those should use [[AccuDrawHintBuilder]]. AccuDraw is enabled for applications by default.\r\n * @see [[enableForSession]]\r\n */\r\n public disableForSession(): void {\r\n this.currentState = CurrentState.NotEnabled;\r\n this.flags.redrawCompass = true; // Make sure decorators are called so we don't draw (i.e. erase AccuDraw compass)\r\n }\r\n\r\n /** @internal */\r\n public setLastPoint(pt: Point3d): void {\r\n const viewport = this.currentView;\r\n if (!viewport)\r\n return;\r\n\r\n const ev = new BeButtonEvent({ point: pt, rawPoint: pt, viewPoint: viewport.worldToView(pt), viewport });\r\n IModelApp.toolAdmin.setAdjustedDataPoint(ev);\r\n }\r\n\r\n /** Emulate a mouse click at the specified location in the supplied view by sending button down/up events. */\r\n public async sendDataPoint(pt: Point3d, viewport: ScreenViewport): Promise<void> {\r\n const ev = new BeButtonEvent({ point: pt, rawPoint: pt, viewPoint: viewport.worldToView(pt), viewport, inputSource: InputSource.Mouse, isDown: true });\r\n\r\n // Send both down and up events...\r\n await IModelApp.toolAdmin.sendButtonEvent(ev);\r\n ev.isDown = false;\r\n return IModelApp.toolAdmin.sendButtonEvent(ev);\r\n }\r\n\r\n /** @internal */\r\n public clearTentative(): boolean {\r\n if (!IModelApp.tentativePoint.isActive)\r\n return false;\r\n\r\n const wasSnapped = IModelApp.tentativePoint.isSnapped;\r\n IModelApp.tentativePoint.clear(true);\r\n return wasSnapped;\r\n }\r\n\r\n /** @internal */\r\n public async doAutoPoint(index: ItemField, mode: CompassMode): Promise<void> {\r\n const vp = this.currentView;\r\n if (!vp)\r\n return;\r\n\r\n if (CompassMode.Polar === mode) {\r\n if (!this.autoPointPlacement)\r\n return;\r\n\r\n if (this._fieldLocked[ItemField.DIST_Item] && (this._fieldLocked[ItemField.ANGLE_Item] || this.indexed & LockedStates.ANGLE_BM) && KeyinStatus.Dynamic === this._keyinStatus[index]) {\r\n this.fixPointPolar(vp);\r\n return this.sendDataPoint(this.point, vp);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (this._fieldLocked[ItemField.X_Item] && this._fieldLocked[ItemField.Y_Item]) {\r\n if (!this.isActive) {\r\n if (!vp.view.is3d() || this._fieldLocked[ItemField.Z_Item]) {\r\n const globalOrigin = new Point3d();\r\n\r\n if (vp.view.isSpatialView())\r\n globalOrigin.setFrom(vp.view.iModel.globalOrigin);\r\n\r\n return this.sendDataPoint(globalOrigin.plus(this.delta), vp);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (!this.autoPointPlacement || KeyinStatus.Dynamic !== this._keyinStatus[index])\r\n return;\r\n\r\n this.origin.plus3Scaled(this.axes.x, this.delta.x, this.axes.y, this.delta.y, this.axes.z, this.delta.z, this.point);\r\n return this.sendDataPoint(this.point, vp);\r\n }\r\n\r\n if (!this.autoPointPlacement || KeyinStatus.Dynamic !== this._keyinStatus[index])\r\n return;\r\n\r\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))) {\r\n this.origin.plus3Scaled(this.axes.x, this.delta.x, this.axes.y, this.delta.y, this.axes.z, this.delta.z, this.point);\r\n return this.sendDataPoint(this.point, vp);\r\n }\r\n }\r\n\r\n /** Get the current value for the supplied input field */\r\n public getValueByIndex(index: ItemField): number {\r\n switch (index) {\r\n case ItemField.X_Item: return this.delta.x;\r\n case ItemField.Y_Item: return this.delta.y;\r\n case ItemField.Z_Item: return this.delta.z;\r\n case ItemField.DIST_Item: return this._distance;\r\n case ItemField.ANGLE_Item: return this._angle;\r\n default:\r\n return 0.0;\r\n }\r\n }\r\n\r\n /** Set the current value for the supplied input field */\r\n public setValueByIndex(index: ItemField, value: number): void {\r\n switch (index) {\r\n case ItemField.X_Item:\r\n this.delta.x = value;\r\n break;\r\n case ItemField.Y_Item:\r\n this.delta.y = value;\r\n break;\r\n case ItemField.Z_Item:\r\n this.delta.z = value;\r\n break;\r\n case ItemField.DIST_Item:\r\n this._distance = value;\r\n break;\r\n case ItemField.ANGLE_Item:\r\n this._angle = value;\r\n break;\r\n }\r\n }\r\n\r\n private updateVector(angle: number): void {\r\n this.vector.set(Math.cos(angle), Math.sin(angle), 0.0);\r\n const rMatrix = this.getRotation();\r\n rMatrix.multiplyTransposeVectorInPlace(this.vector);\r\n }\r\n\r\n /** Allow the AccuDraw user interface to supply the distance parser */\r\n public getLengthParser(): ParserSpec | undefined {\r\n return IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Length);\r\n }\r\n\r\n /** Allow the AccuDraw user interface to supply the distance parser */\r\n public getLengthFormatter(): FormatterSpec | undefined {\r\n return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Length);\r\n }\r\n\r\n private stringToDistance(str: string): QuantityParseResult {\r\n const parserSpec = this.getLengthParser();\r\n if (parserSpec)\r\n return parserSpec.parseToQuantityValue(str);\r\n return { ok: false, error: ParseError.InvalidParserSpec };\r\n }\r\n\r\n private stringFromDistance(distance: number): string {\r\n const formatterSpec = this.getLengthFormatter();\r\n let formattedValue = distance.toString();\r\n if (formatterSpec)\r\n formattedValue = IModelApp.quantityFormatter.formatQuantity(distance, formatterSpec);\r\n return formattedValue;\r\n }\r\n\r\n /** Allow the AccuDraw user interface to specify bearing */\r\n public get isBearingMode(): boolean { return this.getAngleParser()?.format.type === FormatType.Bearing; }\r\n\r\n /** Allow the AccuDraw user interface to specify bearing directions are always in xy plane */\r\n public get bearingFixedToPlane2d() { return this.flags.bearingFixToPlane2D; }\r\n public set bearingFixedToPlane2d(enable: boolean) { this.flags.bearingFixToPlane2D = enable; }\r\n\r\n /** Allow the AccuDraw user interface to supply the angle/direction parser */\r\n public getAngleParser(): ParserSpec | undefined {\r\n return IModelApp.quantityFormatter.findParserSpecByQuantityType(QuantityType.Angle);\r\n }\r\n\r\n /** Allow the AccuDraw user interface to supply the angle/direction formatter */\r\n public getAngleFormatter(): FormatterSpec | undefined {\r\n return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Angle);\r\n }\r\n\r\n private stringToAngle(inString: string): QuantityParseResult {\r\n const parserSpec = this.getAngleParser();\r\n if (parserSpec)\r\n return parserSpec.parseToQuantityValue(inString);\r\n return { ok: false, error: ParseError.InvalidParserSpec };\r\n }\r\n\r\n private stringFromAngle(angle: number): string {\r\n if (this.isBearingMode && this.flags.bearingFixToPlane2D) {\r\n const point = Vector3d.create(this.axes.x.x, this.axes.x.y, 0.0);\r\n const matrix = Matrix3d.createRows(this.axes.x, this.axes.y, this.axes.z);\r\n if (matrix.determinant() < 0)\r\n angle = -angle; // Account for left handed rotations...\r\n\r\n point.normalizeInPlace();\r\n let adjustment = Math.acos(point.x);\r\n\r\n if (point.y < 0.0)\r\n adjustment = -adjustment;\r\n angle += adjustment; // This is the angle measured from design x...\r\n angle = (Math.PI / 2) - angle; // Account for bearing direction convention...\r\n\r\n if (angle < 0)\r\n angle = (Math.PI * 2) + angle; // Negative bearings aren't valid?\r\n }\r\n\r\n const formatterSpec = this.getAngleFormatter();\r\n let formattedValue = angle.toString();\r\n if (formatterSpec)\r\n formattedValue = IModelApp.quantityFormatter.formatQuantity(angle, formatterSpec);\r\n return formattedValue;\r\n }\r\n\r\n /** Can be called by sub-classes to get a formatted value to display for an AccuDraw input field\r\n * @see [[onFieldValueChange]]\r\n */\r\n public getFormattedValueByIndex(index: ItemField): string {\r\n const value = IModelApp.accuDraw.getValueByIndex(index);\r\n if (ItemField.ANGLE_Item === index)\r\n return this.stringFromAngle(value);\r\n return this.stringFromDistance(value);\r\n }\r\n\r\n private updateFieldValue(index: ItemField, input: string): BentleyStatus {\r\n if (input.length === 0)\r\n return BentleyStatus.ERROR;\r\n\r\n if (input.length === 1)\r\n switch (input) {\r\n case \":\":\r\n case \"-\":\r\n case \"+\":\r\n case \".\":\r\n return BentleyStatus.ERROR;\r\n }\r\n\r\n let parseResult;\r\n\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n parseResult = this.stringToDistance(input);\r\n if (Parser.isParsedQuantity(parseResult)) {\r\n this._distance = parseResult.value;\r\n break;\r\n }\r\n return BentleyStatus.ERROR;\r\n\r\n case ItemField.ANGLE_Item:\r\n parseResult = this.stringToAngle(input);\r\n if (Parser.isParsedQuantity(parseResult)) {\r\n if (this.isBearingMode && this.flags.bearingFixToPlane2D)\r\n this._angle = (Math.PI / 2) - parseResult.value;\r\n else\r\n this._angle = parseResult.value;\r\n break;\r\n }\r\n return BentleyStatus.ERROR;\r\n\r\n case ItemField.X_Item:\r\n parseResult = this.stringToDistance(input);\r\n if (Parser.isParsedQuantity(parseResult)) {\r\n this.delta.x = parseResult.value;\r\n\r\n this._xIsExplicit = (input[0] === \"+\" || input[0] === \"-\");\r\n if (!this._xIsExplicit) {\r\n if (this.smartKeyin && this.isActive && this._xIsNegative === (this.delta.x >= 0.0))\r\n this.delta.x = -this.delta.x;\r\n }\r\n break;\r\n }\r\n return BentleyStatus.ERROR;\r\n\r\n case ItemField.Y_Item:\r\n parseResult = this.stringToDistance(input);\r\n if (Parser.isParsedQuantity(parseResult)) {\r\n this.delta.y = parseResult.value;\r\n\r\n this._yIsExplicit = (input[0] === \"+\" || input[0] === \"-\");\r\n if (!this._yIsExplicit) {\r\n if (this.smartKeyin && this.isActive && this._yIsNegative === (this.delta.y >= 0.0))\r\n this.delta.y = -this.delta.y;\r\n }\r\n break;\r\n }\r\n return BentleyStatus.ERROR;\r\n\r\n case ItemField.Z_Item:\r\n parseResult = this.stringToDistance(input);\r\n if (Parser.isParsedQuantity(parseResult)) {\r\n this.delta.z = parseResult.value;\r\n break;\r\n }\r\n return BentleyStatus.ERROR;\r\n }\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** @internal */\r\n public unlockAllFields(): void {\r\n this.locked = LockedStates.NONE_LOCKED;;\r\n\r\n if (CompassMode.Polar === this.compassMode) {\r\n if (this._fieldLocked[ItemField.DIST_Item])\r\n this.setFieldLock(ItemField.DIST_Item, false);\r\n\r\n if (this._fieldLocked[ItemField.ANGLE_Item])\r\n this.setFieldLock(ItemField.ANGLE_Item, false);\r\n } else {\r\n if (this._fieldLocked[ItemField.X_Item])\r\n this.setFieldLock(ItemField.X_Item, false);\r\n\r\n if (this._fieldLocked[ItemField.Y_Item])\r\n this.setFieldLock(ItemField.Y_Item, false);\r\n }\r\n\r\n if (this._fieldLocked[ItemField.Z_Item]) {\r\n if (this.stickyZLock)\r\n this.delta.z = 0.0;\r\n else\r\n this.setFieldLock(ItemField.Z_Item, false);\r\n }\r\n\r\n this.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic);\r\n this.setKeyinStatus(ItemField.ANGLE_Item, KeyinStatus.Dynamic);\r\n this.setKeyinStatus(ItemField.X_Item, KeyinStatus.Dynamic);\r\n this.setKeyinStatus(ItemField.Y_Item, KeyinStatus.Dynamic);\r\n this.setKeyinStatus(ItemField.Z_Item, KeyinStatus.Dynamic);\r\n\r\n if (!this.smartKeyin)\r\n this.setFocusItem(CompassMode.Polar === this.compassMode ? ItemField.DIST_Item : ItemField.X_Item);\r\n\r\n this.dontMoveFocus = false;\r\n }\r\n\r\n /** produces the normal vector of the closest plane to the view which\r\n * contains inVec (uses true view rotation, never auxiliary)\r\n */\r\n private planeByVectorAndView(normalVec: Vector3d, inVec: Vector3d, vp: Viewport): boolean {\r\n if (!vp.view.is3d()) {\r\n normalVec.setFrom(Vector3d.unitZ());\r\n return true;\r\n }\r\n\r\n const viewNormal = vp.rotation.getRow(2);\r\n const yVec = viewNormal.crossProduct(inVec);\r\n\r\n if (!yVec.normalizeInPlace()) {\r\n normalVec.setFrom(viewNormal);\r\n return false;\r\n }\r\n\r\n inVec.crossProduct(yVec, normalVec);\r\n return true;\r\n }\r\n\r\n private _acosWithLimitCheck(value: number): number {\r\n if (value >= 1.0)\r\n return 0.0;\r\n if (value <= -1.0)\r\n return Math.PI;\r\n return Math.acos(value);\r\n }\r\n\r\n private handleDegeneratePolarCase(): void {\r\n if (!(this.locked & LockedStates.DIST_BM))\r\n this._distance = 0.0;\r\n\r\n if (this.locked & LockedStates.VEC_BM) {\r\n this._angle = this._acosWithLimitCheck(this.vector.dotProduct(this.axes.x));\r\n } else if (this.locked & LockedStates.Y_BM) {\r\n this.vector.setFrom(this.axes.y);\r\n this._angle = Math.PI / 2.0;\r\n this.indexed = this.locked;\r\n } else if (this.locked & LockedStates.X_BM) {\r\n this.vector.setFrom(this.axes.x);\r\n this._angle = 0.0;\r\n this.indexed = this.locked;\r\n } else {\r\n // use last good vector\r\n this._angle = this._acosWithLimitCheck(this.vector.dotProduct(this.axes.x));\r\n }\r\n this.origin.plusScaled(this.vector, this._distance, this.point);\r\n }\r\n\r\n private rawDeltaIsValid(rawDelta: number): boolean {\r\n /* Cursor Distance (*(+/-)) sense testing is not valid when raw delta is\r\n meaningless (0.0)...to make this change safer only reject the\r\n raw delta if unit or grid lock is also on. */\r\n if (0.0 !== rawDelta)\r\n return true;\r\n\r\n // The \"I don't want grid lock\" flag can be set by tools to override the default behavior...\r\n if (0 === (IModelApp.toolAdmin.toolState.coordLockOvr & CoordinateLockOverrides.Grid))\r\n return true;\r\n\r\n return (!IModelApp.toolAdmin.gridLock);\r\n }\r\n\r\n /** Call from an AccuDraw UI event to check if key is valid for updating the input field value. */\r\n protected itemFieldInputIsValid(key: string, item: ItemField): boolean {\r\n if (1 !== key.length)\r\n return false;\r\n\r\n switch (key) {\r\n case \".\":\r\n case \",\":\r\n return true;\r\n\r\n case \"'\": // feet/minutes...\r\n case \"\\\"\": // inches/seconds...\r\n return true;\r\n\r\n case \"°\": // degrees...\r\n return (ItemField.ANGLE_Item === item); // Allowed for angle input...\r\n\r\n case \"N\":\r\n case \"S\":\r\n case \"E\":\r\n case \"W\":\r\n case \"n\":\r\n case \"s\":\r\n case \"e\":\r\n case \"w\":\r\n return (ItemField.ANGLE_Item === item && this.isBearingMode); // Allowed for bearing direction input, trumps shortcuts...\r\n }\r\n\r\n if (!Number.isNaN(parseInt(key, 10)))\r\n return true; // Accept numeric input...\r\n\r\n if (key.toLowerCase() !== key.toUpperCase())\r\n return false; // Treat unhandled letters as potential shortcuts...\r\n\r\n // Let parser deal with anything else, like +-/*, etc.\r\n return true;\r\n }\r\n\r\n /** Call from an AccuDraw UI event to sync the supplied input field value */\r\n public async processFieldInput(index: ItemField, input: string, synchText: boolean): Promise<void> {\r\n if (BentleyStatus.SUCCESS !== this.updateFieldValue(index, input)) {\r\n this._unlockFieldInternal(index); // Don't want keyin status to change when entering '.', etc.\r\n return;\r\n }\r\n\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n this.distanceLock(synchText, false); // Don't save distance here, partial input...\r\n await this.doAutoPoint(index, CompassMode.Polar);\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n this.setFieldLock(index, true);\r\n\r\n if (synchText) {\r\n this.onFieldValueChange(index);\r\n this.setKeyinStatus(index, KeyinStatus.Dynamic);\r\n }\r\n\r\n if (!this.isBearingMode || !this.flags.bearingFixToPlane2D)\r\n this.updateVector(this._angle);\r\n else\r\n this.vector.set(Math.cos(this._angle), Math.sin(this._angle), 0.0);\r\n\r\n this.locked |= LockedStates.VEC_BM;\r\n await this.doAutoPoint(index, CompassMode.Polar);\r\n break;\r\n\r\n case ItemField.X_Item:\r\n case ItemField.Y_Item:\r\n this.locked |= (ItemField.X_Item === index) ? LockedStates.X_BM : LockedStates.Y_BM;\r\n\r\n // falls through\r\n case ItemField.Z_Item:\r\n this.setFieldLock(index, true);\r\n if (synchText) {\r\n this.onFieldValueChange(index);\r\n this.setKeyinStatus(index, KeyinStatus.Dynamic);\r\n }\r\n\r\n await this.doAutoPoint(index, this.compassMode);\r\n break;\r\n }\r\n\r\n this.refreshDecorationsAndDynamics();\r\n }\r\n\r\n private _lockFieldInternal(index: ItemField): void {\r\n if (this._fieldLocked[index])\r\n return;\r\n\r\n this.setFieldLock(index, true);\r\n\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n this.distanceLock(true, false);\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n this.angleLock();\r\n break;\r\n\r\n case ItemField.X_Item:\r\n this.locked |= LockedStates.X_BM;\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n this.locked |= LockedStates.Y_BM;\r\n break;\r\n\r\n case ItemField.Z_Item:\r\n break;\r\n }\r\n }\r\n\r\n private _unlockFieldInternal(index: ItemField): void {\r\n switch (index) {\r\n case ItemField.DIST_Item:\r\n this.locked &= ~LockedStates.DIST_BM;\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n this.locked &= ~LockedStates.VEC_BM;\r\n break;\r\n\r\n case ItemField.X_Item:\r\n this.locked &= ~LockedStates.X_BM;\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n this.locked &= ~LockedStates.Y_BM;\r\n break;\r\n }\r\n\r\n if (index !== ItemField.Z_Item || !this.stickyZLock)\r\n this.setFieldLock(index, false);\r\n }\r\n\r\n /** @internal */\r\n public updateFieldLock(index: ItemField, locked: boolean): void {\r\n if (locked) {\r\n this._lockFieldInternal(index);\r\n return;\r\n }\r\n\r\n this._unlockFieldInternal(index);\r\n this.setKeyinStatus(index, KeyinStatus.Dynamic);\r\n }\r\n\r\n /** @internal */\r\n public static getSnapRotation(snap: SnapDetail, currentVp: Viewport | undefined, out?: Matrix3d): Matrix3d | undefined {\r\n const vp = (undefined !== currentVp) ? currentVp : snap.viewport;\r\n const snapDetail = snap.primitive?.closestPoint(snap.snapPoint, false);\r\n const frame = snapDetail?.curve?.fractionToFrenetFrame(snapDetail.fraction);\r\n\r\n if (undefined === frame && undefined === snap.normal)\r\n return undefined;\r\n\r\n const zVec = (vp.view.allow3dManipulations() ? (snap.normal?.clone() ?? frame?.matrix.columnZ()) : Vector3d.unitZ());\r\n if (undefined === zVec)\r\n return undefined;\r\n\r\n const rotation = out ? out : new Matrix3d();\r\n const viewZ = vp.rotation.rowZ();\r\n\r\n zVec.normalizeInPlace();\r\n if (zVec.dotProduct(viewZ) < 0.0)\r\n zVec.negate(zVec);\r\n\r\n if (frame) {\r\n const xVec = frame.matrix.columnX();\r\n xVec.normalizeInPlace();\r\n const yVec = zVec.unitCrossProduct(xVec);\r\n\r\n if (undefined !== yVec) {\r\n rotation.setColumns(xVec, yVec, zVec);\r\n rotation.makeRigid();\r\n rotation.transposeInPlace();\r\n return rotation;\r\n }\r\n }\r\n\r\n Matrix3d.createRigidHeadsUp(zVec, undefined, rotation);\r\n rotation.transposeInPlace();\r\n return rotation;\r\n }\r\n\r\n /** @internal */\r\n public static getStandardRotation(nStandard: StandardViewId, vp: Viewport | undefined, useACS: boolean, out?: Matrix3d): Matrix3d {\r\n const rMatrix = out ? out : new Matrix3d();\r\n rMatrix.setFrom(ViewState.getStandardViewMatrix(nStandard));\r\n const useVp = vp ? vp : IModelApp.viewManager.selectedView;\r\n\r\n if (!useACS) {\r\n const globeToWorld = vp?.view.getGlobeRotation();\r\n if (globeToWorld)\r\n rMatrix.multiplyMatrixMatrix(globeToWorld, rMatrix);\r\n }\r\n\r\n if (!useACS || !useVp)\r\n return rMatrix;\r\n\r\n rMatrix.multiplyMatrixMatrix(useVp.getAuxCoordRotation(AccuDraw._tempRot), rMatrix);\r\n return rMatrix;\r\n }\r\n\r\n /** @internal */\r\n public static getCurrentOrientation(vp: Viewport, checkAccuDraw: boolean, checkACS: boolean, rMatrix?: Matrix3d): Matrix3d | undefined {\r\n if (checkAccuDraw && IModelApp.accuDraw.isActive)\r\n return IModelApp.accuDraw.getRotation(rMatrix);\r\n\r\n const useVp = vp ? vp : IModelApp.viewManager.selectedView;\r\n if (!useVp)\r\n return Matrix3d.createIdentity(rMatrix);\r\n\r\n if (checkACS && useVp.isContextRotationRequired)\r\n return useVp.getAuxCoordRotation(rMatrix);\r\n\r\n return useVp.rotation;\r\n }\r\n\r\n /** @internal */\r\n public static updateAuxCoordinateSystem(acs: AuxCoordSystemState, vp: Viewport, allViews: boolean = true): void {\r\n // When modeling with multiple spatial views open, you'd typically want the same ACS in all views...\r\n if (allViews && vp.view.isSpatialView()) {\r\n for (const otherVp of IModelApp.viewManager) {\r\n if (otherVp !== vp && otherVp.view.isSpatialView())\r\n otherVp.view.setAuxiliaryCoordinateSystem(acs);\r\n }\r\n }\r\n\r\n vp.view.setAuxiliaryCoordinateSystem(acs);\r\n\r\n // NOTE: Change AccuDraw's base rotation to ACS.\r\n IModelApp.accuDraw.setContext(AccuDrawFlags.OrientACS);\r\n }\r\n\r\n /** @internal */\r\n public distanceLock(synchText: boolean, saveInHistory: boolean): void {\r\n this.locked |= LockedStates.DIST_BM;\r\n\r\n if (!this._fieldLocked[ItemField.DIST_Item])\r\n this.setFieldLock(ItemField.DIST_Item, true);\r\n\r\n if (saveInHistory)\r\n this.saveCoordinate(ItemField.DIST_Item, this._distance);\r\n\r\n if (synchText) {\r\n this.onFieldValueChange(ItemField.DIST_Item);\r\n this.setKeyinStatus(ItemField.DIST_Item, KeyinStatus.Dynamic);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public angleLock(): void {\r\n if (this.indexed & LockedStates.Y_BM)\r\n this.locked |= LockedStates.Y_BM;\r\n else if (this.indexed & LockedStates.X_BM)\r\n this.locked |= LockedStates.X_BM;\r\n else\r\n this.locked |= LockedStates.VEC_BM;\r\n\r\n this.clearTentative();\r\n\r\n if (!this._fieldLocked[ItemField.ANGLE_Item]) {\r\n this.setFieldLock(ItemField.ANGLE_Item, true);\r\n this.setKeyinStatus(ItemField.ANGLE_Item, KeyinStatus.Dynamic);\r\n }\r\n\r\n this.flags.lockedRotation = true;\r\n this.flags.softAngleLock = false;\r\n }\r\n\r\n /** @internal */\r\n public doLockAngle(isSnapped: boolean): void {\r\n if (CompassMode.Polar !== this.compassMode) {\r\n this.locked = LockedStates.NONE_LOCKED;\r\n this._rawPoint.setFrom(this.point);\r\n\r\n const vp = this.currentView;\r\n if (vp)\r\n this.fixPointPolar(vp);\r\n\r\n this.changeCompassMode(true);\r\n }\r\n\r\n this.setFieldLock(ItemField.ANGLE_Item, !this._fieldLocked[ItemField.ANGLE_Item]);\r\n\r\n if (this._fieldLocked[ItemField.ANGLE_Item]) {\r\n // Move focus to angle field...\r\n if (!isSnapped && this.autoFocusFields)\r\n this.setFocusItem(ItemField.ANGLE_Item);\r\n\r\n this.angleLock();\r\n\r\n if (!isSnapped)\r\n this.flags.softAngleLock = true;\r\n } else {\r\n this.locked &= ~LockedStates.ANGLE_BM;\r\n this.saveCoordinate(ItemField.ANGLE_Item, this._angle);\r\n this.setKeyinStatus(ItemField.ANGLE_Item, KeyinStatus.Dynamic);\r\n }\r\n }\r\n\r\n private saveAngle(value: number): void {\r\n if (Geometry.isAlmostEqualNumber(value, 0.0) || Geometry.isAlmostEqualNumber(Math.abs(value), Math.PI) || Geometry.isAlmostEqualNumber(Math.abs(value), (Math.PI / 2.0)))\r\n return; // Don't accept 0, 90, -90, 180 and -180 degrees...\r\n\r\n const foundIndex = this._savedAngles.findIndex(angle => Geometry.isAlmostEqualNumber(angle, value));\r\n if (-1 !== foundIndex) {\r\n this._savedAngleIndex = foundIndex; // Set index to existing entry with matching value...\r\n return;\r\n }\r\n\r\n this._savedAngleIndex++;\r\n if (this._savedAngleIndex >= Constants.MAX_SAVED_VALUES)\r\n this._savedAngleIndex = 0;\r\n\r\n this._savedAngles[this._savedAngleIndex] = value;\r\n }\r\n\r\n private saveDistance(value: number): void {\r\n if (Geometry.isAlmostEqualNumber(value, 0.0))\r\n return; // Don't accept zero or nearly zero...\r\n\r\n value = Math.abs(value); // Only save positive distance...\r\n const foundIndex = this._savedDistances.findIndex(distance => Geometry.isAlmostEqualNumber(distance, value));\r\n if (-1 !== foundIndex) {\r\n this._savedDistanceIndex = foundIndex; // Set index to existing entry with matching value...\r\n return;\r\n }\r\n\r\n this._savedDistanceIndex++;\r\n if (this._savedDistanceIndex >= Constants.MAX_SAVED_VALUES)\r\n this._savedDistanceIndex = 0;\r\n\r\n this._savedDistances[this._savedDistanceIndex] = value;\r\n this._lastDistance = value;\r\n }\r\n\r\n /** @internal */\r\n public saveCoordinate(index: ItemField, value: number): void {\r\n if (ItemField.ANGLE_Item === index)\r\n this.saveAngle(value);\r\n else\r\n this.saveDistance(value);\r\n }\r\n\r\n private getSavedAngle(next: boolean): number | undefined {\r\n if (-1 === this._savedAngleIndex || 0 === this._savedAngles.length)\r\n return undefined;\r\n\r\n const value = this._savedAngles[this._savedAngleIndex];\r\n\r\n if (next) {\r\n this._savedAngleIndex++;\r\n if (this._savedAngleIndex >= this._savedAngles.length)\r\n this._savedAngleIndex = 0;\r\n }\r\n else {\r\n this._savedAngleIndex--;\r\n if (this._savedAngleIndex < 0)\r\n this._savedAngleIndex = this._savedAngles.length - 1;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private getSavedDistance(next: boolean): number | undefined {\r\n if (-1 === this._savedDistanceIndex || 0 === this._savedDistances.length)\r\n return undefined;\r\n\r\n const value = this._savedDistances[this._savedDistanceIndex];\r\n\r\n if (next) {\r\n this._savedDistanceIndex++;\r\n if (this._savedDistanceIndex >= this._savedDistances.length)\r\n this._savedDistanceIndex = 0;\r\n }\r\n else {\r\n this._savedDistanceIndex--;\r\n if (this._savedDistanceIndex < 0)\r\n this._savedDistanceIndex = this._savedDistances.length - 1;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** @internal */\r\n public getSavedValue(index: ItemField, next: boolean): void {\r\n const isAngle = (ItemField.ANGLE_Item === index);\r\n const savedValue = (isAngle ? this.getSavedAngle(next) : this.getSavedDistance(next));\r\n if (undefined === savedValue)\r\n return;\r\n\r\n if (!isAngle)\r\n this._lastDistance = savedValue;\r\n\r\n const currValue = this.getValueByIndex(index);\r\n this.setValueByIndex(index, currValue < 0.0 ? -savedValue : savedValue);\r\n\r\n switch (index) {\r\n case ItemField.X_Item:\r\n this.setFieldLock(ItemField.X_Item, true);\r\n this.onFieldValueChange(ItemField.X_Item);\r\n this.locked |= LockedStates.X_BM;\r\n break;\r\n\r\n case ItemField.Y_Item:\r\n this.setFieldLock(ItemField.Y_Item, true);\r\n this.onFieldValueChange(ItemField.Y_Item);\r\n this.locked |= LockedStates.Y_BM;\r\n break;\r\n\r\n case ItemField.Z_Item:\r\n this.setFieldLock(ItemField.Z_Item, true);\r\n this.onFieldValueChange(ItemField.Z_Item);\r\n break;\r\n\r\n case ItemField.DIST_Item:\r\n this.distanceLock(true, false);\r\n break;\r\n\r\n case ItemField.ANGLE_Item:\r\n this.locked &= ~LockedStates.XY_BM;\r\n this.updateVector(this._angle);\r\n this.angleLock();\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public clearSavedValues(): void {\r\n this._savedDistances.length = this._savedAngles.length = 0;\r\n this._savedDistanceIndex = this._savedAngleIndex = -1;\r\n }\r\n\r\n /** @internal */\r\n public changeCompassMode(animate: boolean = false): void {\r\n this.unlockAllFields(); // Clear locks for the current mode and send change notifications...\r\n this.setCompassMode(CompassMode.Polar === this.compassMode ? CompassMode.Rectangular : CompassMode.Polar);\r\n\r\n const viewport = this.currentView;\r\n if (!animate || !viewport)\r\n return;\r\n\r\n // AccuDrawAnimatorPtr animator = AccuDrawAnimator:: Create();\r\n // viewport.setAnimator(* animator);\r\n // animator -> ChangeOfMode();\r\n }\r\n\r\n /** @internal */\r\n public changeBaseRotationMode(mode: RotationMode): void {\r\n if (mode > RotationMode.Context)\r\n return;\r\n\r\n if (RotationMode.Context === mode) {\r\n // See if it is better to stay with the current base rotation (only care about z)...\r\n if (RotationMode.Context !== this.flags.baseRotation) {\r\n const baseRMatrix = this.getBaseRotation();\r\n const baseZ = baseRMatrix.getRow(2);\r\n\r\n if (baseZ.isParallelTo(this.axes.z, true))\r\n return;\r\n }\r\n\r\n this.baseAxes.setFrom(this.axes);\r\n this.flags.auxRotationPlane = RotationMode.Top;\r\n }\r\n\r\n this.flags.baseRotation = mode;\r\n }\r\n\r\n private getBaseRotation(): Matrix3d {\r\n const vp = this.currentView;\r\n let baseRMatrix: Matrix3d;\r\n const useAcs = vp ? vp.isContextRotationRequired : false;\r\n switch (this.flags.baseRotation) {\r\n case RotationMode.Top: {\r\n baseRMatrix = AccuDraw.getStandardRotation(StandardViewId.Top, vp, useAcs);\r\n break;\r\n }\r\n\r\n case RotationMode.Front: {\r\n baseRMatrix = AccuDraw.getStandardRotation(StandardViewId.Front, vp, useAcs);\r\n break;\r\n }\r\n\r\n case RotationMode.Side: {\r\n baseRMatrix = AccuDraw.getStandardRotation(StandardViewId.Right, vp, useAcs);\r\n break;\r\n }\r\n\r\n case RotationMode.ACS: {\r\n baseRMatrix = vp ? vp.getAuxCoordRotation() : Matrix3d.createIdentity();\r\n const axes = ThreeAxes.createFromMatrix3d(baseRMatrix);\r\n this.accountForAuxRotationPlane(axes, this.flags.auxRotationPlane);\r\n axes.toMatrix3d(baseRMatrix);\r\n break;\r\n }\r\n\r\n case RotationMode.View: {\r\n baseRMatrix = vp ? vp.rotation : Matrix3d.createIdentity();\r\n break;\r\n }\r\n\r\n case RotationMode.Context: {\r\n const axes = new ThreeAxes();\r\n axes.setFrom(this.baseAxes);\r\n this.accountForAuxRotationPlane(axes, this.flags.auxRotationPlane);\r\n baseRMatrix = axes.toMatrix3d();\r\n break;\r\n }\r\n\r\n default: {\r\n baseRMatrix = Matrix3d.createIdentity();\r\n break;\r\n }\r\n }\r\n return baseRMatrix;\r\n }\r\n\r\n /** @internal */\r\n public setContextRotation(rMatrix: Matrix3d, locked: boolean, animate: boolean): void {\r\n this.flags.lockedRotation = locked;\r\n this.flags.contextRotMode = locked ? ContextMode.Locked : ContextMode.None;\r\n this.setRotationMode(RotationMode.Context);\r\n this.updateRotation(animate, rMatrix);\r\n }\r\n\r\n private clearContext(): void {\r\n this.published.flags = 0;\r\n this.flags.rotationNeedsUpdate = true;\r\n this.flags.fixedOrg = false;\r\n\r\n this.newFocus = ItemField.X_Item;\r\n this.unlockAllFields();\r\n\r\n if (this.rotationMode !== this.flags.baseRotation)\r\n this.setRotationMode(this.flags.baseRotation);\r\n\r\n if (this.compassMode !== this.flags.baseMode)\r\n this.setCompassMode(this.flags.baseMode);\r\n }\r\n\r\n /** @internal */\r\n public setContext(flags: AccuDrawFlags, originP?: Point3d, orientationP?: Matrix3d | Vector3d, deltaP?: Vector3d, distanceP?: number, angleP?: number, transP?: Transform): BentleyStatus {\r\n this.published.flags |= flags;\r\n\r\n if (flags & AccuDrawFlags.SetOrigin && originP) {\r\n this.published.origin.setFrom(originP);\r\n\r\n if (transP)\r\n transP.multiplyPoint3d(this.published.origin, this.published.origin);\r\n }\r\n\r\n if (deltaP) {\r\n this.published.delta.setFrom(deltaP);\r\n\r\n if (transP)\r\n this.published.delta.scaleInPlace(transP.matrix.columnX().magnitude());\r\n }\r\n\r\n if (typeof distanceP === \"number\") {\r\n this.published.distance = distanceP;\r\n\r\n if (transP)\r\n this.published.distance *= transP.matrix.columnX().magnitude();\r\n }\r\n\r\n if (typeof angleP === \"number\")\r\n this.published.angle = angleP;\r\n\r\n if (orientationP) {\r\n if (flags & AccuDrawFlags.SetXAxis || flags & AccuDrawFlags.SetNormal || flags & AccuDrawFlags.SetXAxis2) {\r\n this.published.vector.setFrom(orientationP as Vector3d);\r\n\r\n if (transP)\r\n transP.matrix.multiplyVectorInPlace(this.published.vector);\r\n\r\n this.published.vector.normalizeInPlace();\r\n } else if (flags & AccuDrawFlags.SetRMatrix) {\r\n this.published.rMatrix.setFrom(orientationP as Matrix3d);\r\n\r\n if (transP) {\r\n this.published.rMatrix.multiplyMatrixMatrix(transP.matrix, this.published.rMatrix);\r\n this.published.rMatrix.normalizeColumnsInPlace();\r\n }\r\n }\r\n }\r\n\r\n if (flags) {\r\n this.onEventCommon();\r\n if (!this.flags.haveValidOrigin)\r\n this.setDefaultOrigin(this.currentView);\r\n }\r\n\r\n return this.isEnabled ? BentleyStatus.SUCCESS : BentleyStatus.ERROR;\r\n }\r\n\r\n private onEventCommon(): void {\r\n if (this.published.flags & AccuDrawFlags.RedrawCompass) {\r\n this.flags.indexLocked = true;\r\n this.flags.redrawCompass = true;\r\n }\r\n\r\n if (this.published.flags & AccuDrawFlags.UpdateRotation) {\r\n this.flags.indexLocked = true;\r\n this.flags.contextRotMode = ContextMode.XAxis;\r\n this.setRotationMode(RotationMode.Context);\r\n this.updateRotation();\r\n this.flags.indexLocked = true;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public onPrimitiveToolInstall(): boolean {\r\n this._lastSnapDetail = undefined;\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n this.saveLockedCoords();\r\n // Setup default starting tool state...\r\n this.currentState = CurrentState.Inactive;\r\n this.clearContext();\r\n if (this.alwaysShowCompass)\r\n this.activate();\r\n\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onViewToolInstall(): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n\r\n const tool = IModelApp.toolAdmin.activeTool;\r\n if (tool && !(tool instanceof ViewTool))\r\n this.saveState(this.savedStateViewTool); // Save AccuDraw state of tool being suspended...\r\n\r\n this.currentState = CurrentState.Deactivated; // Default to disabled for view tools.\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onViewToolExit(): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n this.restoreState(this.savedStateViewTool); // Restore AccuDraw state of suspended tool...\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onInputCollectorInstall(): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n\r\n const tool = IModelApp.toolAdmin.activeTool;\r\n if (tool && !(tool instanceof InputCollector))\r\n this.saveState(this.savedStateInputCollector); // Save AccuDraw state of tool being suspended...\r\n\r\n this.currentState = CurrentState.Inactive; // Default to inactive for input collectors.\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onInputCollectorExit(): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n this.restoreState(this.savedStateInputCollector); // Restore AccuDraw state of suspended tool...\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public saveState(stateBuffer: SavedState): void {\r\n stateBuffer.state = this.currentState;\r\n stateBuffer.mode = this.compassMode;\r\n stateBuffer.rotationMode = this.rotationMode;\r\n stateBuffer.axes.setFrom(this.axes);\r\n stateBuffer.origin.setFrom(this.origin);\r\n stateBuffer.auxRotationPlane = this.flags.auxRotationPlane;\r\n stateBuffer.contextRotMode = this.flags.contextRotMode;\r\n stateBuffer.fixedOrg = this.flags.fixedOrg;\r\n stateBuffer.ignoreDataButton = true;\r\n stateBuffer.ignoreFlags = 0;\r\n }\r\n\r\n /** @internal */\r\n public restoreState(stateBuffer: SavedState): void {\r\n if (0 === (stateBuffer.ignoreFlags & AccuDrawFlags.Disable)) {\r\n this.currentState = stateBuffer.state;\r\n }\r\n\r\n if (0 === (stateBuffer.ignoreFlags & AccuDrawFlags.SetOrigin)) {\r\n this.origin.setFrom(stateBuffer.origin);\r\n this.planePt.setFrom(stateBuffer.origin);\r\n }\r\n\r\n if (0 === (stateBuffer.ignoreFlags & AccuDrawFlags.SetRMatrix)) {\r\n this.axes.setFrom(stateBuffer.axes);\r\n this.setRotationMode(stateBuffer.rotationMode);\r\n this.flags.auxRotationPlane = stateBuffer.auxRotationPlane;\r\n this.flags.contextRotMode = stateBuffer.contextRotMode;\r\n }\r\n\r\n this.flags.fixedOrg = stateBuffer.fixedOrg;\r\n this.setCompassMode(stateBuffer.mode);\r\n this.updateRotation();\r\n\r\n if (stateBuffer.ignoreDataButton)\r\n this.flags.ignoreDataButton = (this.flags.inDataPoint ? true : false);\r\n }\r\n\r\n private getCompassPlanePoint(point: Point3d, vp: Viewport): boolean {\r\n point.setFrom(this.origin); // Isn't this just planePt?!? Maybe at display time it is not setup yet?!?\r\n if (this._fieldLocked[ItemField.Z_Item] && vp.view.is3d()) {\r\n if (0.0 !== this.delta.z && !(this.delta.z < Constants.SMALL_ANGLE && this.delta.z > -Constants.SMALL_ANGLE)) {\r\n point.addScaledInPlace(this.axes.z, this.delta.z);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private getDisplayTransform(vp: Viewport): Transform {\r\n const rMatrix = (!this.flags.animateRotation || 0.0 === this._percentChanged) ? this.axes.toMatrix3d() : this.lastAxes.toMatrix3d();\r\n const origin = new Point3d(); // Compass origin is adjusted by active z-lock...\r\n this.getCompassPlanePoint(origin, vp);\r\n const scale = vp.pixelsFromInches(this._compassSizeInches) * vp.getPixelSizeAtPoint(origin);\r\n\r\n rMatrix.transposeInPlace();\r\n rMatrix.scaleColumns(scale, scale, scale, rMatrix);\r\n return Transform.createRefs(origin, rMatrix);\r\n }\r\n\r\n private setIndexingTolerance(vp: Viewport) {\r\n const origin = new Point3d(); // Compass origin is adjusted by active z-lock...\r\n this.getCompassPlanePoint(origin, vp);\r\n this._tolerance = vp.pixelsFromInches(this._indexToleranceInches) * vp.getPixelSizeAtPoint(origin);\r\n if (Constants.SMALL_ANGLE > this._tolerance)\r\n this._tolerance = Constants.SMALL_ANGLE;\r\n }\r\n\r\n private displayAlignments(graphic: GraphicBuilder, vp: Viewport): void {\r\n const bgColor = vp.view.backgroundColor;\r\n const colorIndex = this._indexColor.adjustedForContrast(bgColor, 130);\r\n const origin = new Point3d(); // Compass origin is adjusted by active z-lock...\r\n // For non-zero Z value draw indicator line from plane point to compass origin...\r\n if (this.getCompassPlanePoint(origin, vp)) {\r\n const colorZ = this._frameColor.adjustedForContrast(bgColor, 155);\r\n graphic.setSymbology(colorZ, colorZ, 2);\r\n graphic.addLineString([origin, this.origin]);\r\n graphic.setSymbology(colorZ, colorZ, 4);\r\n graphic.addPointString([this.origin]);\r\n }\r\n\r\n // Get snap point from AccuSnap/Tentative or use raw point...\r\n let distance = 0.0;\r\n let snapPt = this._rawPoint;\r\n\r\n const snap = TentativeOrAccuSnap.getCurrentSnap();\r\n if (snap) {\r\n snapPt = snap.snapPoint;\r\n distance = this.point.distance(snapPt);\r\n }\r\n\r\n const isRectMode = (CompassMode.Rectangular === this.compassMode);\r\n const offsetSnap = ((TentativeOrAccuSnap.isHot || IModelApp.tentativePoint.isActive) && ((this.locked) || (distance > 0.0)));\r\n\r\n // XY Offset:\r\n if (offsetSnap) {\r\n if (isRectMode) {\r\n const vec = this.point.vectorTo(this._rawPointOnPlane);\r\n const xOffset = vec.dotProduct(this.axes.x);\r\n const yOffset = vec.dotProduct(this.axes.y);\r\n const xIsOffset = (Math.abs(xOffset) > 1.0);\r\n const yIsOffset = (Math.abs(yOffset) > 1.0);\r\n\r\n if (xIsOffset) {\r\n if (yIsOffset) { /* both */\r\n const pts: Point3d[] = [\r\n this.point,\r\n this.point.plusScaled(this.axes.y, yOffset),\r\n this._rawPointOnPlane,\r\n this.point.plusScaled(this.axes.x, xOffset)];\r\n pts[4] = pts[0];\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString(pts);\r\n } else { /* just X */\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([this.point, this._rawPointOnPlane]);\r\n }\r\n } else if (yIsOffset) { /* just Y */\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([this.point, this._rawPointOnPlane]);\r\n }\r\n }\r\n }\r\n\r\n const isOnCompassPlane = (!vp.view.is3d() || this.flags.pointIsOnPlane || this.isZLocked(vp));\r\n\r\n // Z Offset:\r\n if (offsetSnap) {\r\n if (isOnCompassPlane) {\r\n if (isRectMode) {\r\n const zOffset = snapPt.distance(this._rawPointOnPlane);\r\n if (zOffset > Constants.SMALL_ANGLE || zOffset < -Constants.SMALL_ANGLE) {\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([this._rawPointOnPlane, this._rawPoint]);\r\n }\r\n } else {\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([this.point, this._rawPoint]);\r\n }\r\n }\r\n }\r\n\r\n // Fat Point:\r\n if (offsetSnap) {\r\n graphic.setSymbology(colorIndex, colorIndex, 8);\r\n graphic.addPointString([this.point]);\r\n }\r\n\r\n let axisIsIndexed = false;\r\n\r\n // Axis Indexing:\r\n if (isRectMode) {\r\n if ((this.indexed & LockedStates.XY_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\r\n axisIsIndexed = true;\r\n } else {\r\n if ((this.indexed & LockedStates.ANGLE_BM || this.locked & LockedStates.ANGLE_BM) && (this.flags.pointIsOnPlane || this._fieldLocked[ItemField.Z_Item]))\r\n axisIsIndexed = true;\r\n }\r\n\r\n if (axisIsIndexed) {\r\n graphic.setSymbology(colorIndex, colorIndex, 4);\r\n graphic.addLineString([this.point, this.planePt]);\r\n }\r\n\r\n // Distance Indexing:\r\n if (this.indexed & LockedStates.DIST_BM) {\r\n const len = this._tolerance; // Show tick mark based on _GetIndexToleranceInches for length...\r\n let vec: Vector3d;\r\n\r\n if (isRectMode) {\r\n let index = this.indexed & LockedStates.XY_BM;\r\n\r\n if (!index)\r\n index = this.locked & LockedStates.XY_BM;\r\n\r\n vec = (index === LockedStates.X_BM) ? this.axes.x : this.axes.y;\r\n } else {\r\n const deltaVec = this.origin.vectorTo(this.point);\r\n vec = this.axes.z.crossProduct(deltaVec);\r\n vec.normalizeInPlace();\r\n }\r\n\r\n graphic.setSymbology(colorIndex, colorIndex, 3);\r\n graphic.addLineString([this.point.plusScaled(vec, len), this.point.plusScaled(vec, -len)]);\r\n }\r\n\r\n // XY Lock:\r\n if (isRectMode && !axisIsIndexed) {\r\n const locked = this.locked & LockedStates.XY_BM;\r\n\r\n if ((0 !== locked) && isOnCompassPlane) {\r\n const pts: Point3d[] = [this.point, this.point, this.point];\r\n\r\n if (locked & LockedStates.X_BM)\r\n pts[2].setFrom(this.planePt.plusScaled(this.axes.x, this.delta.x));\r\n\r\n if (locked & LockedStates.Y_BM)\r\n pts[0].setFrom(this.planePt.plusScaled(this.axes.y, this.delta.y));\r\n\r\n switch (locked) {\r\n case LockedStates.X_BM:\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([pts[1], pts[2]]);\r\n break;\r\n\r\n case LockedStates.Y_BM:\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([pts[0], pts[1]]);\r\n break;\r\n\r\n case LockedStates.XY_BM:\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString(pts);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (undefined !== this._lastSnapDetail && undefined === snap) {\r\n if (this._lastSnapDetail.indexed) {\r\n graphic.setSymbology(colorIndex, colorIndex, 2, LinePixels.Code5);\r\n graphic.addLineString([this.point, this._lastSnapDetail.point]);\r\n }\r\n\r\n graphic.setSymbology(colorIndex, colorIndex, 8, LinePixels.Solid);\r\n graphic.addPointString([this._lastSnapDetail.point]);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public testDecorationHit(id: string): boolean { return id === this._acsPickId; }\r\n /** @internal */\r\n public getDecorationGeometry(hit: HitDetail): GeometryStreamProps | undefined {\r\n if (!hit.viewport.viewFlags.acsTriad)\r\n return undefined;\r\n const geomData = GeomJson.Writer.toIModelJson(PointString3d.create(hit.viewport.view.auxiliaryCoordinateSystem.getOrigin()));\r\n if (undefined === geomData)\r\n return undefined;\r\n const acsGeom: GeometryStreamProps = [geomData];\r\n return acsGeom;\r\n }\r\n\r\n /** @internal */\r\n public decorate(context: DecorateContext) {\r\n if (context.viewport.viewFlags.acsTriad) {\r\n context.viewport.view.auxiliaryCoordinateSystem.display(context, (ACSDisplayOptions.CheckVisible | ACSDisplayOptions.Active));\r\n if (undefined === this._acsPickId)\r\n this._acsPickId = context.viewport.iModel.transientIds.getNext();\r\n const acsPickBuilder = context.createGraphicBuilder(GraphicType.WorldDecoration, undefined, this._acsPickId);\r\n const color = ColorDef.blue.adjustedForContrast(context.viewport.view.backgroundColor, 50);\r\n acsPickBuilder.setSymbology(color, color, 6);\r\n acsPickBuilder.addPointString([context.viewport.view.auxiliaryCoordinateSystem.getOrigin()]);\r\n context.addDecorationFromBuilder(acsPickBuilder);\r\n }\r\n\r\n // Make sure this is cleared even if we do nothing...redraw might have been to make compass go away...\r\n this.flags.redrawCompass = false;\r\n\r\n // Check that AccuDraw is enabled...\r\n if (!this.isActive)\r\n return;\r\n\r\n const vp = context.viewport;\r\n if (this.currentView !== vp) // Do nothing if AccuDraw is not enabled for this view...\r\n return;\r\n\r\n this.setIndexingTolerance(vp);\r\n\r\n // Display indexing lines, distance locks, etc. without compass transform...\r\n let builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n this.displayAlignments(builder, vp);\r\n context.addDecorationFromBuilder(builder);\r\n\r\n // Create a new graphics with the compass transform and scale so that compass size is 1.0...\r\n builder = context.createGraphicBuilder(GraphicType.WorldOverlay, this.getDisplayTransform(vp));\r\n\r\n const hasFocus = this.hasInputFocus;\r\n const bgColor = vp.view.backgroundColor;\r\n const frameColor = (hasFocus ? this._frameColor : this._frameColorNoFocus).adjustedForContrast(bgColor, 155);\r\n const fillColor = (hasFocus ? this._fillColor : this._fillColorNoFocus).adjustedForContrast(bgColor, 75);\r\n const xColor = (hasFocus ? this._xColor : this._frameColorNoFocus).adjustedForContrast(bgColor, 155);\r\n const yColor = (hasFocus ? this._yColor : this._frameColorNoFocus).adjustedForContrast(bgColor, 155);\r\n const shadowColor = frameColor;\r\n\r\n // Display compass frame...\r\n builder.setSymbology(shadowColor, fillColor, 1);\r\n const center = Point3d.createZero();\r\n\r\n if (this.flags.animateRotation || 0.0 === this._percentChanged) {\r\n if (CompassMode.Polar === this.compassMode) {\r\n const ellipse = Arc3d.createXYEllipse(center, 1, 1);\r\n builder.addArc(ellipse, true, true);\r\n builder.addArc(ellipse, false, false);\r\n } else {\r\n const pts: Point3d[] = [\r\n new Point3d(-1.0, 1.0, 0.0),\r\n new Point3d(1.0, 1.0, 0.0),\r\n new Point3d(1.0, -1.0, 0.0),\r\n new Point3d(-1.0, -1.0, 0.0)];\r\n pts[4] = pts[0].clone();\r\n builder.addShape(pts);\r\n builder.addLineString(pts);\r\n }\r\n } else {\r\n let nSides, radius;\r\n const minSides = 7, maxSides = 24, factor = 1.0 / 5.0;\r\n\r\n // if currently animating change to polar need to get larger radius...go between 1.0 && 1.0 * sqrt (2.0)\r\n if (CompassMode.Polar === this.compassMode) {\r\n nSides = minSides + Math.floor(maxSides * this._percentChanged);\r\n radius = 1.0 + factor - (factor * this._percentChanged);\r\n } else {\r\n nSides = (maxSides - Math.floor(maxSides * this._percentChanged)) + minSides;\r\n radius = 1.0 + (factor * this._percentChanged);\r\n }\r\n\r\n let angle = 0.0;\r\n const delta = (Math.PI * 2) / nSides;\r\n const pts: Point3d[] = [];\r\n\r\n for (let iSide = 0; iSide < nSides; iSide++, angle += delta)\r\n pts[iSide] = new Point3d(radius * Math.cos(angle), radius * Math.sin(angle), 0.0);\r\n pts[nSides] = pts[0].clone();\r\n\r\n builder.addShape(pts);\r\n builder.addLineString(pts);\r\n }\r\n\r\n // Display sticky z-lock indicator as frame inset...\r\n if (this._fieldLocked[ItemField.Z_Item] && this.stickyZLock && vp.view.is3d()) {\r\n builder.setSymbology(frameColor, fillColor, 1);\r\n\r\n if (CompassMode.Polar === this.compassMode) {\r\n const ellipse = Arc3d.createXYEllipse(center, .5, .5);\r\n builder.addArc(ellipse, false, false);\r\n } else {\r\n const pts: Point3d[] = [\r\n new Point3d(-0.5, 0.5, 0.0),\r\n new Point3d(0.5, 0.5, 0.0),\r\n new Point3d(0.5, -0.5, 0.0),\r\n new Point3d(-0.5, -0.5, 0.0)];\r\n pts[4] = pts[0].clone();\r\n builder.addLineString(pts);\r\n }\r\n }\r\n\r\n // Display compass center mark...\r\n builder.setSymbology(frameColor, frameColor, 8);\r\n builder.addPointString([center]);\r\n\r\n // Display positive \"X\" tick...\r\n builder.setSymbology(xColor, xColor, 4);\r\n builder.addLineString([new Point3d(1.2, 0.0, 0.0), new Point3d(0.8, 0.0, 0.0)]);\r\n\r\n // Display negative \"X\" tick...\r\n builder.setSymbology(frameColor, frameColor, 1);\r\n builder.addLineString([new Point3d(-1.2, 0.0, 0.0), new Point3d(-0.8, 0.0, 0.0)]);\r\n\r\n // Display positive \"Y\" tick...\r\n builder.setSymbology(yColor, yColor, 4);\r\n builder.addLineString([new Point3d(0.0, 1.2, 0.0), new Point3d(0.0, 0.8, 0.0)]);\r\n\r\n // Display negative \"Y\" tick...\r\n builder.setSymbology(frameColor, frameColor, 1);\r\n builder.addLineString([new Point3d(0.0, -1.2, 0.0), new Point3d(0.0, -0.8, 0.0)]);\r\n\r\n context.addDecorationFromBuilder(builder); // add compass as world overlay decorator\r\n }\r\n\r\n private checkRotation(): void {\r\n this.updateRotation();\r\n\r\n if (RotationMode.View === this.rotationMode || !this.flags.lockedRotation)\r\n return;\r\n\r\n const vp = this.currentView;\r\n if (!vp || vp.isCameraOn)\r\n return;\r\n\r\n const viewZRoot = vp.rotation.getRow(2);\r\n if (!this.axes.z.isPerpendicularTo(viewZRoot))\r\n return;\r\n\r\n const preferY = (Math.abs(this.axes.x.dotProduct(viewZRoot)) < Math.abs(this.axes.y.dotProduct(viewZRoot)));\r\n\r\n // NOTE: Cycle rotation to get one that isn't edge-on...\r\n switch (this.rotationMode) {\r\n case RotationMode.Top:\r\n this.setRotationMode(preferY ? RotationMode.Front : RotationMode.Side);\r\n break;\r\n case RotationMode.Front:\r\n this.setRotationMode(preferY ? RotationMode.Top : RotationMode.Side);\r\n break;\r\n case RotationMode.Side:\r\n this.setRotationMode(preferY ? RotationMode.Top : RotationMode.Front);\r\n break;\r\n case RotationMode.ACS:\r\n switch (this.flags.auxRotationPlane) {\r\n case RotationMode.Top:\r\n this.flags.auxRotationPlane = preferY ? RotationMode.Front : RotationMode.Side;\r\n break;\r\n case RotationMode.Front:\r\n this.flags.auxRotationPlane = preferY ? RotationMode.Top : RotationMode.Side;\r\n break;\r\n case RotationMode.Side:\r\n this.flags.auxRotationPlane = preferY ? RotationMode.Top : RotationMode.Front;\r\n break;\r\n default:\r\n return;\r\n }\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n this.updateRotation();\r\n this.flags.baseRotation = this.rotationMode;\r\n }\r\n\r\n private saveLockedCoords(): void {\r\n if (CompassMode.Polar === this.compassMode) {\r\n if (this._fieldLocked[ItemField.DIST_Item])\r\n this.saveCoordinate(ItemField.DIST_Item, this._distance);\r\n if (this._fieldLocked[ItemField.ANGLE_Item])\r\n this.saveCoordinate(ItemField.ANGLE_Item, this._angle);\r\n } else {\r\n if (this._fieldLocked[ItemField.X_Item])\r\n this.saveCoordinate(ItemField.X_Item, this.delta.x);\r\n if (this._fieldLocked[ItemField.Y_Item])\r\n this.saveCoordinate(ItemField.Y_Item, this.delta.y);\r\n }\r\n\r\n const vp = this.currentView;\r\n if (vp && vp.view.is3d()) {\r\n if (this._fieldLocked[ItemField.Z_Item])\r\n this.saveCoordinate(ItemField.Z_Item, this.delta.z);\r\n }\r\n }\r\n\r\n /** Called after compass state is changed between the active state and one of the disabled states */\r\n public onCompassDisplayChange(_state: \"show\" | \"hide\"): void { }\r\n /** Called after compass mode is changed between polar and rectangular */\r\n public onCompassModeChange(): void { }\r\n /** Called after compass rotation is changed */\r\n public onRotationModeChange(): void { }\r\n /** Called after input field locked state is changed */\r\n public onFieldLockChange(_index: ItemField) { }\r\n /** Called after input field value changes */\r\n public onFieldValueChange(_index: ItemField) { }\r\n /** Called after input field keyin status changes */\r\n public onFieldKeyinStatusChange(_index: ItemField) { }\r\n /** Called to request focus change to the specified input field */\r\n public setFocusItem(_index: ItemField) { }\r\n /** Called to get the item field that currently has input focus */\r\n public getFocusItem(): ItemField | undefined { return undefined; }\r\n\r\n private static getMinPolarMag(origin: Point3d): number {\r\n return (1.0e-12 * (1.0 + origin.magnitude()));\r\n }\r\n\r\n /** projects cursor onto plane in view, or returns an error */\r\n private constructionPlane(outPtP: Point3d, inPtP: Point3d, pointOnPlaneP: Point3d, normalVectorP: Vector3d, vp: Viewport, perpendicular: boolean): BentleyStatus {\r\n let fromPtP: Point3d;\r\n let dotProduct: number;\r\n let distance: number;\r\n let projectionVector = new Vector3d();\r\n\r\n if (perpendicular) {\r\n if (AccuDraw.useACSContextRotation(vp, true)) { // Project along ACS axis to AccuDraw plane...\r\n const rMatrix = vp.getAuxCoordRotation(AccuDraw._tempRot);\r\n const axes = ThreeAxes.createFromMatrix3d(rMatrix);\r\n this.accountForAuxRotationPlane(axes, this.flags.auxRotationPlane);\r\n linePlaneIntersect(outPtP, inPtP, axes.z, pointOnPlaneP, normalVectorP, false);\r\n } else {\r\n projectionVector = inPtP.vectorTo(pointOnPlaneP);\r\n distance = projectionVector.dotProduct(normalVectorP);\r\n inPtP.plusScaled(normalVectorP, distance, outPtP);\r\n }\r\n } else {\r\n const isCamera = vp.isCameraOn;\r\n if (vp.view.is3d() && isCamera) {\r\n const cameraPos = vp.view.getEyePoint();\r\n fromPtP = cameraPos;\r\n fromPtP.vectorTo(inPtP, projectionVector).normalizeInPlace();\r\n } else {\r\n const rMatrix = vp.rotation;\r\n fromPtP = inPtP;\r\n rMatrix.getRow(2, projectionVector);\r\n }\r\n\r\n dotProduct = projectionVector.dotProduct(normalVectorP);\r\n\r\n if (Math.abs(dotProduct) < Constants.SMALL_DELTA)\r\n return BentleyStatus.ERROR; // PARALLEL;\r\n\r\n distance = (normalVectorP.dotProduct(pointOnPlaneP) - normalVectorP.dotProduct(fromPtP)) / dotProduct;\r\n\r\n if (isCamera && distance < Constants.SMALL_DELTA)\r\n return BentleyStatus.ERROR; // BEHIND_EYE_POINT;\r\n\r\n fromPtP.plusScaled(projectionVector, distance, outPtP);\r\n }\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** @internal */\r\n public softConstructionPlane(outPtP: Point3d, inPtP: Point3d, pointOnPlaneP: Point3d, normalVectorP: Vector3d, vp: Viewport, isSnap: boolean): boolean {\r\n if (!vp.isPointAdjustmentRequired) {\r\n outPtP.setFrom(inPtP);\r\n return true;\r\n }\r\n\r\n if (isSnap) {\r\n outPtP.setFrom(inPtP);\r\n const delta = pointOnPlaneP.vectorTo(outPtP);\r\n return (Math.abs(normalVectorP.dotProduct(delta)) < Constants.SMALL_DELTA);\r\n }\r\n if (BentleyStatus.SUCCESS !== this.constructionPlane(outPtP, inPtP, pointOnPlaneP, normalVectorP, vp, false)) {\r\n const viewNormal = vp.rotation.getRow(2);\r\n this.constructionPlane(outPtP, inPtP, pointOnPlaneP, viewNormal, vp, false);\r\n this.constructionPlane(outPtP, outPtP, pointOnPlaneP, normalVectorP, vp, true);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public hardConstructionPlane(outPtP: Point3d, inPtP: Point3d, pointOnPlaneP: Point3d, normalVectorP: Vector3d, vp: Viewport, isSnap: boolean): boolean {\r\n if (!vp.isPointAdjustmentRequired) {\r\n outPtP.setFrom(inPtP);\r\n return true;\r\n }\r\n\r\n if (BentleyStatus.SUCCESS !== this.constructionPlane(outPtP, inPtP, pointOnPlaneP, normalVectorP, vp, isSnap)) {\r\n const viewNormal = vp.rotation.getRow(2);\r\n this.constructionPlane(outPtP, inPtP, pointOnPlaneP, viewNormal, vp, false);\r\n this.constructionPlane(outPtP, outPtP, pointOnPlaneP, normalVectorP, vp, true);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private static allowAxisIndexing(pointIsOnPlane: boolean): boolean {\r\n // NOTE: Normally we don't want indexing overriding a hot snap location. The\r\n // exception to this is nearest snap. If the nearest snap is in the plane\r\n // of the AccuDraw compass, it is confusing not having axis indexing.\r\n if (!TentativeOrAccuSnap.isHot)\r\n return true;\r\n\r\n if (!pointIsOnPlane)\r\n return false;\r\n\r\n const snapDetail = IModelApp.accuSnap.getCurrSnapDetail();\r\n return (undefined !== snapDetail && (SnapMode.Nearest === snapDetail.snapMode));\r\n }\r\n\r\n private applyDistanceRoundOff(distance: number, vp: Viewport): number | undefined {\r\n if (!this._distanceRoundOff.active || !this._distanceRoundOff.units.size)\r\n return undefined;\r\n\r\n let roundValue = this._distanceRoundOff.units.values().next().value ?? 0;\r\n\r\n if (this._distanceRoundOff.units.size > 1) {\r\n // NOTE: Set isn't ordered, find smallest entry...\r\n this._distanceRoundOff.units.forEach((thisRoundValue) => {\r\n if (thisRoundValue < roundValue)\r\n roundValue = thisRoundValue;\r\n });\r\n\r\n if (vp.viewDelta.magnitudeXY() < roundValue)\r\n return undefined; // Smallest rounding value is larger than view...don't use...\r\n\r\n const smallScreenDist = 0.0787402; // ~2 mm...\r\n const pixelSize = vp.getPixelSizeAtPoint(this.origin);\r\n const screenDist = vp.pixelsFromInches(smallScreenDist) * pixelSize;\r\n\r\n this._distanceRoundOff.units.forEach((thisRoundValue) => {\r\n if (thisRoundValue > roundValue && thisRoundValue < screenDist)\r\n roundValue = thisRoundValue;\r\n });\r\n }\r\n\r\n if (roundValue <= 0.0)\r\n return undefined;\r\n\r\n return roundValue * Math.floor((distance / roundValue) + 0.5);\r\n }\r\n\r\n private applyAngleRoundOff(angle: number, distance: number, vp: Viewport): number | undefined {\r\n if (!this._angleRoundOff.active || !this._angleRoundOff.units.size)\r\n return undefined;\r\n\r\n let roundValue = this._angleRoundOff.units.values().next().value ?? 0;\r\n\r\n if (this._angleRoundOff.units.size > 1) {\r\n // NOTE: Set isn't ordered, find smallest entry...\r\n this._angleRoundOff.units.forEach((thisRoundValue) => {\r\n if (thisRoundValue < roundValue)\r\n roundValue = thisRoundValue;\r\n });\r\n\r\n const circumference = 2.0 * Math.PI * distance;\r\n const roundDist = circumference / ((2.0 * Math.PI) / roundValue);\r\n\r\n if (vp.viewDelta.magnitudeXY() < roundDist)\r\n return undefined; // Smallest rounding value is larger than view...don't use...\r\n\r\n const smallScreenDist = 0.0787402; // ~2 mm...\r\n const pixelSize = vp.getPixelSizeAtPoint(this.origin);\r\n const screenDist = vp.pixelsFromInches(smallScreenDist) * pixelSize;\r\n\r\n this._angleRoundOff.units.forEach((thisRoundValue) => {\r\n const thisRoundDist = circumference / ((2.0 * Math.PI) / thisRoundValue);\r\n if (thisRoundValue > roundValue && thisRoundDist < screenDist)\r\n roundValue = thisRoundValue;\r\n });\r\n }\r\n\r\n if (roundValue <= 0.0)\r\n return undefined;\r\n\r\n return roundValue * Math.floor((angle / roundValue) + 0.5);\r\n }\r\n\r\n /** @internal */\r\n public fixPointPolar(vp: Viewport): void {\r\n let angleChanged = false;\r\n let distChanged = false;\r\n const zLocked = this.isZLocked(vp);\r\n const xyCorrection = new Point3d();\r\n\r\n this.planePt.setFrom(this.origin);\r\n\r\n if (zLocked && !(this.delta.z < Constants.SMALL_ANGLE && this.delta.z > -Constants.SMALL_ANGLE))\r\n this.planePt.addScaledInPlace(this.axes.z, this.delta.z);\r\n\r\n if (this.locked & LockedStates.VEC_BM) {\r\n if (!TentativeOrAccuSnap.isHot) {\r\n const normVec = new Vector3d();\r\n this.planeByVectorAndView(normVec, this.vector, vp);\r\n this.softConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, normVec, vp, false);\r\n } else {\r\n this._rawPointOnPlane.setFrom(this._rawPoint);\r\n this.flags.pointIsOnPlane = false;\r\n }\r\n } else {\r\n if (zLocked) {\r\n this.hardConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot);\r\n this.flags.pointIsOnPlane = true;\r\n } else {\r\n this.flags.pointIsOnPlane = (this.softConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot) || !!(this.locked & LockedStates.XY_BM));\r\n }\r\n }\r\n\r\n let delta: Vector3d;\r\n if (zLocked)\r\n delta = this.planePt.vectorTo(this._rawPointOnPlane);\r\n else\r\n delta = this.origin.vectorTo(this._rawPointOnPlane);\r\n\r\n const minPolarMag = AccuDraw.getMinPolarMag(this.origin);\r\n\r\n let mag: number;\r\n if (this.locked & LockedStates.VEC_BM) {\r\n mag = delta.dotProduct(this.vector);\r\n xyCorrection.x -= delta.x - mag * this.vector.x;\r\n xyCorrection.y -= delta.y - mag * this.vector.y;\r\n xyCorrection.z -= delta.z - mag * this.vector.z;\r\n this.vector.scale(mag, delta);\r\n if (mag < 0.0)\r\n mag = -mag;\r\n if (mag < minPolarMag) {\r\n this.handleDegeneratePolarCase();\r\n return;\r\n }\r\n\r\n this.flags.pointIsOnPlane = (Math.abs(this.axes.z.dotProduct(delta)) < Constants.SMALL_DELTA);\r\n } else {\r\n mag = delta.magnitude();\r\n if (mag < minPolarMag) {\r\n this.handleDegeneratePolarCase();\r\n return;\r\n }\r\n }\r\n\r\n const newPt = this._rawPointOnPlane.plus(xyCorrection);\r\n xyCorrection.setZero();\r\n\r\n // measure angle\r\n const rotVec = new Point3d();\r\n rotVec.x = this.axes.x.dotProduct(delta);\r\n\r\n // NOTE: Always return angle relative to compass plane...used to return \"angle out of plane\" for points off plane.\r\n rotVec.y = this.axes.y.dotProduct(delta);\r\n this._angle = Math.atan2(rotVec.y, rotVec.x);\r\n\r\n // constrain angle\r\n if (this.flags.pointIsOnPlane && !(this.locked & LockedStates.VEC_BM)) {\r\n if (!TentativeOrAccuSnap.isHot) {\r\n const newAngle = this.applyAngleRoundOff(this._angle, mag, vp);\r\n if (undefined !== newAngle) {\r\n angleChanged = true;\r\n this._angle = newAngle;\r\n xyCorrection.x += Math.cos(this._angle) * mag - rotVec.x;\r\n xyCorrection.y += Math.sin(this._angle) * mag - rotVec.y;\r\n rotVec.x = Math.cos(this._angle) * mag;\r\n rotVec.y = Math.sin(this._angle) * mag;\r\n }\r\n }\r\n\r\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)) {\r\n this.indexed |= LockedStates.X_BM; // indexed in X\r\n\r\n xyCorrection.x -= rotVec.x;\r\n rotVec.x = 0.0;\r\n\r\n if (TentativeOrAccuSnap.isHot)\r\n xyCorrection.z -= delta.dotProduct(this.axes.z);\r\n\r\n this._angle = (rotVec.y < 0.0) ? -Math.PI / 2.0 : Math.PI / 2.0;\r\n angleChanged = true;\r\n }\r\n\r\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)) {\r\n if (this.indexed & LockedStates.X_BM) { // both indexed\r\n this.handleDegeneratePolarCase();\r\n return;\r\n }\r\n\r\n this.indexed |= LockedStates.Y_BM; // indexed in Y\r\n xyCorrection.y -= rotVec.y;\r\n\r\n if (TentativeOrAccuSnap.isHot)\r\n xyCorrection.z -= delta.dotProduct(this.axes.z);\r\n\r\n rotVec.y = 0.0;\r\n this._angle = (rotVec.x < 0.0) ? Math.PI : 0.0;\r\n angleChanged = true;\r\n }\r\n\r\n if (angleChanged) {\r\n this.axes.x.scale(rotVec.x, delta);\r\n delta.addScaledInPlace(this.axes.y, rotVec.y);\r\n mag = delta.magnitude();\r\n if (mag < minPolarMag) {\r\n this.handleDegeneratePolarCase();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // constrain distance\r\n const oldMag = mag;\r\n\r\n if (this.locked & LockedStates.DIST_BM) { // distance locked\r\n mag = this._distance;\r\n distChanged = true;\r\n this.indexed &= ~LockedStates.DIST_BM;\r\n } else if (!TentativeOrAccuSnap.isHot) { // if non-snap, try rounding and aligning\r\n const newDist = this.applyDistanceRoundOff(mag, vp);\r\n if (undefined !== newDist) {\r\n distChanged = true;\r\n mag = newDist;\r\n }\r\n\r\n if (Geometry.isDistanceWithinTol(mag - this._lastDistance, this._tolerance) && !this.flags.indexLocked && this.distanceIndexing) {\r\n this.indexed |= LockedStates.DIST_BM; // distance indexed\r\n mag = this._lastDistance;\r\n distChanged = true;\r\n }\r\n }\r\n\r\n // project to corrected point\r\n newPt.plus3Scaled(this.axes.x, xyCorrection.x, this.axes.y, xyCorrection.y, this.axes.z, xyCorrection.z, newPt);\r\n\r\n // display index highlight even if snapped\r\n if (TentativeOrAccuSnap.isHot && this.flags.pointIsOnPlane) {\r\n if (Math.abs(rotVec.x) < Constants.SMALL_ANGLE)\r\n this.indexed |= LockedStates.X_BM;\r\n else if (Math.abs(rotVec.y) < Constants.SMALL_ANGLE)\r\n this.indexed |= LockedStates.Y_BM;\r\n }\r\n\r\n if (distChanged) {\r\n if (mag < minPolarMag && mag > -minPolarMag) {\r\n this.handleDegeneratePolarCase();\r\n return;\r\n }\r\n\r\n // adjust corrected point for distance indexing\r\n newPt.addScaledInPlace(delta, mag / oldMag - 1.0);\r\n delta.scaleInPlace(mag / oldMag);\r\n }\r\n\r\n // save corrected point\r\n this.point.setFrom(newPt);\r\n\r\n // finish up\r\n this._distance = mag;\r\n\r\n if (!(this.locked & LockedStates.VEC_BM))\r\n delta.scale(1.0 / mag, this.vector);\r\n\r\n if (this.locked & LockedStates.XY_BM)\r\n this.indexed |= this.locked;\r\n\r\n if (!zLocked)\r\n this.delta.z = (this.flags.pointIsOnPlane) ? 0.0 : delta.dotProduct(this.axes.z);\r\n }\r\n\r\n /** @internal */\r\n public fixPointRectangular(vp: Viewport): void {\r\n const zLocked = this.isZLocked(vp);\r\n const xyCorrection = new Vector3d();\r\n\r\n this.planePt.setFrom(this.origin);\r\n this.indexed = 0;\r\n\r\n if (zLocked) {\r\n this.flags.pointIsOnPlane = (this.delta.z < Constants.SMALL_ANGLE && this.delta.z > -Constants.SMALL_ANGLE);\r\n if (!this.flags.pointIsOnPlane)\r\n this.planePt.addScaledInPlace(this.axes.z, this.delta.z);\r\n this.hardConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot);\r\n } else {\r\n this.flags.pointIsOnPlane = this.softConstructionPlane(this._rawPointOnPlane, this._rawPoint, this.origin, this.axes.z, vp, TentativeOrAccuSnap.isHot);\r\n }\r\n\r\n const trueDelta = this.origin.vectorTo(this._rawPointOnPlane);\r\n this._rawDelta.x = trueDelta.dotProduct(this.axes.x);\r\n this._xIsNegative = (this._rawDelta.x < -Constants.SMALL_ANGLE);\r\n\r\n this._rawDelta.y = trueDelta.dotProduct(this.axes.y);\r\n this._yIsNegative = (this._rawDelta.y < -Constants.SMALL_ANGLE);\r\n\r\n if (!zLocked)\r\n this.delta.z = (this.flags.pointIsOnPlane) ? 0.0 : trueDelta.dotProduct(this.axes.z);\r\n\r\n if (AccuDraw.allowAxisIndexing(this.flags.pointIsOnPlane)) {\r\n if (!(this.locked & LockedStates.X_BM)) { // not locked in x\r\n const roundedDeltaX = this.applyDistanceRoundOff(this._rawDelta.x, vp); // round x\r\n if (undefined !== roundedDeltaX) {\r\n xyCorrection.x = roundedDeltaX - this._rawDelta.x;\r\n this._rawDelta.x = roundedDeltaX;\r\n }\r\n\r\n if (this._rawDelta.x < this._tolerance && this._rawDelta.x > -this._tolerance &&\r\n !this.flags.indexLocked && this.axisIndexing) { // index x\r\n this.indexed |= LockedStates.X_BM; // indexed in X\r\n xyCorrection.x -= this._rawDelta.x;\r\n this._rawDelta.x = 0.0;\r\n }\r\n }\r\n if (!(this.locked & LockedStates.Y_BM)) {\r\n const roundedDeltaY = this.applyDistanceRoundOff(this._rawDelta.y, vp); // round y\r\n if (undefined !== roundedDeltaY) {\r\n xyCorrection.y = roundedDeltaY - this._rawDelta.y;\r\n this._rawDelta.y = roundedDeltaY;\r\n }\r\n\r\n if (this._rawDelta.y < this._tolerance && this._rawDelta.y > -this._tolerance &&\r\n !this.flags.indexLocked && this.axisIndexing) { // index y\r\n this.indexed |= LockedStates.Y_BM; // indexed in Y\r\n xyCorrection.y -= this._rawDelta.y;\r\n this._rawDelta.y = 0.0;\r\n }\r\n }\r\n }\r\n\r\n if (this.locked & LockedStates.X_BM) {\r\n if (this.rawDeltaIsValid(this._rawDelta.x)) {\r\n // cursor changed sides, reverse value\r\n if ((this.delta.x < -Constants.SMALL_ANGLE) !== this._xIsNegative &&\r\n this.smartKeyin && this._keyinStatus[ItemField.X_Item] === KeyinStatus.Partial &&\r\n !this._xIsExplicit)\r\n this.delta.x = -this.delta.x;\r\n }\r\n\r\n xyCorrection.x = this.delta.x - this._rawDelta.x;\r\n } else {\r\n const lastDist = (this._rawDelta.x < 0.0) ? (-this._lastDistance) : this._lastDistance;\r\n\r\n if (!TentativeOrAccuSnap.isHot && ((this.locked & LockedStates.Y_BM) || (this.indexed & LockedStates.Y_BM)) && !(this.indexed & LockedStates.X_BM) &&\r\n Geometry.isDistanceWithinTol(this._rawDelta.x - lastDist, this._tolerance) &&\r\n !this.flags.indexLocked && this.distanceIndexing) {\r\n xyCorrection.x += lastDist - this._rawDelta.x;\r\n this.delta.x = lastDist;\r\n this.indexed |= LockedStates.DIST_BM;\r\n } else {\r\n this.delta.x = this._rawDelta.x;\r\n }\r\n }\r\n\r\n if (this.locked & LockedStates.Y_BM) {\r\n if (this.rawDeltaIsValid(this._rawDelta.y)) {\r\n // cursor changed sides, reverse value\r\n if ((this.delta.y < -Constants.SMALL_ANGLE) !== this._yIsNegative &&\r\n this.smartKeyin && this._keyinStatus[ItemField.Y_Item] === KeyinStatus.Partial &&\r\n !this._yIsExplicit)\r\n this.delta.y = -this.delta.y;\r\n }\r\n\r\n xyCorrection.y = this.delta.y - this._rawDelta.y;\r\n } else {\r\n const lastDist = (this._rawDelta.y < Constants.SMALL_ANGLE) ? - this._lastDistance : this._lastDistance;\r\n\r\n if (!TentativeOrAccuSnap.isHot && ((this.locked & LockedStates.X_BM) || (this.indexed & LockedStates.X_BM)) && !(this.indexed & LockedStates.Y_BM) &&\r\n Geometry.isDistanceWithinTol(this._rawDelta.y - lastDist, this._tolerance) &&\r\n !this.flags.indexLocked && this.distanceIndexing) {\r\n xyCorrection.y += lastDist - this._rawDelta.y;\r\n this.delta.y = lastDist;\r\n this.indexed |= LockedStates.DIST_BM;\r\n } else {\r\n this.delta.y = this._rawDelta.y;\r\n }\r\n }\r\n\r\n this._rawPointOnPlane.plus2Scaled(this.axes.x, xyCorrection.x, this.axes.y, xyCorrection.y, this.point);\r\n\r\n if (zLocked && !this.flags.pointIsOnPlane)\r\n this.hardConstructionPlane(this.point, this.point, this.planePt, this.axes.z, vp, TentativeOrAccuSnap.isHot);\r\n\r\n if ((this.locked & LockedStates.X_BM && this.delta.x === 0.0) || (this.locked & LockedStates.Y_BM && this.delta.y === 0.0)) {\r\n this.indexed |= this.locked; // to display index highlight\r\n } else if (TentativeOrAccuSnap.isHot) {\r\n if (Math.abs(this.delta.x) < Constants.SMALL_ANGLE)\r\n this.indexed |= LockedStates.X_BM;\r\n else if (Math.abs(this.delta.y) < Constants.SMALL_ANGLE)\r\n this.indexed |= LockedStates.Y_BM;\r\n }\r\n\r\n const lock = this.locked & LockedStates.XY_BM;\r\n const index = this.indexed & LockedStates.XY_BM;\r\n\r\n if (lock === LockedStates.Y_BM && index !== LockedStates.X_BM) {\r\n if (this._keyinStatus[ItemField.Y_Item] !== KeyinStatus.Dynamic) {\r\n if (Math.abs(this._rawDelta.x) < this._threshold)\r\n return;\r\n }\r\n\r\n this.newFocus = ItemField.X_Item;\r\n this.dontMoveFocus = false;\r\n } else if (lock === LockedStates.X_BM && index !== LockedStates.Y_BM) {\r\n if (this._keyinStatus[ItemField.X_Item] !== KeyinStatus.Dynamic) {\r\n if (Math.abs(this._rawDelta.y) < this._threshold)\r\n return;\r\n }\r\n\r\n this.newFocus = ItemField.Y_Item;\r\n this.dontMoveFocus = false;\r\n } else {\r\n this.newFocus = ((Math.abs(this._rawDelta.x) > Math.abs(this._rawDelta.y)) ? ItemField.X_Item : ItemField.Y_Item);\r\n }\r\n }\r\n\r\n private fixPointLastSnapDetail(vp: ScreenViewport): void {\r\n if (undefined === this._lastSnapDetail)\r\n return;\r\n\r\n this._lastSnapDetail.indexed = undefined;\r\n if (!this.axisIndexing || this.flags.indexLocked || LockedStates.NONE_LOCKED !== this.locked || this.indexed & LockedStates.DIST_BM || TentativeOrAccuSnap.isHot)\r\n return; // Don't adjust point if already adjusted or indexing is disabled...\r\n\r\n const minMag = AccuDraw.getMinPolarMag(this.point);\r\n const tmpVec = Vector3d.createStartEnd(this.planePt, this.point);\r\n if (tmpVec.magnitude() < minMag)\r\n return; // Current point is at compass origin...\r\n\r\n if (!this.hardConstructionPlane(this._rawPointOnPlane, this._lastSnapDetail.point, this.point, this.axes.z, vp, true))\r\n return;\r\n\r\n const snapDelta = this._rawPointOnPlane.vectorTo(this.point);\r\n if (snapDelta.magnitude() < minMag)\r\n return; // Haven't moved far enough away from snap point...\r\n\r\n const snapRayX = Ray3d.createCapture(this._rawPointOnPlane, this._lastSnapDetail.matrix.rowX());\r\n const snapRayY = Ray3d.createCapture(this._rawPointOnPlane, this._lastSnapDetail.matrix.rowY());\r\n const snapDeltaX = snapDelta.dotProduct(snapRayX.direction);\r\n const snapDeltaY = snapDelta.dotProduct(snapRayY.direction);\r\n\r\n let rayS;\r\n if (snapDeltaX < this._tolerance && snapDeltaX > -this._tolerance)\r\n rayS = snapRayY;\r\n else if (snapDeltaY < this._tolerance && snapDeltaY > -this._tolerance)\r\n rayS = snapRayX;\r\n else\r\n return;\r\n\r\n const rayA = Ray3d.createCapture(this.planePt, tmpVec);\r\n const detail = Ray3d.closestApproachRay3dRay3d(rayA, rayS);\r\n if (CurveCurveApproachType.Intersection !== detail.approachType)\r\n return;\r\n\r\n this.planePt.vectorTo(detail.detailA.point, tmpVec);\r\n Point2d.create(tmpVec.dotProduct(this.axes.x), tmpVec.dotProduct(this.axes.y), this._rawDelta);\r\n const xyCorrection = new Vector2d();\r\n\r\n if (this.indexed & LockedStates.X_BM) {\r\n xyCorrection.x -= this._rawDelta.x;\r\n this._rawDelta.x = 0.0;\r\n } else if (this.indexed & LockedStates.Y_BM) {\r\n xyCorrection.y -= this._rawDelta.y;\r\n this._rawDelta.y = 0.0;\r\n }\r\n\r\n if (this._rawDelta.magnitude() < minMag)\r\n return; // Don't accept adjustment back to compass origin...\r\n\r\n detail.detailA.point.plus2Scaled(this.axes.x, xyCorrection.x, this.axes.y, xyCorrection.y, this._rawPointOnPlane);\r\n if (this.point.distance(this._rawPointOnPlane) > (1.5 * this._tolerance))\r\n return; // Don't accept adjustment if distance is too great such as from nearly parallel vectors...\r\n\r\n if (CompassMode.Polar === this.compassMode) {\r\n this._distance = this.origin.distance(this._rawPointOnPlane);\r\n } else {\r\n this.delta.x = this._rawDelta.x;\r\n this.delta.y = this._rawDelta.y;\r\n }\r\n\r\n this.point.setFrom(this._rawPointOnPlane);\r\n this._lastSnapDetail.indexed = true;\r\n }\r\n\r\n private fixPoint(pointActive: Point3d, vp: ScreenViewport): void {\r\n if (this.isActive && ((vp !== this.currentView) || this.flags.rotationNeedsUpdate)) {\r\n this.currentView = vp;\r\n\r\n if (!(this.locked & LockedStates.ANGLE_BM || this._fieldLocked[ItemField.Z_Item])) {\r\n // origin not locked down...may change when vie changes...\r\n if (!this.flags.haveValidOrigin)\r\n this.setDefaultOrigin(vp);\r\n\r\n // in a view based rotation, and the view has changed, so update the rotation...\r\n if (!this.flags.lockedRotation) {\r\n this.updateRotation();\r\n this.flags.rotationNeedsUpdate = false;\r\n }\r\n }\r\n }\r\n if (this.isInactive || this.isDeactivated) {\r\n this.point.setFrom(pointActive);\r\n this.currentView = vp;\r\n this.processHints();\r\n return;\r\n }\r\n if (this.isActive) {\r\n this._rawPoint.setFrom(pointActive);\r\n this.currentView = vp;\r\n this.flags.dialogNeedsUpdate = true;\r\n\r\n if (TentativeOrAccuSnap.isHot && CompassMode.Polar === this.compassMode)\r\n this.indexed = this.locked;\r\n else\r\n this.indexed = LockedStates.NONE_LOCKED;\r\n\r\n if (CompassMode.Polar === this.compassMode)\r\n this.fixPointPolar(vp);\r\n else\r\n this.fixPointRectangular(vp);\r\n\r\n this.fixPointLastSnapDetail(vp);\r\n\r\n pointActive.setFrom(this.point);\r\n } else if (CompassMode.Rectangular === this.compassMode) {\r\n if (this._fieldLocked[ItemField.X_Item])\r\n pointActive.x = this.delta.x;\r\n\r\n if (this._fieldLocked[ItemField.Y_Item])\r\n pointActive.y = this.delta.y;\r\n\r\n if (this._fieldLocked[ItemField.Z_Item])\r\n pointActive.z = this.delta.z;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public refreshDecorationsAndDynamics(): void {\r\n // Immediately process hints and show dynamics using adjusted point when not called from button down...\r\n if (!this.flags.inDataPoint)\r\n this.processHints();\r\n\r\n // Make sure AccuDraw updates its decorations...\r\n if (undefined !== this.currentView)\r\n this.currentView.invalidateDecorations();\r\n\r\n // Make sure active tool updates its dynamics. NOTE: Need point adjusted for new locks, etc.\r\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true);\r\n }\r\n\r\n /** @internal */\r\n public upgradeToActiveState(): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n\r\n if (!this.isInactive)\r\n return false;\r\n\r\n const vp = this.currentView;\r\n if (!vp || 1.0 !== vp.view.getAspectRatioSkew())\r\n return false; // Disallow AccuDraw being enabled for exaggerated views...\r\n\r\n // NOTE: If ACS Plane lock setup initial and base rotation to ACS...\r\n if (vp && AccuDraw.useACSContextRotation(vp, false)) {\r\n this.setRotationMode(RotationMode.ACS);\r\n this.flags.baseRotation = RotationMode.ACS;\r\n this.flags.auxRotationPlane = RotationMode.Top;\r\n }\r\n\r\n if (this.published.flags & AccuDrawFlags.SmartRotation) {\r\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\r\n if (undefined !== snap) {\r\n const rotation = AccuDraw.getSnapRotation(snap, vp);\r\n if (undefined !== rotation) {\r\n this.setContextRotation(rotation, true, false);\r\n this.changeBaseRotationMode(RotationMode.Context);\r\n }\r\n }\r\n }\r\n\r\n this.checkRotation();\r\n\r\n // Compass will jump to correct location when fixPoint is called...but we don't want to see the jump...\r\n if (!this.flags.haveValidOrigin)\r\n this.setDefaultOrigin(vp);\r\n\r\n // Initialize rawPoint data...invalid for alignments until next fixPoint...\r\n this._rawPoint.setFrom(this.point);\r\n this._rawPointOnPlane.setFrom(this.point);\r\n\r\n // Upgrade state to enabled...want compass to display...\r\n this.currentState = CurrentState.Active;\r\n\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public downgradeInactiveState(): boolean {\r\n if (!this.isEnabled)\r\n return false;\r\n this.onEventCommon();\r\n if (!this.isActive)\r\n return false;\r\n // Downgrade state back to inactive...\r\n this.currentState = CurrentState.Inactive;\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onBeginDynamics(): boolean { return this.upgradeToActiveState(); }\r\n /** @internal */\r\n public onEndDynamics(): boolean { return this.downgradeInactiveState(); }\r\n\r\n /** Can be called by sub-classes as the default implementation of onMotion.\r\n * @see [[onMotion]]\r\n * @note Input fields are expected to call [[AccuDrawShortcuts.itemFieldNewInput]] when the user enters a value that is not a shortcut\r\n * and call [[AccuDrawShortcuts.itemFieldCompletedInput]] when a value is accepted, such as when focusing out of the field. This is\r\n * required for processMotion to correctly handle updating dynamic field values to reflect the current cursor location.\r\n */\r\n public processMotion(): void {\r\n if (this.flags.dialogNeedsUpdate || !this.isActive) {\r\n if (this.isActive && this.smartKeyin) {\r\n // NOTE: fixPointRectangular sets newFocus to either x or y based on which axis is closer to the input point...\r\n if (CompassMode.Rectangular === this.compassMode && !this.dontMoveFocus && !this.getFieldLock(this.newFocus) && this.hasInputFocus)\r\n this.setFocusItem(this.newFocus);\r\n }\r\n\r\n const sendDynamicFieldValueChange = (item: ItemField): void => {\r\n if (KeyinStatus.Dynamic === this.getKeyinStatus(item))\r\n this.onFieldValueChange(item);\r\n };\r\n\r\n // NOTE: Shows the current deltas for rectangular mode when active and current coordinate when not active...\r\n sendDynamicFieldValueChange(ItemField.X_Item);\r\n sendDynamicFieldValueChange(ItemField.Y_Item);\r\n sendDynamicFieldValueChange(ItemField.Z_Item);\r\n sendDynamicFieldValueChange(ItemField.ANGLE_Item);\r\n sendDynamicFieldValueChange(ItemField.DIST_Item);\r\n }\r\n }\r\n\r\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\r\n * Should also choose active x or y input field in rectangular mode based on cursor position when\r\n * axis isn't locked to support \"smart lock\".\r\n * @see [[processMotion]]\r\n */\r\n public onMotion(_ev: BeButtonEvent): void { }\r\n\r\n /** @internal */\r\n public onPreButtonEvent(ev: BeButtonEvent): boolean {\r\n if (BeButton.Reset === ev.button && !ev.isDown && !ev.isDragging) {\r\n if (IModelApp.tentativePoint.isActive && this.isActive) {\r\n IModelApp.tentativePoint.clear(true);\r\n this.refreshDecorationsAndDynamics();\r\n return true;\r\n }\r\n\r\n if (this.isEnabled)\r\n this.onEventCommon();\r\n return false;\r\n }\r\n\r\n if (BeButton.Data !== ev.button || !ev.isDown || !this.isEnabled)\r\n return false;\r\n\r\n this.onEventCommon();\r\n this.flags.inDataPoint = true;\r\n if (this.currentState < CurrentState.Inactive)\r\n return false;\r\n if (!this.currentView)\r\n this.currentView = ev.viewport;\r\n this.updateRotation();\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onPostButtonEvent(ev: BeButtonEvent): boolean {\r\n if (BeButton.Data !== ev.button || !ev.isDown || !this.isEnabled) {\r\n this._lastSnapDetail = undefined;\r\n return false;\r\n }\r\n\r\n this.onEventCommon();\r\n\r\n if (this.flags.ignoreDataButton) {\r\n // NOTE: Ignore this data point, was used to terminate a viewing command or input collector...\r\n this.flags.ignoreDataButton = false;\r\n } else if (!this.flags.fixedOrg && this.currentState >= CurrentState.Inactive) {\r\n /* set origin to last point placed unless its being set elsewhere */\r\n if (((!this.contextSensitive &&\r\n !(this.published.flags & (AccuDrawFlags.AlwaysSetOrigin ^ AccuDrawFlags.SetOrigin))) ||\r\n !(this.published.flags & AccuDrawFlags.SetOrigin))) {\r\n this.published.flags |= AccuDrawFlags.SetOrigin;\r\n\r\n if (this.currentState >= CurrentState.Inactive)\r\n this.published.origin.setFrom(ev.point);\r\n else\r\n this.published.origin.setFrom(this.point);\r\n }\r\n\r\n this.saveLockedCoords();\r\n this.processHints();\r\n\r\n if (this.currentState >= CurrentState.Inactive)\r\n this.updateRotation();\r\n }\r\n\r\n this.flags.inDataPoint = false;\r\n this.flags.indexLocked = false;\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onTentative(): boolean {\r\n if (this.isActive || this.isInactive)\r\n this.grabInputFocus(); // AccuDraw gets input focus on a tentative\r\n\r\n return false;\r\n }\r\n\r\n private intersectXYCurve(snap: SnapDetail, curve: CurvePrimitive, usePointOnSnap: boolean) {\r\n if (undefined === this.currentView)\r\n return;\r\n\r\n const curveSegment = snap.getCurvePrimitive(); // Get single segment of linestring/shape...\r\n if (undefined === curveSegment)\r\n return;\r\n\r\n const worldToView = this.currentView.worldToViewMap.transform0;\r\n const detail = CurveCurve.intersectionProjectedXYPairs(worldToView, usePointOnSnap ? curveSegment : curve, true, usePointOnSnap ? curve : curveSegment, true);\r\n if (0 === detail.length)\r\n return;\r\n\r\n let closeIndex = 0;\r\n if (detail.length > 1) {\r\n const snapPt = worldToView.multiplyPoint3d(snap.getPoint(), 1);\r\n let lastDist: number | undefined;\r\n\r\n for (let i = 0; i < detail.length; i++) {\r\n const testPt = worldToView.multiplyPoint3d(detail[i].detailA.point, 1);\r\n const testDist = snapPt.realDistanceXY(testPt);\r\n\r\n if (undefined !== testDist && (undefined === lastDist || testDist < lastDist)) {\r\n lastDist = testDist;\r\n closeIndex = i;\r\n }\r\n }\r\n }\r\n\r\n snap.setSnapPoint(detail[closeIndex].detailA.point, SnapHeat.NotInRange);\r\n }\r\n\r\n private intersectLine(snap: SnapDetail, linePt: Point3d, unitVec: Vector3d) {\r\n const vec = Vector3d.createStartEnd(linePt, snap.getPoint());\r\n const endPt = linePt.plusScaled(unitVec, vec.dotProduct(unitVec));\r\n const cpLine = LineSegment3d.create(linePt, endPt);\r\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.\r\n }\r\n\r\n private intersectCircle(snap: SnapDetail, center: Point3d, normal: Vector3d, radius: number) {\r\n const matrix = Matrix3d.createRigidHeadsUp(normal);\r\n const vector0 = matrix.columnX();\r\n const vector90 = matrix.columnY();\r\n vector0.scaleToLength(radius, vector0);\r\n vector90.scaleToLength(radius, vector90);\r\n const cpArc = Arc3d.create(center, vector0, vector90);\r\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.\r\n }\r\n\r\n /** @internal */\r\n public onSnap(snap: SnapDetail): boolean {\r\n // If accudraw is locked, adjust near snap point to be the nearest point on this element, CONSTRAINED by the accudraw lock.\r\n if (!this.isActive || !this.locked)\r\n return false;\r\n\r\n if (SnapMode.Nearest !== snap.snapMode)\r\n return false;\r\n\r\n if (!snap.primitive)\r\n return false;\r\n\r\n switch (this.locked) {\r\n case LockedStates.VEC_BM: {\r\n this.intersectLine(snap, this.origin, this.vector);\r\n break;\r\n }\r\n\r\n case LockedStates.X_BM: {\r\n const refPt = (CompassMode.Rectangular === this.compassMode) ? this.planePt.plusScaled(this.axes.x, this.delta.x) : this.origin;\r\n this.intersectLine(snap, refPt, this.axes.y);\r\n break;\r\n }\r\n\r\n case LockedStates.Y_BM: {\r\n const refPt = (CompassMode.Rectangular === this.compassMode) ? this.planePt.plusScaled(this.axes.y, this.delta.y) : this.origin;\r\n this.intersectLine(snap, refPt, this.axes.x);\r\n break;\r\n }\r\n\r\n case LockedStates.DIST_BM: {\r\n this.intersectCircle(snap, this.origin, this.axes.z, this._distance);\r\n break;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public onSelectedViewportChanged(previous: ScreenViewport | undefined, current: ScreenViewport | undefined): void {\r\n // In case previous is closing, always update AccuDraw to current view...\r\n if (undefined !== this.currentView && this.currentView === previous)\r\n this.currentView = current;\r\n\r\n // Reset AccuDraw when iModel or view type changes...\r\n if (undefined !== current && undefined !== previous &&\r\n (current.view.classFullName === previous.view.classFullName) &&\r\n (current.view.iModel === previous.view.iModel))\r\n return;\r\n\r\n this._acsPickId = undefined;\r\n this.currentView = undefined;\r\n this.flags.redrawCompass = false;\r\n\r\n this.flags.baseRotation = RotationMode.View;\r\n this.flags.auxRotationPlane = RotationMode.Top;\r\n this.flags.rotationNeedsUpdate = true;\r\n\r\n this.flags.haveValidOrigin = false;\r\n this.flags.indexLocked = false;\r\n this.flags.bearingFixToPlane2D = false;\r\n\r\n this.setRotationMode(RotationMode.View);\r\n this.updateRotation();\r\n\r\n this.saveState(this.savedStateViewTool);\r\n this.saveState(this.savedStateInputCollector);\r\n }\r\n\r\n private doProcessHints(): void {\r\n if (!this.floatingOrigin) {\r\n if (this.published.flags & AccuDrawFlags.SetOrigin)\r\n this.unlockAllFields();\r\n return;\r\n }\r\n\r\n // Set Context Origin\r\n if (this.published.flags & AccuDrawFlags.SetOrigin) {\r\n if (this.floatingOrigin) {\r\n this.origin.setFrom(this.published.origin);\r\n this.point.setFrom(this.origin);\r\n this.planePt.setFrom(this.origin);\r\n }\r\n this.flags.haveValidOrigin = true;\r\n this.setLastPoint(this.origin);\r\n this.unlockAllFields();\r\n this.updateRotation();\r\n }\r\n\r\n if (!this.contextSensitive)\r\n return;\r\n\r\n // Mode -- Polar or Rectangular\r\n if (this.published.flags & (AccuDrawFlags.SetModePolar | AccuDrawFlags.SetModeRect)) {\r\n if (this.compassMode !== ((this.published.flags & AccuDrawFlags.SetModePolar) ? CompassMode.Polar : CompassMode.Rectangular))\r\n this.changeCompassMode();\r\n }\r\n\r\n // Fixed Origin\r\n if (this.published.flags & AccuDrawFlags.FixedOrigin)\r\n this.flags.fixedOrg = true;\r\n\r\n // Save Distance\r\n if (this.published.flags & (AccuDrawFlags.SetDistance | AccuDrawFlags.LockDistance))\r\n this.saveCoordinate(ItemField.DIST_Item, this.published.distance);\r\n\r\n const vp = this.currentView;\r\n // Do Context Rotation\r\n if (this.published.flags & AccuDrawFlags.SetRMatrix) {\r\n this.axes.fromMatrix3d(this.published.rMatrix);\r\n this.flags.lockedRotation = true;\r\n this.flags.contextRotMode = ContextMode.Locked;\r\n this.setRotationMode(RotationMode.Context);\r\n this.updateRotation();\r\n } else if (this.published.flags & AccuDrawFlags.SetXAxis) {\r\n this.axes.x.setFrom(this.published.vector);\r\n this.flags.contextRotMode = ContextMode.XAxis;\r\n this.setRotationMode(RotationMode.Context);\r\n this.updateRotation();\r\n } else if (this.published.flags & AccuDrawFlags.SetXAxis2) {\r\n this.axes.x.setFrom(this.published.vector);\r\n this.flags.contextRotMode = ContextMode.XAxis2;\r\n this.setRotationMode(RotationMode.Context);\r\n this.updateRotation();\r\n } else if (this.published.flags & AccuDrawFlags.SetNormal) {\r\n if (vp && vp.view.is3d()) {\r\n this.axes.z.setFrom(this.published.vector);\r\n this.flags.contextRotMode = ContextMode.ZAxis;\r\n this.setRotationMode(RotationMode.Context);\r\n this.updateRotation();\r\n }\r\n } else if (this.published.flags & AccuDrawFlags.OrientACS) {\r\n this.flags.lockedRotation = true;\r\n this.flags.baseRotation = RotationMode.ACS;\r\n this.setRotationMode(RotationMode.ACS);\r\n this.updateRotation();\r\n } else if (this.isInactive || (this.published.flags & AccuDrawFlags.OrientDefault)) {\r\n this.setRotationMode(this.flags.baseRotation);\r\n this.updateRotation();\r\n }\r\n\r\n // Lock Items\r\n switch (this.compassMode) {\r\n case CompassMode.Polar:\r\n if (this.published.flags & AccuDrawFlags.LockDistance) {\r\n this._distance = this.published.distance;\r\n this.distanceLock(true, true);\r\n }\r\n\r\n if (this.published.flags & AccuDrawFlags.LockAngle) {\r\n this.updateVector(this.published.angle);\r\n this.indexed = LockedStates.NONE_LOCKED;\r\n this.angleLock();\r\n this.saveCoordinate(ItemField.ANGLE_Item, this.published.angle);\r\n }\r\n break;\r\n\r\n case CompassMode.Rectangular:\r\n if ((this.published.flags & AccuDrawFlags.Lock_X)) {\r\n this.locked |= LockedStates.X_BM;\r\n this.delta.x = this.published.delta.x;\r\n this.setFieldLock(ItemField.X_Item, true);\r\n this.saveCoordinate(ItemField.X_Item, this.published.delta.x);\r\n }\r\n\r\n if ((this.published.flags & AccuDrawFlags.Lock_Y)) {\r\n this.locked |= LockedStates.Y_BM;\r\n this.delta.y = this.published.delta.y;\r\n this.setFieldLock(ItemField.Y_Item, true);\r\n this.saveCoordinate(ItemField.Y_Item, this.published.delta.y);\r\n }\r\n\r\n if ((this.published.flags & AccuDrawFlags.Lock_Z)) {\r\n if (vp && vp.view.is3d()) {\r\n this.delta.z = this.published.delta.z;\r\n this.setFieldLock(ItemField.Z_Item, true);\r\n this.saveCoordinate(ItemField.Z_Item, this.published.delta.z);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public processHints(): void {\r\n if (!this.published.flags || !this.isEnabled)\r\n return;\r\n\r\n if (this.published.flags & AccuDrawFlags.Disable) {\r\n this.published.flags = 0;\r\n this.currentState = CurrentState.Deactivated;\r\n return;\r\n }\r\n const setFocus: boolean = !!(this.published.flags & AccuDrawFlags.SetFocus);\r\n const smartRotation: boolean = !!(this.published.flags & AccuDrawFlags.SmartRotation);\r\n this.doProcessHints();\r\n this.published.zero();\r\n if (smartRotation && this.isInactive) // Preserve smart rotation hint until when/if AccuDraw is enabled for the current tool...\r\n this.published.flags = AccuDrawFlags.SmartRotation;\r\n if (this.isEnabled || setFocus)\r\n this.grabInputFocus();\r\n }\r\n}\r\n\r\n/** Specify the rotation to return from [[AccuDrawHintBuilder.getContextRotation]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum ContextRotationId { Top, Front, Left, Bottom, Back, Right, View, Face }\r\n\r\n/** [[AccuDrawHintBuilder]] is an [[InteractiveTool]] helper class that facilitates AccuDraw interaction.\r\n * Accudraw is an aide for entering coordinate data.\r\n * A tool does not directly change the current AccuDraw state; the tool's job is merely\r\n * to supply \"hints\" to AccuDraw regarding its preferred AccuDraw configuration for the\r\n * current tool state. User settings such as \"Context Sensitivity\" and \"Floating Origin\"\r\n * affect how and which hints are applied. Additionally the user can drive AccuDraw\r\n * through keyboard shortcuts.\r\n * @see [Using AccuDraw]($docs/learning/frontend/primitivetools.md#AccuDraw)*\r\n * @public\r\n * @extensions\r\n */\r\nexport class AccuDrawHintBuilder {\r\n private _flagOrigin = false;\r\n private _flagNormal = false;\r\n private _flagRotation = false;\r\n private _flagXAxis = false;\r\n private _flagXAxis2 = false;\r\n private _flagDistance = false;\r\n private _flagAngle = false;\r\n private _flagModePolar = false;\r\n private _flagModeRectangular = false;\r\n private _origin?: Point3d;\r\n private _axis?: Vector3d;\r\n private _rMatrix?: Matrix3d;\r\n private _distance = 0;\r\n private _angle = 0;\r\n\r\n /** Don't automatically set compass origin to point from data button events */\r\n public setOriginFixed = false;\r\n /** Override \"fixed\" and \"floating\" origin settings for [[setOrigin] hint */\r\n public setOriginAlways = false;\r\n /** Lock current distance value in polar mode */\r\n public setLockDistance = false;\r\n /** Lock current angle value in polar mode */\r\n public setLockAngle = false;\r\n /** Lock current x delta value in rectangular mode */\r\n public setLockX = false;\r\n /** Lock current y delta value in rectangular mode */\r\n public setLockY = false;\r\n /** Lock current z delta value in 3d views */\r\n public setLockZ = false;\r\n /** Set the initial compass orientation from the current [[SnapDetail]] when activating */\r\n public enableSmartRotation = false;\r\n\r\n /** Add hint to specify a new compass origin */\r\n public setOrigin(origin: Point3d): void {\r\n this._origin = origin.clone();\r\n this._flagOrigin = true;\r\n }\r\n\r\n /** Add hint to fully specify compass orientation from a Matrix3d */\r\n public setMatrix(matrix: Matrix3d): boolean {\r\n const invMatrix = matrix.inverse();\r\n if (undefined === invMatrix)\r\n return false;\r\n this.setRotation(invMatrix);\r\n return true;\r\n }\r\n\r\n /** @internal Add hint to fully specify compass orientation from a Matrix3d in row format */\r\n public setRotation(rowMatrix: Matrix3d): void {\r\n this._rMatrix = rowMatrix.clone();\r\n this._flagRotation = true;\r\n this._flagXAxis = this._flagNormal = false;\r\n }\r\n\r\n /** Add hint to change compass orientation by combining the supplied x axis direction with the current base rotation */\r\n public setXAxis(xAxis: Vector3d): void {\r\n this._axis = xAxis.clone();\r\n this._flagXAxis = true;\r\n this._flagRotation = this._flagNormal = this._flagXAxis2 = false;\r\n }\r\n\r\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 */\r\n public setXAxis2(xAxis: Vector3d): void {\r\n this._axis = xAxis.clone();\r\n this._flagXAxis2 = true;\r\n this._flagRotation = this._flagNormal = this._flagXAxis = false;\r\n }\r\n\r\n /** Add hint to change compass orientation by combining the supplied z axis direction with the current base rotation */\r\n public setNormal(normal: Vector3d): void {\r\n this._axis = normal.clone();\r\n this._flagNormal = true;\r\n this._flagRotation = this._flagXAxis = this._flagXAxis2 = false;\r\n }\r\n\r\n /** Add hint to change compass to polar mode */\r\n public setModePolar(): void {\r\n this._flagModePolar = true;\r\n this._flagModeRectangular = false;\r\n }\r\n\r\n /** Add hint to change compass to rectangular mode */\r\n public setModeRectangular(): void {\r\n this._flagModeRectangular = true;\r\n this._flagModePolar = false;\r\n }\r\n\r\n /** Set current distance value in polar mode */\r\n public setDistance(distance: number): void {\r\n this._distance = distance;\r\n this._flagDistance = true;\r\n }\r\n\r\n /** Set current angle value in polar mode */\r\n public setAngle(angle: number): void {\r\n this._angle = angle;\r\n this._flagAngle = true;\r\n }\r\n\r\n /** Enable AccuDraw for the current tool without sending any hints */\r\n public static activate(): void { IModelApp.accuDraw.activate(); }\r\n\r\n /** Disable AccuDraw for the current tool */\r\n public static deactivate(): void { IModelApp.accuDraw.deactivate(); }\r\n\r\n /** Whether AccuDraw is enabled by the host application this session and can be used */\r\n public static get isEnabled(): boolean { return IModelApp.accuDraw.isEnabled; }\r\n\r\n /** Whether AccuDraw compass is currently displayed and points are being adjusted */\r\n public static get isActive(): boolean { return IModelApp.accuDraw.isActive; }\r\n\r\n /**\r\n * Immediately process pending hints and update tool dynamics using the adjusted point when not called from a button down event.\r\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.\r\n * A typical interactive tool should not call this method and should only be calling sendHints.\r\n * @see [[sendHints]]\r\n */\r\n public static processHintsImmediate(): void { return IModelApp.accuDraw.refreshDecorationsAndDynamics(); }\r\n\r\n /**\r\n * Provide hints to AccuDraw using the current builder state.\r\n * @return true if hints were successfully sent.\r\n */\r\n public sendHints(activate = true): boolean {\r\n let flags = 0;\r\n if (this._flagOrigin)\r\n flags |= AccuDrawFlags.SetOrigin;\r\n if (this.setOriginFixed)\r\n flags |= AccuDrawFlags.FixedOrigin;\r\n if (this.setOriginAlways)\r\n flags |= AccuDrawFlags.AlwaysSetOrigin;\r\n if (this._flagRotation)\r\n flags |= AccuDrawFlags.SetRMatrix;\r\n if (this._flagXAxis)\r\n flags |= AccuDrawFlags.SetXAxis;\r\n if (this._flagXAxis2)\r\n flags |= AccuDrawFlags.SetXAxis2;\r\n if (this._flagNormal)\r\n flags |= AccuDrawFlags.SetNormal;\r\n if (this._flagModePolar)\r\n flags |= AccuDrawFlags.SetModePolar;\r\n if (this._flagModeRectangular)\r\n flags |= AccuDrawFlags.SetModeRect;\r\n if (this.setLockDistance)\r\n flags |= AccuDrawFlags.LockDistance;\r\n if (this.setLockAngle)\r\n flags |= AccuDrawFlags.LockAngle;\r\n if (this.setLockX)\r\n flags |= AccuDrawFlags.Lock_X;\r\n if (this.setLockY)\r\n flags |= AccuDrawFlags.Lock_Y;\r\n if (this.setLockZ)\r\n flags |= AccuDrawFlags.Lock_Z;\r\n if (this.enableSmartRotation)\r\n flags |= AccuDrawFlags.SmartRotation;\r\n\r\n const accuDraw = IModelApp.accuDraw;\r\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))\r\n return false; // Not enabled for this session...\r\n\r\n if (activate)\r\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)...\r\n\r\n return true;\r\n }\r\n\r\n /** Adjust the location of the last data button. If dynamics are enabled on this event, [[InteractiveTool.onDynamicFrame]] is called with this location. */\r\n public setLastPoint(ev: BeButtonEvent): void {\r\n IModelApp.toolAdmin.setAdjustedDataPoint(ev);\r\n }\r\n\r\n /** Create a [[Ray3d]] whose origin is the supplied space point and direction is into the view */\r\n public static getBoresite(spacePt: Point3d, vp: Viewport, checkAccuDraw: boolean = false, checkACS: boolean = false): Ray3d {\r\n if (checkAccuDraw && IModelApp.accuDraw.isActive)\r\n return Ray3d.create(spacePt, IModelApp.accuDraw.getRotation().getRow(2).negate());\r\n\r\n if (checkACS && vp.isContextRotationRequired)\r\n return Ray3d.create(spacePt, vp.getAuxCoordRotation().getRow(2).negate());\r\n\r\n const eyePoint = vp.worldToViewMap.transform1.columnZ();\r\n const direction = Vector3d.createFrom(eyePoint);\r\n const aa = Geometry.conditionalDivideFraction(1, eyePoint.w);\r\n if (aa !== undefined) {\r\n const xyzEye = direction.scale(aa);\r\n direction.setFrom(spacePt.vectorTo(xyzEye));\r\n }\r\n direction.scaleToLength(-1.0, direction);\r\n return Ray3d.create(spacePt, direction);\r\n }\r\n\r\n /** Return ray intersection with a plane defined by a point and normal\r\n * @see [[getBoresite]]\r\n */\r\n public static projectPointToPlaneInView(spacePt: Point3d, planePt: Point3d, planeNormal: Vector3d, vp: Viewport, checkAccuDraw: boolean = false, checkACS: boolean = false): Point3d | undefined {\r\n const plane = Plane3dByOriginAndUnitNormal.create(planePt, planeNormal);\r\n if (undefined === plane)\r\n return undefined;\r\n const rayToEye = AccuDrawHintBuilder.getBoresite(spacePt, vp, checkAccuDraw, checkACS);\r\n const projectedPt = Point3d.createZero();\r\n if (undefined === rayToEye.intersectionWithPlane(plane, projectedPt))\r\n return undefined;\r\n return projectedPt;\r\n }\r\n\r\n /** Return ray intersection with a line defined by a point and direction\r\n * @see [[getBoresite]]\r\n */\r\n public static projectPointToLineInView(spacePt: Point3d, linePt: Point3d, lineDirection: Vector3d, vp: Viewport, checkAccuDraw: boolean = false, checkACS: boolean = false): Point3d | undefined {\r\n const lineRay = Ray3d.create(linePt, lineDirection);\r\n const rayToEye = AccuDrawHintBuilder.getBoresite(spacePt, vp, checkAccuDraw, checkACS);\r\n if (rayToEye.direction.isParallelTo(lineRay.direction, true))\r\n return lineRay.projectPointToRay(spacePt);\r\n const matrix = Matrix3d.createRigidFromColumns(lineRay.direction, rayToEye.direction, AxisOrder.XZY);\r\n if (undefined === matrix)\r\n return undefined;\r\n const plane = Plane3dByOriginAndUnitNormal.create(linePt, matrix.columnZ());\r\n if (undefined === plane)\r\n return undefined;\r\n const projectedPt = Point3d.createZero();\r\n if (undefined === rayToEye.intersectionWithPlane(plane, projectedPt))\r\n return undefined;\r\n return lineRay.projectPointToRay(projectedPt);\r\n }\r\n\r\n /** Return a [[Matrix3d]] representing the current working plane specified by AccuDraw, [[Viewport.auxCoordSystem]], or [[Viewport.rotation]]. */\r\n public static getCurrentRotation(vp: Viewport, checkAccuDraw: boolean, checkACS: boolean, matrix?: Matrix3d): Matrix3d | undefined {\r\n const current = AccuDraw.getCurrentOrientation(vp, checkAccuDraw, checkACS, matrix);\r\n return (undefined !== current ? current.inverse() : undefined);\r\n }\r\n\r\n /** Return a [[Matrix3d]] from a [[SnapDetail]].\r\n * Uses [[SnapDetail.normal]] and [[SnapDetail.primitive]] when available to create the most well defined rotation for the given snap location.\r\n */\r\n public static getSnapRotation(snap: SnapDetail, matrix?: Matrix3d): Matrix3d | undefined {\r\n const out = AccuDraw.getSnapRotation(snap, undefined, matrix);\r\n return (undefined !== out ? out.inverse() : undefined);\r\n }\r\n\r\n /** Return a [[Matrix3d]] corresponding to the supplied [[ContextRotationId]].\r\n * A [[ContextRotationId]] that corresponds to a standard view, \"Top\", \"Front\", etc. will return a [[Matrix3d]] that\r\n * is relative to the current [[Viewport.auxCoordSystem]] when ACS context lock is enabled.\r\n * @see [[ToolAdmin.acsContextLock]]\r\n */\r\n public static getContextRotation(id: ContextRotationId, vp: Viewport): Matrix3d | undefined {\r\n switch (id) {\r\n case ContextRotationId.Top:\r\n return AccuDraw.getStandardRotation(StandardViewId.Top, vp, vp.isContextRotationRequired).inverse();\r\n case ContextRotationId.Front:\r\n return AccuDraw.getStandardRotation(StandardViewId.Front, vp, vp.isContextRotationRequired).inverse();\r\n case ContextRotationId.Left:\r\n return AccuDraw.getStandardRotation(StandardViewId.Left, vp, vp.isContextRotationRequired).inverse();\r\n case ContextRotationId.Bottom:\r\n return AccuDraw.getStandardRotation(StandardViewId.Bottom, vp, vp.isContextRotationRequired).inverse();\r\n case ContextRotationId.Back:\r\n return AccuDraw.getStandardRotation(StandardViewId.Back, vp, vp.isContextRotationRequired).inverse();\r\n case ContextRotationId.Right:\r\n return AccuDraw.getStandardRotation(StandardViewId.Right, vp, vp.isContextRotationRequired).inverse();\r\n case ContextRotationId.View:\r\n return vp.view.getRotation().inverse();\r\n case ContextRotationId.Face:\r\n const snap = TentativeOrAccuSnap.getCurrentSnap(false);\r\n if (undefined === snap || undefined === snap.normal)\r\n return undefined;\r\n const normal = Vector3d.createZero();\r\n const boresite = this.getBoresite(snap.hitPoint, vp);\r\n if (snap.normal.dotProduct(boresite.direction) < 0.0)\r\n normal.setFrom(snap.normal);\r\n else\r\n snap.normal.negate(normal);\r\n return Matrix3d.createRigidHeadsUp(normal);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AccuDraw.js","sourceRoot":"","sources":["../../src/AccuDraw.ts"],"names":[],"mappings":"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"}
|