@arcgis/core 4.28.0-next.20230713 → 4.28.0-next.20230715
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/Basemap.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0b28b5eec6dc67be8ce9.js → 0121bfc81b794745e024.js} +1 -1
- package/assets/esri/core/workers/chunks/067d3d45caeaaba18d81.js +1 -0
- package/assets/esri/core/workers/chunks/080a13dc08a8db498ffa.js +1 -0
- package/assets/esri/core/workers/chunks/0dccbc6c2559fdc0c2ad.js +1 -0
- package/assets/esri/core/workers/chunks/{c912466351e37db68b6c.js → 14ab33573bb02d6c6b1a.js} +1 -1
- package/assets/esri/core/workers/chunks/{c4b066760e9aa85b7607.js → 1b948f8429d8f9b1bbfb.js} +1 -1
- package/assets/esri/core/workers/chunks/204ed2ebd2d3da659791.js +1 -0
- package/assets/esri/core/workers/chunks/{5d5d4a4fdf5ca8d7837f.js → 239d4176ff2d5142b7f1.js} +1 -1
- package/assets/esri/core/workers/chunks/23bb98aaa20b180ee680.js +1 -0
- package/assets/esri/core/workers/chunks/27cf3ef9566d5226b0df.js +1 -0
- package/assets/esri/core/workers/chunks/{1c86f80d73dee1a4d9b7.js → 2f1695e4807a534e1743.js} +1 -1
- package/assets/esri/core/workers/chunks/{60b422009f58d7bbb8c4.js → 3164b862a6b3f654fade.js} +1 -1
- package/assets/esri/core/workers/chunks/35f60625ada14eb801fd.js +1 -0
- package/assets/esri/core/workers/chunks/{4e4e62462deec25e82ce.js → 3a04bf1cdce263fe2191.js} +1 -1
- package/assets/esri/core/workers/chunks/41011207b6cc5eb6232f.js +1 -0
- package/assets/esri/core/workers/chunks/{8d50449c029c73136204.js → 432e3558db53574d21b4.js} +1 -1
- package/assets/esri/core/workers/chunks/4767f69b81d36dde9550.js +1 -0
- package/assets/esri/core/workers/chunks/{08ee2bd914867fd2cbd5.js → 490629c6f9fee501c9cd.js} +1 -1
- package/assets/esri/core/workers/chunks/{044b15794b6403792f04.js → 4f079d0e69189c1d8bd9.js} +1 -1
- package/assets/esri/core/workers/chunks/4f1f4cc82fea0d1f79ec.js +1 -0
- package/assets/esri/core/workers/chunks/503a393327df755d8843.js +1 -0
- package/assets/esri/core/workers/chunks/50e05f479c7d414fc06b.js +1 -0
- package/assets/esri/core/workers/chunks/{3835a76c017431f19422.js → 51da3c5c50b153ce6bc7.js} +1 -1
- package/assets/esri/core/workers/chunks/54b97ca5f2164b941f5b.js +1 -0
- package/assets/esri/core/workers/chunks/5a3fb63dab89cf3418f7.js +1 -0
- package/assets/esri/core/workers/chunks/5ceaf1f05b219034a10c.js +1 -0
- package/assets/esri/core/workers/chunks/70aabffaaa0a1da8e609.js +1 -0
- package/assets/esri/core/workers/chunks/78cb95d1594a0cb0dd7a.js +1 -0
- package/assets/esri/core/workers/chunks/7f391ae5e0ea7812baca.js +1 -0
- package/assets/esri/core/workers/chunks/{1d2b8b937bbda91a6549.js → 82dfbc175b52c7a10475.js} +1 -1
- package/assets/esri/core/workers/chunks/{036cd65514eab1749363.js → 8467d05626a3a72462c9.js} +1 -1
- package/assets/esri/core/workers/chunks/9038b1317f1252e31f09.js +1 -0
- package/assets/esri/core/workers/chunks/929ddc4d9975ed893767.js +1 -0
- package/assets/esri/core/workers/chunks/{e86dcc239c6a57000afc.js → 94633cc9cfb089ef010e.js} +1 -1
- package/assets/esri/core/workers/chunks/{2f5f398374ff77fb17f0.js → 975eef6d20c17a0ed07b.js} +1 -1
- package/assets/esri/core/workers/chunks/{8913bddc76b82cb24664.js → 98cf4e744e8f2c3fc536.js} +1 -1
- package/assets/esri/core/workers/chunks/a00414550fa21c5662f3.js +1 -0
- package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +1 -0
- package/assets/esri/core/workers/chunks/{4e2029c8cc8a5afe5759.js → a5348f117dacdcae99ee.js} +1 -1
- package/assets/esri/core/workers/chunks/b0f0a3178d88fa600a11.js +1 -0
- package/assets/esri/core/workers/chunks/b4446ce010bc4a5aa917.js +1 -0
- package/assets/esri/core/workers/chunks/b8a45b28a915a423d09d.js +1 -0
- package/assets/esri/core/workers/chunks/{fb97d39b25b0b009d2f0.js → bd9e6f38c9ec4195322a.js} +1 -1
- package/assets/esri/core/workers/chunks/{30deb5a8e9a82186991d.js → c15c4bd52d4472ed50bc.js} +1 -1
- package/assets/esri/core/workers/chunks/{55109f141c9f120833f6.js → c3d773c93efb41088c54.js} +1 -1
- package/assets/esri/core/workers/chunks/c518410b1214ffc58017.js +1 -0
- package/assets/esri/core/workers/chunks/d55faafe2ac914a3ebd1.js +1 -0
- package/assets/esri/core/workers/chunks/d5fd4780d57173f3e303.js +1 -0
- package/assets/esri/core/workers/chunks/da01e520a1ae0048e73e.js +1 -0
- package/assets/esri/core/workers/chunks/dd7603c9e5fd178c88f7.js +1 -0
- package/assets/esri/core/workers/chunks/ddcf58937924ab5a3d76.js +1 -0
- package/assets/esri/core/workers/chunks/e03a0f52d438f53a3057.js +1 -0
- package/assets/esri/core/workers/chunks/e433440fecd0114cb23d.js +1 -0
- package/assets/esri/core/workers/chunks/ea1560129e426980a4e2.js +1 -0
- package/assets/esri/core/workers/chunks/f73e2143f8d053aef092.js +1 -0
- package/assets/esri/core/workers/chunks/{0a0af540f4fe64c3d292.js → fa14238f1c308a74f843.js} +1 -1
- package/assets/esri/themes/base/widgets/_ElevationProfile.scss +3 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/RibbonLine.glsl.js +57 -72
- package/chunks/ar.js +1 -1
- package/chunks/ar2.js +1 -1
- package/chunks/bg_BG.js +1 -1
- package/chunks/bg_BG2.js +1 -1
- package/chunks/bs_BA.js +1 -1
- package/chunks/bs_BA2.js +1 -1
- package/chunks/ca_ES.js +1 -1
- package/chunks/ca_ES2.js +1 -1
- package/chunks/chartUtilsAm5.js +1 -1
- package/chunks/cs_CZ.js +1 -1
- package/chunks/cs_CZ2.js +1 -1
- package/chunks/da_DK.js +1 -1
- package/chunks/da_DK2.js +1 -1
- package/chunks/de_CH.js +1 -1
- package/chunks/de_CH2.js +1 -1
- package/chunks/de_DE.js +1 -1
- package/chunks/de_DE2.js +1 -1
- package/chunks/el_GR.js +1 -1
- package/chunks/el_GR2.js +1 -1
- package/chunks/en_CA.js +1 -1
- package/chunks/en_CA2.js +1 -1
- package/chunks/en_US.js +1 -1
- package/chunks/en_US2.js +1 -1
- package/chunks/es_ES.js +1 -1
- package/chunks/es_ES2.js +1 -1
- package/chunks/et_EE.js +1 -1
- package/chunks/et_EE2.js +1 -1
- package/chunks/fi_FI.js +1 -1
- package/chunks/fi_FI2.js +1 -1
- package/chunks/fr_FR.js +1 -1
- package/chunks/fr_FR2.js +1 -1
- package/chunks/he_IL.js +1 -1
- package/chunks/he_IL2.js +1 -1
- package/chunks/hr_HR.js +1 -1
- package/chunks/hr_HR2.js +1 -1
- package/chunks/hu_HU.js +1 -1
- package/chunks/hu_HU2.js +1 -1
- package/chunks/id_ID.js +1 -1
- package/chunks/id_ID2.js +1 -1
- package/chunks/it_IT.js +1 -1
- package/chunks/it_IT2.js +1 -1
- package/chunks/ja_JP.js +1 -1
- package/chunks/ja_JP2.js +1 -1
- package/chunks/ko_KR.js +1 -1
- package/chunks/ko_KR2.js +1 -1
- package/chunks/lt_LT.js +1 -1
- package/chunks/lt_LT2.js +1 -1
- package/chunks/lv_LV.js +1 -1
- package/chunks/lv_LV2.js +1 -1
- package/chunks/nb_NO.js +1 -1
- package/chunks/nb_NO2.js +1 -1
- package/chunks/nl_NL.js +1 -1
- package/chunks/nl_NL2.js +1 -1
- package/chunks/pl_PL.js +1 -1
- package/chunks/pl_PL2.js +1 -1
- package/chunks/pt_BR.js +1 -1
- package/chunks/pt_BR2.js +1 -1
- package/chunks/pt_PT.js +1 -1
- package/chunks/pt_PT2.js +1 -1
- package/chunks/ro_RO.js +1 -1
- package/chunks/ro_RO2.js +1 -1
- package/chunks/ru_RU.js +1 -1
- package/chunks/ru_RU2.js +1 -1
- package/chunks/sk_SK.js +1 -1
- package/chunks/sk_SK2.js +1 -1
- package/chunks/sl_SL.js +1 -1
- package/chunks/sl_SL2.js +1 -1
- package/chunks/sr_RS.js +1 -1
- package/chunks/sr_RS2.js +1 -1
- package/chunks/sv_SE.js +1 -1
- package/chunks/sv_SE2.js +1 -1
- package/chunks/th_TH.js +1 -1
- package/chunks/th_TH2.js +1 -1
- package/chunks/tr_TR.js +1 -1
- package/chunks/tr_TR2.js +1 -1
- package/chunks/uk_UA.js +1 -1
- package/chunks/uk_UA2.js +1 -1
- package/chunks/vi_VN.js +1 -1
- package/chunks/vi_VN2.js +1 -1
- package/chunks/zh_Hans.js +1 -1
- package/chunks/zh_Hans2.js +1 -1
- package/chunks/zh_Hant.js +1 -1
- package/chunks/zh_Hant2.js +1 -1
- package/config.js +1 -1
- package/core/colorUtils.js +1 -1
- package/core/image/apng.js +1 -1
- package/core/image/gif.js +1 -1
- package/core/urlUtils.js +1 -1
- package/core/workers/WorkerOwner.js +1 -1
- package/core/workers/staticWorkerMessages.js +5 -0
- package/geometry/projection.js +1 -1
- package/interfaces.d.ts +42 -2
- package/kernel.js +1 -1
- package/layers/support/ImageElement.js +1 -1
- package/layers/video/VideoController.js +1 -1
- package/package.json +1 -1
- package/portal/Portal.js +1 -1
- package/support/BasemapStyle.js +5 -0
- package/support/basemapUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/support/previewSymbol2D.js +1 -1
- package/views/2d/GoToManager.js +5 -0
- package/views/2d/engine/Stage.js +1 -1
- package/views/2d/engine/webgl/Overlay.js +1 -1
- package/views/2d/engine/webgl/animatedFormats/utils.js +1 -1
- package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
- package/views/2d/interactive/editingTools/TransformTool.js +1 -1
- package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/support/engineHelpers.js +1 -1
- package/views/2d/support/screenshotUtils.js +5 -0
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
- package/views/3d/analysis/Dimension/DimensionTool.js +1 -1
- package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/Dimension/settings.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightToolConfiguration.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/Slice/SliceVisualization.js +1 -1
- package/views/3d/analysis/Slice/settings.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/interactive/editingTools/lineGraphicVisualElementUtils.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveXYAxisManipulation.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveXYDiscManipulation.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveZManipulation.js +1 -1
- package/views/3d/interactive/editingTools/originGraphicVisualElementUtils.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/settings.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/TileTexture.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +12 -13
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBackedBuffer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
- package/views/3d/webgl-engine/lib/glUtil3D.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/WaterTextureRepository.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/statistics/RendererPerformanceInfo.js +1 -1
- package/views/MapView.js +1 -1
- package/views/Theme.js +5 -0
- package/views/View.js +1 -1
- package/views/interactive/SegmentLabels.js +1 -1
- package/views/support/colorUtils.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
- package/widgets/Attachments.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
- package/widgets/ElevationProfile/support/InputRepresentation3D.js +1 -1
- package/widgets/ElevationProfile/support/chartUtils.js +1 -1
- package/widgets/Feature/FeatureMedia/chartCommon.js +1 -1
- package/widgets/Feature/FeatureMedia.js +1 -1
- package/widgets/support/chartUtils.js +1 -1
- package/widgets/support/chartUtilsAm5.js +1 -1
- package/assets/esri/core/workers/chunks/05f3374114bce72d3560.js +0 -1
- package/assets/esri/core/workers/chunks/10028df973ef7f9531c8.js +0 -1
- package/assets/esri/core/workers/chunks/1cbb03eec9dc23ef043b.js +0 -1
- package/assets/esri/core/workers/chunks/289061552a2a64bebd76.js +0 -1
- package/assets/esri/core/workers/chunks/308eeeaec591b4eea1de.js +0 -1
- package/assets/esri/core/workers/chunks/3155c750fc5a4e04a785.js +0 -1
- package/assets/esri/core/workers/chunks/346f67995b327bca8ee0.js +0 -1
- package/assets/esri/core/workers/chunks/3736e17dd6461f74cfaf.js +0 -1
- package/assets/esri/core/workers/chunks/37e60f9ca86f9d4bf4ea.js +0 -1
- package/assets/esri/core/workers/chunks/3a0b45ecc48e23a3a5d5.js +0 -1
- package/assets/esri/core/workers/chunks/417377c8e76944f428a7.js +0 -1
- package/assets/esri/core/workers/chunks/498dca81073e1fb477b9.js +0 -1
- package/assets/esri/core/workers/chunks/536962375ce4f1394481.js +0 -1
- package/assets/esri/core/workers/chunks/64bb4093c019a02d5309.js +0 -1
- package/assets/esri/core/workers/chunks/69de4733173ee2dee6e1.js +0 -1
- package/assets/esri/core/workers/chunks/6dcffe6683a798a42c78.js +0 -1
- package/assets/esri/core/workers/chunks/7a898d167029ee11a680.js +0 -1
- package/assets/esri/core/workers/chunks/7a973d70e6bc42d804ee.js +0 -1
- package/assets/esri/core/workers/chunks/7d9d2629af373c84624f.js +0 -1
- package/assets/esri/core/workers/chunks/885cb0da78e6853b23a4.js +0 -1
- package/assets/esri/core/workers/chunks/8e28862296972e9e6f82.js +0 -1
- package/assets/esri/core/workers/chunks/928431e1c449c6054547.js +0 -1
- package/assets/esri/core/workers/chunks/afdf30439d71a7cc19ae.js +0 -1
- package/assets/esri/core/workers/chunks/b1fa1571fd98d3b8dffe.js +0 -1
- package/assets/esri/core/workers/chunks/b20167d9163d0ee74b65.js +0 -1
- package/assets/esri/core/workers/chunks/b2a0e3e1dfccda7ed12e.js +0 -1
- package/assets/esri/core/workers/chunks/c09db831248054600e16.js +0 -1
- package/assets/esri/core/workers/chunks/dcccc9760998271254b5.js +0 -1
- package/assets/esri/core/workers/chunks/ddea45acae89759e57fa.js +0 -1
- package/assets/esri/core/workers/chunks/e039108eb3a592f6d8e3.js +0 -1
- package/assets/esri/core/workers/chunks/e70314ac10cc1f8f9f86.js +0 -1
- package/assets/esri/core/workers/chunks/f2d399b394a1a9156214.js +0 -1
- package/assets/esri/core/workers/chunks/f74d4e1eecec06f84ee2.js +0 -1
- package/assets/esri/core/workers/chunks/fb7eff7f76386f81d57b.js +0 -1
- package/assets/esri/core/workers/chunks/fe277d33b5b8a11c76df.js +0 -1
- package/core/analysisThemeUtils.js +0 -5
- package/views/support/createScreenshotPlan.js +0 -5
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import i from"../../../../analysis/LineOfSightAnalysisObserver.js";import a from"../../../../analysis/LineOfSightAnalysisTarget.js";import r from"../../../../core/Handles.js";import n from"../../../../core/Logger.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{watch as o,syncAndInitial as l,initial as u}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as h}from"../../../../core/support/UpdatingHandles.js";import{create as d,fromPoints as g}from"../../../../geometry/support/lineSegment.js";import{getGraphicEffectiveElevationInfo as _,getConvertedElevation as m}from"../../../../support/elevationInfoUtils.js";import v from"../../../../symbols/support/ElevationInfo.js";import{LineOfSightRayIntersector as b}from"./LineOfSightRayIntersector.js";import{LineOfSightToolConfiguration as y}from"./LineOfSightToolConfiguration.js";import{createSphereManipulator as f,createSphereManipulatorRenderObjects as T}from"./lineOfSightToolUtils.js";import{LaserlineVisualElement as M}from"../../interactive/visualElements/LaserlineVisualElement.js";import{IntersectorType as C}from"../../webgl-engine/lib/IntersectorInterfaces.js";import"../../../input/ViewEvents.js";import{AnalysisToolBase as w}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as L}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as k}from"../../../interactive/interfaces.js";import{createScreenPointFromEvent as V}from"../../../support/screenUtils.js";import{MouseButton as O}from"../../../input/IViewEvents.js";var S;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(S||(S={}));let H=class extends w{constructor(e){super(e),this.removeIncompleteOnCancel=!1,this.configuration=new y,this.analysisViewData=null,this._latestPointerMovePointerType=null,this._laserlineVisualElement=null,this._grabbedManipulator=null,this._analysisHandles=new r,this._updatingHandles=new h,this._manipulatorHandles=new r,this._targetTrackerManipulator=null}initialize(){this._intersector=new b({view:this.view}),this.addHandles(o((()=>this.state),(e=>{e===S.Created&&this.finishToolCreation()}),l)),this._observerManipulator=this._createObserverManipulator(),this.addHandles([this._updatingHandles.add((()=>({...this.configuration.observer})),(()=>this._updateObserverManipulatorStyle())),this._updatingHandles.add((()=>this.analysisViewData?.elevationAlignedObserver),(e=>this._onObserverLocationChange(e)),u),this._updatingHandles.add((()=>({...this.configuration.laserLine})),(()=>this._createVisualElements()),u),this._updatingHandles.add((()=>this._laserLineRendererDependencies()),(e=>this._updateLaserLineRenderer(e))),this._connectComputations(),this._updatingHandles.addWhen((()=>!this._shouldRenderTracker),(()=>this._clearCursorTracker()),u)])}destroy(){this._updatingHandles=s(this._updatingHandles),this._manipulatorHandles=s(this._manipulatorHandles),this._analysisHandles=s(this._analysisHandles),this._observerManipulator=null,this._clearCursorTracker(),this._removeVisualElements(),this._intersector=null,this._set("analysis",null)}get state(){return this.active?this.hasGrabbedManipulators?S.Created:S.Creating:null!=this.analysis.observer&&null!=this.analysis.observer.position?S.Created:S.Ready}get cursor(){return this.active&&this._showTracker?"crosshair":null}get updating(){return null!=this.analysisViewData&&this.analysisViewData.updating||this._updatingHandles.updating}get _showTracker(){return this.active&&"mouse"===this._latestPointerMovePointerType}get _shouldRenderTracker(){return this._showTracker&&null!=this.analysis.observer&&null!=this.analysis.observer.position&&!this.hasGrabbedManipulators}continue(){this.view.activeTool=this}stop(){this.view.activeTool=null}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"key-down":this._keyDownHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickHandler(e)}onShow(){}onHide(){}onDeactivate(){this._clearCursorTracker()}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this.analysisViewData.computations),(e=>this._onComputationsCollectionChange(e)),{initial:!0,final:!0})}_onComputationsCollectionChange({added:e,removed:t}){for(const i of t)this._disconnectComputation(i);for(const i of e)this._connectComputation(i)}_connectComputation(e){if(this.destroyed)return void n.getLogger(this).warn("Attempting to connect an analysis to a destroyed LineOfSight tool. Ignoring.");const t=this._analysisHandles;if(t.has(e))return;const i=this._createTargetManipulator(e.target);null==this._targetTrackerManipulator&&i.metadata.target===this.analysisViewData.cursorTarget&&(this._targetTrackerManipulator=i,this._targetTrackerManipulator.available=!1,this._targetTrackerManipulator.interactive=!1,this._updateLaserLineRenderer()),t.add([this._updatingHandles.add((()=>this._getLineOfSightManipulatorStateDependencies(e)),(()=>this._updateManipulatorState(i,e)),u),this._updatingHandles.add((()=>e.elevationAlignedTargetLocation),(e=>this._onTargetLocationChange(e,i)),u)],e)}_disconnectComputation(e){if(this.destroyed)return void n.getLogger(this).warn("Attempting to disconnect an analysis from a destroyed LineOfSight tool. Ignoring.");this._analysisHandles.remove(e);const t=this._getTargetManipulator(e.target);null!=t&&(this.manipulators.remove(t),this._manipulatorHandles.remove(t),null!=this._targetTrackerManipulator&&this._targetTrackerManipulator===t&&(this._targetTrackerManipulator=null))}_clearCursorTracker(){this.analysisViewData.cursorTarget=s(this.analysisViewData.cursorTarget)}_createManipulator(e,t,i){const a=f(this.view,e);return a.metadata=i,this._manipulatorHandles.add([t(a),a.events.on("grab-changed",(e=>this._manipulatorGrabChanged(a,e))),a.events.on("immediate-click",(e=>this._manipulatorClick(a,e)))],a),this.manipulators.add(a),a}_createTargetManipulator(e){const t=this.configuration,i={size:t.target.size,customColor1:t.target.visibleColor,customColor2:t.target.occludedColor,customColor3:t.target.undefinedColor,visible:!0},a={target:e,type:"target"},r=this._createManipulator(i,(e=>this._createTargetManipulatorDragPipeline(e)),a);return null!=e.position?r.elevationAlignedLocation=e.position:r.available=!1,r}_getTargetManipulator(e){let t=null;return this.manipulators.forEach((i=>{const a=i.manipulator;null==t&&"target"===a.metadata.type&&a.metadata.target===e&&(t=a)})),t}_createObserverManipulator(){const e=this.configuration,t={size:e.observer.size,color:e.observer.color,visible:!0};return this._createManipulator(t,(e=>this._createObserverManipulatorDragPipeline(e)),{type:"observer",intersection:null})}_updateObserverManipulatorStyle(){const e=this._observerManipulator,t=this.configuration.observer,i={size:t.size,color:t.color,visible:e.available};e.renderObjects=T(i)}_screenToIntersection(){return e=>{const t=this._intersector.getScreenPointIntersection(e.screenEnd);return null==t?null:{...e,intersection:t}}}_createTargetManipulatorDragPipeline(e){return L(e,((t,i,a)=>{i.next(this._screenToIntersection()).next(this._updateTargetDragStep(e)).next((()=>this._updateLaserLineRenderer())),a.next(this._cancelTargetDragStep(e.metadata.target)).next((()=>this._updateLaserLineRenderer()))}))}_createObserverManipulatorDragPipeline(e){return L(e,((e,t,i)=>{t.next(this._screenToIntersection()).next(this._updateObserverDragStep()).next((()=>this._updateLaserLineRenderer())),i.next(this._cancelObserverDragStep()).next((()=>this._updateLaserLineRenderer()))}))}_updateObserverDragStep(){return e=>(null!=e.intersection.mapPoint?(null==this.analysis.observer&&(this.analysis.observer=new i),this._updateFromIntersection(this.analysis.observer,e.intersection)):this.analysis.observer=null,e)}_cancelObserverDragStep(){const e=null!=this.analysis.observer&&null!=this.analysis.observer.position?this.analysis.observer.clone():null;return t=>(this.analysis.observer=e,t)}_updateTargetDragStep(e){return t=>{this._updateFromIntersection(e.metadata.target,t.intersection);const i=t.intersection.mapPoint;return null!=i&&(e.elevationAlignedLocation=i),t}}_cancelTargetDragStep(e){const t=e.position?.clone();return i=>(e.position=t,i)}_manipulatorGrabChanged(e,t){switch(t.action){case"start":this._grabbedManipulator=e;break;case"end":this._grabbedManipulator===e&&(this._grabbedManipulator=null)}}_updateManipulatorState(e,t){const{isValid:i,isTargetVisible:a}=t.computationResult;e.state=i?a?k.Custom1:k.Custom2:k.Custom3}_getLineOfSightManipulatorStateDependencies(e){const{isValid:t,isTargetVisible:i}=e.computationResult;return{isValid:t,isTargetVisible:i}}_laserLineRendererDependencies(){return{laserlineVisualElement:this._laserlineVisualElement,grabbedManipulator:this._grabbedManipulator,shouldRenderTracker:this._shouldRenderTracker,observerPosition:null!=this.analysis.observer?this.analysis.observer.position:null,visible:this.visible}}_updateLaserLineRenderer(e=this._laserLineRendererDependencies()){const{laserlineVisualElement:t,grabbedManipulator:i,shouldRenderTracker:a,observerPosition:r,visible:n}=e;if(null==t)return;const s=null!=i?i:a&&null!=r?this._targetTrackerManipulator:null;this.configuration.laserLine.enabled&&null!=s&&n?(t.visible=!0,t.heightManifoldTarget=s.renderLocation,s!==this._observerManipulator?t.lineVerticalPlaneSegment=g(this._observerManipulator.renderLocation,s.renderLocation,D):t.lineVerticalPlaneSegment=null):(t.visible=!1,t.heightManifoldTarget=null,t.lineVerticalPlaneSegment=null)}_createVisualElements(){const e=this.configuration.laserLine;this._removeVisualElements(),this._laserlineVisualElement=new M({view:this.view,attached:!0,visible:this.visible,style:{glowColor:t.toUnitRGB(e.glowColor),glowWidth:e.glowWidth,innerColor:t.toUnitRGB(e.innerColor),innerWidth:e.innerWidth,globalAlpha:e.globalAlpha},isDecoration:!0})}_removeVisualElements(){null!=this._laserlineVisualElement&&(this._laserlineVisualElement.destroy(),this._laserlineVisualElement=null)}_onObserverLocationChange(e){null!=e?(this._observerManipulator.metadata.intersection=null,this._observerManipulator.available=!0,this._observerManipulator.elevationAlignedLocation=e):this._observerManipulator.available=!1}_onTargetLocationChange(e,t){null!=e?(t.elevationAlignedLocation=e,t!==this._targetTrackerManipulator&&(t.available=!0)):t.available=!1}_addPointFromClickEvent(e){const t=this._intersector.getScreenPointIntersection(e);if(null!=t&&null!=t.mapPoint)if(null!=this.analysis.observer&&null!=this.analysis.observer.position){this._clearCursorTracker();const e=new a;this._updateFromIntersection(e,t),this.analysis.targets.add(e)}else{const e=new i;this._updateFromIntersection(e,t),this.analysis.observer=e}}_clickHandler(e){this.active&&e.button!==O.Right&&(this._addPointFromClickEvent(V(e)),e.stopPropagation())}_doubleClickHandler(e){this.active&&e.button!==O.Right&&(this.stop(),e.stopPropagation())}_keyDownHandler(e){this.active&&"Escape"===e.key&&(this.stop(),e.stopPropagation())}_pointerMoveHandler(e){if(this.hasGrabbedManipulators)return;if(this._latestPointerMovePointerType=e.pointerType,this._updateLaserLineRenderer(),!this._showTracker||null==this.analysis.observer||null==this.analysis.observer.position)return;const t=V(e),i=this._intersector.getScreenPointIntersection(t);null!=i&&null!=i.mapPoint&&(null==this.analysisViewData.cursorTarget&&(this.analysisViewData.cursorTarget=new a),this._updateFromIntersection(this.analysisViewData.cursorTarget,i),this._updateLaserLineRenderer())}_updateFromIntersection(e,t){if(null==t.mapPoint)return e.position=null,e.elevationInfo=null,void(e.feature=null);switch(t.type){case C.OBJECT:if(null!=t.graphic){const i=t.graphic,a=_(i);"on-the-ground"===a.mode&&(a.mode="relative-to-ground",a.offset=0),e.elevationInfo=new v(a),e.feature=i}else e.elevationInfo=null,e.feature=null;break;case C.TERRAIN:case C.I3S:e.elevationInfo=new v({mode:"on-the-ground"}),e.feature=null;break;default:e.elevationInfo=null,e.feature=null}const i=t.mapPoint.clone();i.z=m(this.view,i,{mode:"absolute-height",offset:0},e.elevationInfo),e.position=i}_manipulatorClick(e,t){if("observer"===e.metadata.type||e.grabbing||e.dragging||t.button!==O.Right||this.analysis.targets.length<=1)return;const{target:i}=e.metadata;this.analysis.targets.remove(i),t.stopPropagation()}get testInfo(){return{laserLineVisualElement:this._laserlineVisualElement,getTargetManipulator:e=>this._getTargetManipulator(e)}}};e([c({constructOnly:!0})],H.prototype,"view",void 0),e([c({constructOnly:!0})],H.prototype,"analysis",void 0),e([c({readOnly:!0})],H.prototype,"state",null),e([c({readOnly:!0})],H.prototype,"cursor",null),e([c()],H.prototype,"removeIncompleteOnCancel",void 0),e([c({readOnly:!0})],H.prototype,"updating",null),e([c({type:y})],H.prototype,"configuration",void 0),e([c({constructOnly:!0})],H.prototype,"analysisViewData",void 0),e([c({readOnly:!0})],H.prototype,"_showTracker",null),e([c()],H.prototype,"_latestPointerMovePointerType",void 0),e([c()],H.prototype,"_shouldRenderTracker",null),e([c()],H.prototype,"_laserlineVisualElement",void 0),e([c()],H.prototype,"_grabbedManipulator",void 0),H=e([p("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTool")],H);const D=d();export{H as LineOfSightTool};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import i from"../../../../analysis/LineOfSightAnalysisObserver.js";import a from"../../../../analysis/LineOfSightAnalysisTarget.js";import r from"../../../../core/Handles.js";import n from"../../../../core/Logger.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{watch as o,syncAndInitial as l,initial as u}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as h}from"../../../../core/support/UpdatingHandles.js";import{create as d,fromPoints as g}from"../../../../geometry/support/lineSegment.js";import{getGraphicEffectiveElevationInfo as _,getConvertedElevation as m}from"../../../../support/elevationInfoUtils.js";import v from"../../../../symbols/support/ElevationInfo.js";import{LineOfSightRayIntersector as b}from"./LineOfSightRayIntersector.js";import{LineOfSightToolConfiguration as y}from"./LineOfSightToolConfiguration.js";import{createSphereManipulator as f,createSphereManipulatorRenderObjects as T}from"./lineOfSightToolUtils.js";import{LaserlineVisualElement as M}from"../../interactive/visualElements/LaserlineVisualElement.js";import{IntersectorType as w}from"../../webgl-engine/lib/IntersectorInterfaces.js";import"../../../input/ViewEvents.js";import{AnalysisToolBase as C}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as L}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as k}from"../../../interactive/interfaces.js";import{createScreenPointFromEvent as V}from"../../../support/screenUtils.js";import{MouseButton as O}from"../../../input/IViewEvents.js";var S;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(S||(S={}));let H=class extends C{constructor(e){super(e),this.removeIncompleteOnCancel=!1,this.analysisViewData=null,this._latestPointerMovePointerType=null,this._laserlineVisualElement=null,this._grabbedManipulator=null,this._analysisHandles=new r,this._updatingHandles=new h,this._manipulatorHandles=new r,this._targetTrackerManipulator=null}initialize(){this._intersector=new b({view:this.view}),this.addHandles(o((()=>this.state),(e=>{e===S.Created&&this.finishToolCreation()}),l)),this._observerManipulator=this._createObserverManipulator(),this.addHandles([this._updatingHandles.add((()=>({...this.configuration.observer})),(()=>this._updateObserverManipulatorStyle())),this._updatingHandles.add((()=>this.analysisViewData?.elevationAlignedObserver),(e=>this._onObserverLocationChange(e)),u),this._updatingHandles.add((()=>({...this.configuration.laserLine})),(()=>this._createVisualElements()),u),this._updatingHandles.add((()=>this._laserLineRendererDependencies()),(e=>this._updateLaserLineRenderer(e))),this._connectComputations(),this._updatingHandles.addWhen((()=>!this._shouldRenderTracker),(()=>this._clearCursorTracker()),u)])}destroy(){this._updatingHandles=s(this._updatingHandles),this._manipulatorHandles=s(this._manipulatorHandles),this._analysisHandles=s(this._analysisHandles),this._observerManipulator=null,this._clearCursorTracker(),this._removeVisualElements(),this._intersector=null,this._set("analysis",null)}get state(){return this.active?this.hasGrabbedManipulators?S.Created:S.Creating:null!=this.analysis.observer&&null!=this.analysis.observer.position?S.Created:S.Ready}get cursor(){return this.active&&this._showTracker?"crosshair":null}get updating(){return null!=this.analysisViewData&&this.analysisViewData.updating||this._updatingHandles.updating}get configuration(){return new y({theme:this.view.effectiveTheme})}get _showTracker(){return this.active&&"mouse"===this._latestPointerMovePointerType}get _shouldRenderTracker(){return this._showTracker&&null!=this.analysis.observer&&null!=this.analysis.observer.position&&!this.hasGrabbedManipulators}continue(){this.view.activeTool=this}stop(){this.view.activeTool=null}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"key-down":this._keyDownHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickHandler(e)}onShow(){}onHide(){}onDeactivate(){this._clearCursorTracker()}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this.analysisViewData.computations),(e=>this._onComputationsCollectionChange(e)),{initial:!0,final:!0})}_onComputationsCollectionChange({added:e,removed:t}){for(const i of t)this._disconnectComputation(i);for(const i of e)this._connectComputation(i)}_connectComputation(e){if(this.destroyed)return void n.getLogger(this).warn("Attempting to connect an analysis to a destroyed LineOfSight tool. Ignoring.");const t=this._analysisHandles;if(t.has(e))return;const i=this._createTargetManipulator(e.target);null==this._targetTrackerManipulator&&i.metadata.target===this.analysisViewData.cursorTarget&&(this._targetTrackerManipulator=i,this._targetTrackerManipulator.available=!1,this._targetTrackerManipulator.interactive=!1,this._updateLaserLineRenderer()),t.add([this._updatingHandles.add((()=>this._getLineOfSightManipulatorStateDependencies(e)),(()=>this._updateManipulatorState(i,e)),u),this._updatingHandles.add((()=>e.elevationAlignedTargetLocation),(e=>this._onTargetLocationChange(e,i)),u)],e)}_disconnectComputation(e){if(this.destroyed)return void n.getLogger(this).warn("Attempting to disconnect an analysis from a destroyed LineOfSight tool. Ignoring.");this._analysisHandles.remove(e);const t=this._getTargetManipulator(e.target);null!=t&&(this.manipulators.remove(t),this._manipulatorHandles.remove(t),null!=this._targetTrackerManipulator&&this._targetTrackerManipulator===t&&(this._targetTrackerManipulator=null))}_clearCursorTracker(){this.analysisViewData.cursorTarget=s(this.analysisViewData.cursorTarget)}_createManipulator(e,t,i){const a=f(this.view,e);return a.metadata=i,this._manipulatorHandles.add([t(a),a.events.on("grab-changed",(e=>this._manipulatorGrabChanged(a,e))),a.events.on("immediate-click",(e=>this._manipulatorClick(a,e)))],a),this.manipulators.add(a),a}_createTargetManipulator(e){const t=this.configuration,i={size:t.target.size,customColor1:t.target.visibleColor,customColor2:t.target.occludedColor,customColor3:t.target.undefinedColor,visible:!0},a={target:e,type:"target"},r=this._createManipulator(i,(e=>this._createTargetManipulatorDragPipeline(e)),a);return null!=e.position?r.elevationAlignedLocation=e.position:r.available=!1,r}_getTargetManipulator(e){let t=null;return this.manipulators.forEach((i=>{const a=i.manipulator;null==t&&"target"===a.metadata.type&&a.metadata.target===e&&(t=a)})),t}_createObserverManipulator(){const e=this.configuration,t={size:e.observer.size,color:e.observer.color,visible:!0};return this._createManipulator(t,(e=>this._createObserverManipulatorDragPipeline(e)),{type:"observer",intersection:null})}_updateObserverManipulatorStyle(){const e=this._observerManipulator,t=this.configuration.observer,i={size:t.size,color:t.color,visible:e.available};e.renderObjects=T(i)}_screenToIntersection(){return e=>{const t=this._intersector.getScreenPointIntersection(e.screenEnd);return null==t?null:{...e,intersection:t}}}_createTargetManipulatorDragPipeline(e){return L(e,((t,i,a)=>{i.next(this._screenToIntersection()).next(this._updateTargetDragStep(e)).next((()=>this._updateLaserLineRenderer())),a.next(this._cancelTargetDragStep(e.metadata.target)).next((()=>this._updateLaserLineRenderer()))}))}_createObserverManipulatorDragPipeline(e){return L(e,((e,t,i)=>{t.next(this._screenToIntersection()).next(this._updateObserverDragStep()).next((()=>this._updateLaserLineRenderer())),i.next(this._cancelObserverDragStep()).next((()=>this._updateLaserLineRenderer()))}))}_updateObserverDragStep(){return e=>(null!=e.intersection.mapPoint?(null==this.analysis.observer&&(this.analysis.observer=new i),this._updateFromIntersection(this.analysis.observer,e.intersection)):this.analysis.observer=null,e)}_cancelObserverDragStep(){const e=null!=this.analysis.observer&&null!=this.analysis.observer.position?this.analysis.observer.clone():null;return t=>(this.analysis.observer=e,t)}_updateTargetDragStep(e){return t=>{this._updateFromIntersection(e.metadata.target,t.intersection);const i=t.intersection.mapPoint;return null!=i&&(e.elevationAlignedLocation=i),t}}_cancelTargetDragStep(e){const t=e.position?.clone();return i=>(e.position=t,i)}_manipulatorGrabChanged(e,t){switch(t.action){case"start":this._grabbedManipulator=e;break;case"end":this._grabbedManipulator===e&&(this._grabbedManipulator=null)}}_updateManipulatorState(e,t){const{isValid:i,isTargetVisible:a}=t.computationResult;e.state=i?a?k.Custom1:k.Custom2:k.Custom3}_getLineOfSightManipulatorStateDependencies(e){const{isValid:t,isTargetVisible:i}=e.computationResult;return{isValid:t,isTargetVisible:i}}_laserLineRendererDependencies(){return{laserlineVisualElement:this._laserlineVisualElement,grabbedManipulator:this._grabbedManipulator,shouldRenderTracker:this._shouldRenderTracker,observerPosition:null!=this.analysis.observer?this.analysis.observer.position:null,visible:this.visible}}_updateLaserLineRenderer(e=this._laserLineRendererDependencies()){const{laserlineVisualElement:t,grabbedManipulator:i,shouldRenderTracker:a,observerPosition:r,visible:n}=e;if(null==t)return;const s=null!=i?i:a&&null!=r?this._targetTrackerManipulator:null;this.configuration.laserLine.enabled&&null!=s&&n?(t.visible=!0,t.heightManifoldTarget=s.renderLocation,s!==this._observerManipulator?t.lineVerticalPlaneSegment=g(this._observerManipulator.renderLocation,s.renderLocation,D):t.lineVerticalPlaneSegment=null):(t.visible=!1,t.heightManifoldTarget=null,t.lineVerticalPlaneSegment=null)}_createVisualElements(){const e=this.configuration.laserLine;this._removeVisualElements(),this._laserlineVisualElement=new M({view:this.view,attached:!0,visible:this.visible,style:{glowColor:t.toUnitRGB(e.glowColor),glowWidth:e.glowWidth,innerColor:t.toUnitRGB(e.innerColor),innerWidth:e.innerWidth,globalAlpha:e.globalAlpha},isDecoration:!0})}_removeVisualElements(){null!=this._laserlineVisualElement&&(this._laserlineVisualElement.destroy(),this._laserlineVisualElement=null)}_onObserverLocationChange(e){null!=e?(this._observerManipulator.metadata.intersection=null,this._observerManipulator.available=!0,this._observerManipulator.elevationAlignedLocation=e):this._observerManipulator.available=!1}_onTargetLocationChange(e,t){null!=e?(t.elevationAlignedLocation=e,t!==this._targetTrackerManipulator&&(t.available=!0)):t.available=!1}_addPointFromClickEvent(e){const t=this._intersector.getScreenPointIntersection(e);if(null!=t&&null!=t.mapPoint)if(null!=this.analysis.observer&&null!=this.analysis.observer.position){this._clearCursorTracker();const e=new a;this._updateFromIntersection(e,t),this.analysis.targets.add(e)}else{const e=new i;this._updateFromIntersection(e,t),this.analysis.observer=e}}_clickHandler(e){this.active&&e.button!==O.Right&&(this._addPointFromClickEvent(V(e)),e.stopPropagation())}_doubleClickHandler(e){this.active&&e.button!==O.Right&&(this.stop(),e.stopPropagation())}_keyDownHandler(e){this.active&&"Escape"===e.key&&(this.stop(),e.stopPropagation())}_pointerMoveHandler(e){if(this.hasGrabbedManipulators)return;if(this._latestPointerMovePointerType=e.pointerType,this._updateLaserLineRenderer(),!this._showTracker||null==this.analysis.observer||null==this.analysis.observer.position)return;const t=V(e),i=this._intersector.getScreenPointIntersection(t);null!=i&&null!=i.mapPoint&&(null==this.analysisViewData.cursorTarget&&(this.analysisViewData.cursorTarget=new a),this._updateFromIntersection(this.analysisViewData.cursorTarget,i),this._updateLaserLineRenderer())}_updateFromIntersection(e,t){if(null==t.mapPoint)return e.position=null,e.elevationInfo=null,void(e.feature=null);switch(t.type){case w.OBJECT:if(null!=t.graphic){const i=t.graphic,a=_(i);"on-the-ground"===a.mode&&(a.mode="relative-to-ground",a.offset=0),e.elevationInfo=new v(a),e.feature=i}else e.elevationInfo=null,e.feature=null;break;case w.TERRAIN:case w.I3S:e.elevationInfo=new v({mode:"on-the-ground"}),e.feature=null;break;default:e.elevationInfo=null,e.feature=null}const i=t.mapPoint.clone();i.z=m(this.view,i,{mode:"absolute-height",offset:0},e.elevationInfo),e.position=i}_manipulatorClick(e,t){if("observer"===e.metadata.type||e.grabbing||e.dragging||t.button!==O.Right||this.analysis.targets.length<=1)return;const{target:i}=e.metadata;this.analysis.targets.remove(i),t.stopPropagation()}get testInfo(){return{laserLineVisualElement:this._laserlineVisualElement,getTargetManipulator:e=>this._getTargetManipulator(e)}}};e([c({constructOnly:!0})],H.prototype,"view",void 0),e([c({constructOnly:!0})],H.prototype,"analysis",void 0),e([c({readOnly:!0})],H.prototype,"state",null),e([c({readOnly:!0})],H.prototype,"cursor",null),e([c()],H.prototype,"removeIncompleteOnCancel",void 0),e([c({readOnly:!0})],H.prototype,"updating",null),e([c({type:y})],H.prototype,"configuration",null),e([c({constructOnly:!0})],H.prototype,"analysisViewData",void 0),e([c({readOnly:!0})],H.prototype,"_showTracker",null),e([c()],H.prototype,"_latestPointerMovePointerType",void 0),e([c()],H.prototype,"_shouldRenderTracker",null),e([c()],H.prototype,"_laserlineVisualElement",void 0),e([c()],H.prototype,"_grabbedManipulator",void 0),H=e([p("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTool")],H);const D=d();export{H as LineOfSightTool};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import o from"../../../../Color.js";import t from"../../../../core/Accessor.js";import{getContrast as r,multiplyOpacity as i}from"../../../../core/colorUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";let p=class extends t{constructor(e){super(e),this.enabled=!0,this.glowWidth=8,this.innerWidth=.75}get glowColor(){return this.theme.accentColor}get innerColor(){return r(this.theme.accentColor)}get globalAlpha(){return.75*this.theme.accentColor.a}};e([s({type:Boolean})],p.prototype,"enabled",void 0),e([s({type:o})],p.prototype,"glowColor",null),e([s({type:Number})],p.prototype,"glowWidth",void 0),e([s({type:o})],p.prototype,"innerColor",null),e([s({type:Number})],p.prototype,"innerWidth",void 0),e([s({type:Number})],p.prototype,"globalAlpha",null),e([s({constructOnly:!0})],p.prototype,"theme",void 0),p=e([n("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightLaserLineConfiguration")],p);let l=class extends t{constructor(e){super(e),this.size=.5}get color(){return i(this.theme.accentColor,.75)}set color(e){this._overrideIfSome("color",e)}};e([s({type:Number})],l.prototype,"size",void 0),e([s({type:o})],l.prototype,"color",null),e([s({constructOnly:!0})],l.prototype,"theme",void 0),l=e([n("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightObserverConfiguration")],l);let c=class extends t{constructor(e){super(e),this.size=.5,this.visibleColor=new o([3,252,111,.75]),this.occludedColor=new o([252,3,69,.75]),this.undefinedColor=new o([127,127,127,.75])}};e([s({type:Number})],c.prototype,"size",void 0),e([s({type:o})],c.prototype,"visibleColor",void 0),e([s({type:o})],c.prototype,"occludedColor",void 0),e([s({type:o})],c.prototype,"undefinedColor",void 0),c=e([n("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTargetConfiguration")],c);class d extends t{constructor(e){super(e),this.innerWidth=2,this.outerWidth=8,this.visibleInnerColor=new o([3,252,111,1]),this.visibleOuterColor=new o([3,252,111,.15]),this.occludedInnerColor=new o([252,3,69,1]),this.occludedOuterColor=new o([252,3,69,.1]),this.undefinedInnerColor=new o([255,255,255,1]),this.undefinedOuterColor=new o([127,127,127,.2])}}e([s({type:Number})],d.prototype,"innerWidth",void 0),e([s({type:Number})],d.prototype,"outerWidth",void 0),e([s({type:o})],d.prototype,"visibleInnerColor",void 0),e([s({type:o})],d.prototype,"visibleOuterColor",void 0),e([s({type:o})],d.prototype,"occludedInnerColor",void 0),e([s({type:o})],d.prototype,"occludedOuterColor",void 0),e([s({type:o})],d.prototype,"undefinedInnerColor",void 0),e([s({type:o})],d.prototype,"undefinedOuterColor",void 0);let u=class extends t{constructor(e){super(e),this.target=new c,this.lineOfSight=new d}get laserLine(){return new p({theme:this.theme})}get observer(){return new l({theme:this.theme})}};e([s({type:p})],u.prototype,"laserLine",null),e([s({type:l})],u.prototype,"observer",null),e([s({type:c})],u.prototype,"target",void 0),e([s({type:d})],u.prototype,"lineOfSight",void 0),e([s({constructOnly:!0})],u.prototype,"theme",void 0),u=e([n("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightToolConfiguration")],u);export{u as LineOfSightToolConfiguration};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../analysis/SlicePlane.js";import{clock as a}from"../../../../core/clock.js";import{releaseMaybe as s,destroyMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{watch as l,sync as o,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../../core/scheduling.js";import{createScreenPoint as u,screenPointObjectToArray as c,createScreenPointArray as d}from"../../../../core/screenUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as P,E as y,m}from"../../../../chunks/mat4.js";import{e as g,l as w,c as f,g as M,a as T,m as D,n as V,s as b}from"../../../../chunks/vec3.js";import{a as k,c as E}from"../../../../chunks/vec3f64.js";import{Z as S}from"../../../../chunks/vec4f64.js";import{a as H,c as x,n as R,f as I}from"../../../../chunks/boundedPlane.js";import{signedDistance as C,create as j,intersectRay as O,normal as z}from"../../../../geometry/support/plane.js";import{create as G}from"../../../../geometry/support/ray.js";import{sv3d as U,sm4d as A,sv2d as L}from"../../../../geometry/support/vectorStacks.js";import{settings as B}from"./settings.js";import{POINTER_MOVE_TIMER_MS as K,PLANE_PREVIEW_OUTLINE_WIDTH as F,forceVerticalModifier as N,forceHorizontalModifier as Z,PREVIEW_FADE_DOT_THRESHOLD as q,PREVIEW_FADE_DURATION_SECONDS as W,INITIAL_DEPTH_OFFSET_FRAC as J}from"./sliceToolConfig.js";import{createShiftManipulator as Q,OffsetMode as X,createRotateManipulator as Y,createResizeManipulator as $,createGridVisualElement as tt,createOutlineVisualElement as et,planeToShape as it,createRotatePlane as at,RotationAxis as st,resizePlane as nt,calculatePlaneHalfSize as rt,SliceOrientation as lt,createPlane as ot,DidPointerMoveRecentlyFlag as ht,calculateBoundedPlaneTranslateRotate as pt,updateShiftRestartHandle as ut,updateRotateHeadingHandle as ct,updateRotateTiltHandle as dt,updateResizeHandle as _t,createShiftPlane as vt}from"./sliceToolUtils.js";import{getRotateHeadingTexture as Pt,getTiltRotateTexture as yt}from"./images/Factory.js";import{calculateInputRotationTransform as mt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as gt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as wt}from"../../support/geometryUtils/ray.js";import{newIntersector as ft}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Mt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Tt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Dt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as Vt}from"../../../support/screenUtils.js";var bt;let kt=bt=class extends Tt{constructor(t){super(t),this._clock=a,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._frameTask=null,this._pointerMoveTimerMs=K,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=H(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=u(),this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._intersector=ft(t.view.state.viewingMode),this._intersector.options.store=Mt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");const t=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result,e={accentColor:B.rotateManipulators.color,contrastColor:B.rotateManipulators.contrastColor,preMultiplyAlpha:t};this._rotateHeadingImage=Pt(this.view.toolViewManager.textures,e),this._rotateTiltImage=yt(this.view.toolViewManager.textures,e);const i=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(null!=this.analysisViewData.plane&&x(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=Q(this.view,{offsetMode:X.CENTER_ON_ARROW,calloutColor:B.callouts.color,color:B.shiftManipulator.color,outlineColor:B.shiftManipulator.outlineColor}),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(t=>{this._onShiftGrab(t),i(this.shiftManipulator)})),this.addHandles(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=Y(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(t=>{this._onRotateHeadingGrab(t),i(this.rotateHeadingManipulator)})),this.addHandles(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=Y(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(t=>{this._onRotateTiltGrab(t),i(this.rotateTiltManipulator)})),this.addHandles(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((t,e)=>{const a=$(this.view,t,{color:B.resizeManipulators.color});return a.events.on("grab-changed",(t=>{this._onResizeGrab(t,e),i(a)})),this.addHandles(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=tt(this.view),this._previewPlaneOutlineVisualElement=et(this.view),this._previewPlaneOutlineVisualElement.width=F,this.addHandles(l((()=>[this.analysisViewData.plane,this.analysis.tiltEnabled]),(()=>this._updateManipulators()),o));const a=l((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),h);this.addHandles([a,l((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":null!=this._creatingPointerId?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this.removeHandles("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=null!=t&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return null!=this.inputState&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!St(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!St(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!St(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&null!=e&&"shift"===e.type){const i=Vt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(Vt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&null!=this.analysisViewData.plane){const e=Vt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),x(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const e=Vt(t),a=H();if(this._pickPlane(e,!1,this._activeKeyModifiers,a)){if("pointer-drag"===t.type){const i=this._calculatePickRay(e);this.inputState=Et(i,t.pointerId,a.origin,a)}return x(a,this._startPlane),this.analysis.shape=it(a,this.view,this.view.spatialReference,new i),!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(Vt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===N||t.key===Z)&&(this._activeKeyModifiers[t.key]=!0,null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==N&&t.key!==Z||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=this._calculatePickRay(t.screenPoint);x(this.analysisViewData.plane,this._startPlane),this.inputState=Et(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"shift"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(gt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=.001,a=Math.min((1-Math.abs(g(R(this.analysisViewData.plane),e.ray.direction)/w(e.ray.direction)))/i,1),s=-C(this._startPlane.plane,e.renderEnd),n=-C(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(null==this.analysisViewData.plane)return;const e=f(U.get(),this._startPlane.origin),i=f(U.get(),R(this._startPlane));M(i,i,-t.depth),T(i,i,e);const a=I(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,H());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=at(this.analysisViewData.plane,this.view.renderCoordsHelper,st.HEADING,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(gt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=at(this.analysisViewData.plane,this.view.renderCoordsHelper,st.TILT,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(gt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=z(t.rotatePlane),a=mt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(null==this.analysisViewData.plane)return;const e=P(A.get(),t.rotateAngle,t.rotateAxis);if(null==e)return;const i=D(U.get(),this._startPlane.basis1,e),a=D(U.get(),this._startPlane.basis2,e),s=I(this.analysisViewData.plane.origin,i,a,H());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const i=this._calculatePickRay(t.screenPoint),a=U.get();O(this.analysisViewData.plane.plane,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:k(a)})}_createResizeDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"resize"!==a.type||null==this.analysisViewData.plane)return;const s=x(this.analysisViewData.plane,H());e.next(gt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(null==this.analysisViewData.plane)return;const i=this._resizeHandles[t.activeHandleIdx],a=nt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,x(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(null==e)throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,null==t)return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=null!=i?i:H();if(i=null!=i?x(i,Ht):null,this._pickPlane(t,!0,e,a)){const t=q;let e=!1;null!=i&&(e=g(i.plane,a.plane)<t||g(V(U.get(),i.basis1),V(U.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}null!=this._previewPlane&&null==this._frameTask&&0===this._previewPlaneOpacity?this._frameTask=p({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*W),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):null==this._previewPlane&&null!=this._frameTask?this._removeFrameTask():null!=this._previewPlane&&this._updateManipulators()}_removeFrameTask(){this._frameTask=r(this._frameTask)}_calculatePickRay(t){const e=G(),i=c(t,xt);return wt(this.view.state.camera,i,e),V(e.direction,e.direction),e}_pickMinResult(t){const e=c(t,L.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=U.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(U.get()),l=this.view.state.camera;g(r,l.viewForward)>0&&M(r,r,-1);const o=rt(n,l),h=(e?1:-1)*o*J,p=M(U.get(),r,h);T(p,p,n);const u=this.analysis.tiltEnabled?lt.TILTED:lt.HORIZONTAL_OR_VERTICAL,c=i[N]?lt.VERTICAL:i[Z]?lt.HORIZONTAL:u;return ot(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=r(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=ht,this.rotateHeadingManipulator.state|=ht,this.rotateTiltManipulator.state|=ht,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~ht,this.rotateHeadingManipulator.state&=~ht,this.rotateTiltManipulator.state&=~ht}),this._pointerMoveTimerMs)}_updateManipulators(){if(bt.disableEngineLayers)return;let t,e=!1;if(null!=this.analysisViewData.plane)t=this.analysisViewData.plane,e=!1;else{if(null==this._previewPlane)return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=pt(t,A.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.attached=!0,this._previewPlaneGridVisualElement.attached=!0,this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),ut(this.shiftManipulator,i,t,this.view.state.camera),ct(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),dt(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>_t(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=b(U.get(),w(t.basis1),w(t.basis2),1),s=y(A.get(),a),n=m(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=e.toUnitRGBA(B.plane.outlineColor);t[3]*=this._previewPlaneOpacity;const i=e.toUnitRGBA(B.plane.color);i[3]*=this._previewPlaneOpacity,this._previewPlaneOutlineVisualElement.color=t,this._previewPlaneGridVisualElement.backgroundColor=i,this._previewPlaneGridVisualElement.gridColor=S}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function Et(t,e,i,a){const s=vt(i,R(a),t.direction,j()),n=E();return O(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function St(t){return"mouse"!==t.pointerType||0===t.button}kt.disableEngineLayers=!1,t([_()],kt.prototype,"_clock",void 0),t([_({constructOnly:!0})],kt.prototype,"view",void 0),t([_()],kt.prototype,"analysisViewData",void 0),t([_({readOnly:!0})],kt.prototype,"state",null),t([_({readOnly:!0})],kt.prototype,"cursor",null),t([_()],kt.prototype,"analysis",null),t([_()],kt.prototype,"removeIncompleteOnCancel",void 0),t([_({readOnly:!0})],kt.prototype,"layersMode",void 0),t([_({value:null})],kt.prototype,"inputState",null),t([_()],kt.prototype,"_isPlacingSlicePlane",null),t([_()],kt.prototype,"_creatingPointerId",null),kt=bt=t([v("esri.views.3d.analysis.Slice.SliceTool")],kt);const Ht=H(),xt=d(),Rt=kt;export{Rt as default};
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../analysis/SlicePlane.js";import{clock as a}from"../../../../core/clock.js";import{releaseMaybe as s,destroyMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{watch as l,sync as o,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../../core/scheduling.js";import{createScreenPoint as u,screenPointObjectToArray as c,createScreenPointArray as d}from"../../../../core/screenUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as P,E as y,m as g}from"../../../../chunks/mat4.js";import{e as m,l as w,c as f,g as M,a as T,m as D,n as V,s as b}from"../../../../chunks/vec3.js";import{a as k,c as E}from"../../../../chunks/vec3f64.js";import{Z as S}from"../../../../chunks/vec4f64.js";import{a as H,c as x,n as R,f as I}from"../../../../chunks/boundedPlane.js";import{signedDistance as C,create as j,intersectRay as O,normal as z}from"../../../../geometry/support/plane.js";import{create as G}from"../../../../geometry/support/ray.js";import{sv3d as U,sm4d as A,sv2d as L}from"../../../../geometry/support/vectorStacks.js";import{Settings as B}from"./settings.js";import{POINTER_MOVE_TIMER_MS as K,PLANE_PREVIEW_OUTLINE_WIDTH as F,forceVerticalModifier as N,forceHorizontalModifier as Z,PREVIEW_FADE_DOT_THRESHOLD as q,PREVIEW_FADE_DURATION_SECONDS as W,INITIAL_DEPTH_OFFSET_FRAC as J}from"./sliceToolConfig.js";import{createShiftManipulator as Q,OffsetMode as X,createRotateManipulator as Y,createResizeManipulator as $,createGridVisualElement as tt,createOutlineVisualElement as et,planeToShape as it,createRotatePlane as at,RotationAxis as st,resizePlane as nt,calculatePlaneHalfSize as rt,SliceOrientation as lt,createPlane as ot,DidPointerMoveRecentlyFlag as ht,calculateBoundedPlaneTranslateRotate as pt,updateShiftRestartHandle as ut,updateRotateHeadingHandle as ct,updateRotateTiltHandle as dt,updateResizeHandle as _t,createShiftPlane as vt}from"./sliceToolUtils.js";import{getRotateHeadingTexture as Pt,getTiltRotateTexture as yt}from"./images/Factory.js";import{calculateInputRotationTransform as gt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as mt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as wt}from"../../support/geometryUtils/ray.js";import{newIntersector as ft}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Mt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Tt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Dt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as Vt}from"../../../support/screenUtils.js";var bt;let kt=bt=class extends Tt{constructor(t){super(t),this._clock=a,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._frameTask=null,this._pointerMoveTimerMs=K,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=H(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=u(),this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._intersector=ft(t.view.state.viewingMode),this._intersector.options.store=Mt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");this._settings=new B(this.view.effectiveTheme);const t=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result,e={accentColor:this._settings.rotateManipulators.color,contrastColor:this._settings.rotateManipulators.contrastColor,preMultiplyAlpha:t};this._rotateHeadingImage=Pt(this.view.toolViewManager.textures,e),this._rotateTiltImage=yt(this.view.toolViewManager.textures,e);const i=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(null!=this.analysisViewData.plane&&x(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=Q(this.view,{offsetMode:X.CENTER_ON_ARROW,calloutColor:this._settings.callouts.color,color:this._settings.shiftManipulator.color,outlineColor:this._settings.shiftManipulator.outlineColor}),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(t=>{this._onShiftGrab(t),i(this.shiftManipulator)})),this.addHandles(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=Y(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(t=>{this._onRotateHeadingGrab(t),i(this.rotateHeadingManipulator)})),this.addHandles(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=Y(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(t=>{this._onRotateTiltGrab(t),i(this.rotateTiltManipulator)})),this.addHandles(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((t,e)=>{const a=$(this.view,t,{color:this._settings.resizeManipulators.color});return a.events.on("grab-changed",(t=>{this._onResizeGrab(t,e),i(a)})),this.addHandles(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=tt(this.view),this._previewPlaneOutlineVisualElement=et(this.view),this._previewPlaneOutlineVisualElement.width=F,this.addHandles(l((()=>[this.analysisViewData.plane,this.analysis.tiltEnabled]),(()=>this._updateManipulators()),o));const a=l((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),h);this.addHandles([a,l((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":null!=this._creatingPointerId?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this.removeHandles("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=null!=t&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return null!=this.inputState&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!St(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!St(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!St(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&null!=e&&"shift"===e.type){const i=Vt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(Vt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&null!=this.analysisViewData.plane){const e=Vt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),x(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const e=Vt(t),a=H();if(this._pickPlane(e,!1,this._activeKeyModifiers,a)){if("pointer-drag"===t.type){const i=this._calculatePickRay(e);this.inputState=Et(i,t.pointerId,a.origin,a)}return x(a,this._startPlane),this.analysis.shape=it(a,this.view,this.view.spatialReference,new i),!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(Vt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===N||t.key===Z)&&(this._activeKeyModifiers[t.key]=!0,null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==N&&t.key!==Z||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=this._calculatePickRay(t.screenPoint);x(this.analysisViewData.plane,this._startPlane),this.inputState=Et(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"shift"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(mt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=.001,a=Math.min((1-Math.abs(m(R(this.analysisViewData.plane),e.ray.direction)/w(e.ray.direction)))/i,1),s=-C(this._startPlane.plane,e.renderEnd),n=-C(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(null==this.analysisViewData.plane)return;const e=f(U.get(),this._startPlane.origin),i=f(U.get(),R(this._startPlane));M(i,i,-t.depth),T(i,i,e);const a=I(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,H());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=at(this.analysisViewData.plane,this.view.renderCoordsHelper,st.HEADING,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(mt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=at(this.analysisViewData.plane,this.view.renderCoordsHelper,st.TILT,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(mt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=z(t.rotatePlane),a=gt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(null==this.analysisViewData.plane)return;const e=P(A.get(),t.rotateAngle,t.rotateAxis);if(null==e)return;const i=D(U.get(),this._startPlane.basis1,e),a=D(U.get(),this._startPlane.basis2,e),s=I(this.analysisViewData.plane.origin,i,a,H());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const i=this._calculatePickRay(t.screenPoint),a=U.get();O(this.analysisViewData.plane.plane,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:k(a)})}_createResizeDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"resize"!==a.type||null==this.analysisViewData.plane)return;const s=x(this.analysisViewData.plane,H());e.next(mt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(null==this.analysisViewData.plane)return;const i=this._resizeHandles[t.activeHandleIdx],a=nt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,x(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(null==e)throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,null==t)return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=null!=i?i:H();if(i=null!=i?x(i,Ht):null,this._pickPlane(t,!0,e,a)){const t=q;let e=!1;null!=i&&(e=m(i.plane,a.plane)<t||m(V(U.get(),i.basis1),V(U.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}null!=this._previewPlane&&null==this._frameTask&&0===this._previewPlaneOpacity?this._frameTask=p({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*W),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):null==this._previewPlane&&null!=this._frameTask?this._removeFrameTask():null!=this._previewPlane&&this._updateManipulators()}_removeFrameTask(){this._frameTask=r(this._frameTask)}_calculatePickRay(t){const e=G(),i=c(t,xt);return wt(this.view.state.camera,i,e),V(e.direction,e.direction),e}_pickMinResult(t){const e=c(t,L.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=U.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(U.get()),l=this.view.state.camera;m(r,l.viewForward)>0&&M(r,r,-1);const o=rt(n,l),h=(e?1:-1)*o*J,p=M(U.get(),r,h);T(p,p,n);const u=this.analysis.tiltEnabled?lt.TILTED:lt.HORIZONTAL_OR_VERTICAL,c=i[N]?lt.VERTICAL:i[Z]?lt.HORIZONTAL:u;return ot(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=r(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=ht,this.rotateHeadingManipulator.state|=ht,this.rotateTiltManipulator.state|=ht,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~ht,this.rotateHeadingManipulator.state&=~ht,this.rotateTiltManipulator.state&=~ht}),this._pointerMoveTimerMs)}_updateManipulators(){if(bt.disableEngineLayers)return;let t,e=!1;if(null!=this.analysisViewData.plane)t=this.analysisViewData.plane,e=!1;else{if(null==this._previewPlane)return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=pt(t,A.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.attached=!0,this._previewPlaneGridVisualElement.attached=!0,this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),ut(this.shiftManipulator,i,t,this.view.state.camera),ct(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),dt(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>_t(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=b(U.get(),w(t.basis1),w(t.basis2),1),s=y(A.get(),a),n=g(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=e.toUnitRGBA(this._settings.plane.outlineColor);t[3]*=this._previewPlaneOpacity;const i=e.toUnitRGBA(this._settings.plane.color);i[3]*=this._previewPlaneOpacity,this._previewPlaneOutlineVisualElement.color=t,this._previewPlaneGridVisualElement.backgroundColor=i,this._previewPlaneGridVisualElement.gridColor=S}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function Et(t,e,i,a){const s=vt(i,R(a),t.direction,j()),n=E();return O(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function St(t){return"mouse"!==t.pointerType||0===t.button}kt.disableEngineLayers=!1,t([_()],kt.prototype,"_clock",void 0),t([_({constructOnly:!0})],kt.prototype,"view",void 0),t([_()],kt.prototype,"analysisViewData",void 0),t([_({readOnly:!0})],kt.prototype,"state",null),t([_({readOnly:!0})],kt.prototype,"cursor",null),t([_()],kt.prototype,"analysis",null),t([_()],kt.prototype,"removeIncompleteOnCancel",void 0),t([_({readOnly:!0})],kt.prototype,"layersMode",void 0),t([_({value:null})],kt.prototype,"inputState",null),t([_()],kt.prototype,"_isPlacingSlicePlane",null),t([_()],kt.prototype,"_creatingPointerId",null),kt=bt=t([v("esri.views.3d.analysis.Slice.SliceTool")],kt);const Ht=H(),xt=d(),Rt=kt;export{Rt as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as i}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import e from"../../../../core/Accessor.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{watch as o,syncAndInitial as r}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{E as n,m
|
|
5
|
+
import{_ as i}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import e from"../../../../core/Accessor.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{watch as o,syncAndInitial as r}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{E as n,m}from"../../../../chunks/mat4.js";import{s as p,l as u}from"../../../../chunks/vec3.js";import{Z as h}from"../../../../chunks/vec4f64.js";import{sv3d as c,sm4d as d}from"../../../../geometry/support/vectorStacks.js";import{Settings as v}from"./settings.js";import{PLANE_PREVIEW_OUTLINE_WIDTH as _,PLANE_OUTLINE_WIDTH as w}from"./sliceToolConfig.js";import{createGridVisualElement as g,createOutlineVisualElement as V,calculateBoundedPlaneTranslateRotate as f}from"./sliceToolUtils.js";import{createStipplePatternSimple as E}from"../../webgl-engine/materials/lineStippleUtils.js";let j=class extends e{constructor(i){super(i),this._gridVisualElement=null,this._outlineVisualElement=null,this.showGrid=!1,this.preview=!0}initialize(){const i=this.analysisViewData;if(null==i)throw new Error("expected internal object to be valid");this._gridVisualElement=g(this.view),this._outlineVisualElement=V(this.view),this._settings=new v(this.view.effectiveTheme),this.addHandles([o((()=>{const t=null!=i.plane&&this.analysisViewData.visible,{active:e}=this.analysisViewData,{preview:s,showGrid:o}=this;return{visible:t,active:e,preview:s,showGrid:o}}),(i=>this._updateMaterials(i)),r),o((()=>i.plane),(i=>this._updatePlane(i)),r)],"internal")}destroy(){this._gridVisualElement=s(this._gridVisualElement),this._outlineVisualElement=s(this._outlineVisualElement),this.set("view",null)}_updatePlane(i){if(null==i)return;this._gridVisualElement.attached=!0,this._outlineVisualElement.attached=!0;const t=p(c.get(),u(i.basis1),u(i.basis2),1),e=n(d.get(),t),s=f(i,d.get()),o=m(e,s,e);this._outlineVisualElement.transform=o,this._gridVisualElement.transform=o}_updateMaterials({visible:i,active:e,preview:s,showGrid:o}){this._outlineVisualElement.color=t.toUnitRGBA(this._settings.plane.outlineColor),this._outlineVisualElement.width=s?_:w,this._outlineVisualElement.stipplePattern=e?null:E(5),this._gridVisualElement.backgroundColor=t.toUnitRGBA(this._settings.plane.color),this._gridVisualElement.gridColor=o?t.toUnitRGBA(this._settings.plane.gridColor):h,this._gridVisualElement.visible=i,this._outlineVisualElement.visible=i}};i([l()],j.prototype,"view",void 0),i([l()],j.prototype,"analysis",void 0),i([l()],j.prototype,"analysisViewData",void 0),i([l()],j.prototype,"showGrid",void 0),i([l()],j.prototype,"preview",void 0),j=i([a("esri.views.3d.analysis.Slice.SliceVisualization")],j);export{j as SliceVisualization};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import t from"../../../../Color.js";import{multiplyOpacity as o,getContrast as e}from"../../../../core/colorUtils.js";class s{constructor(t){this._theme=t,this.color=this._theme.accentColor}}class h{constructor(e){this._theme=e,this.color=new t([0,0,0,.04]),this.gridColor=o(this._theme.accentColor,.5),this.outlineColor=o(this._theme.accentColor,.7)}}class i{constructor(t){this._theme=t,this.color=this._theme.accentColor}}class r{constructor(t){this._theme=t,this.color=o(this._theme.accentColor,.5),this.contrastColor=e(this._theme.accentColor)}}class c{constructor(t){this._theme=t,this.color=e(this._theme.accentColor),this.outlineColor=this._theme.accentColor}}class l{constructor(t){this._theme=t,this.callouts=new s(this._theme),this.plane=new h(this._theme),this.resizeManipulators=new i(this._theme),this.rotateManipulators=new r(this._theme),this.shiftManipulator=new c(this._theme)}}export{s as CalloutStyle,h as PlaneStyle,l as Settings};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../Color.js";import"../../../../geometry.js";import e from"../../../../analysis/SlicePlane.js";import"../../../../core/has.js";import n from"../../../../core/Logger.js";import{rad2deg as o,deg2rad as i}from"../../../../core/mathUtils.js";import{castRenderScreenPointArray3 as r}from"../../../../core/screenUtils.js";import{o as s,b as a,k as c,m as l,r as u,i as d,w as m,F as p}from"../../../../chunks/mat4.js";import{c as g}from"../../../../chunks/mat4f64.js";import{r as f}from"../../../../chunks/quat.js";import{g as b,c as h,e as T,f as w,n as A,a as O,l as R,b as I,s as E,p as j,A as C}from"../../../../chunks/vec3.js";import{a as L,c as U,f as _}from"../../../../chunks/vec3f64.js";import{tryProjectWithZConversion as M}from"../../../../geometry/projection.js";import{Axis as P}from"../../../../geometry/support/Axis.js";import{r as v,f as N,i as V,a as y,n as S,u as G}from"../../../../chunks/boundedPlane.js";import{fromVectorsAndPoint as k,fromPositionAndNormal as D}from"../../../../geometry/support/plane.js";import{create as H}from"../../../../geometry/support/ray.js";import{angleAroundAxis as B}from"../../../../geometry/support/vector.js";import{sv3d as x,sm4d as F,sq4d as X}from"../../../../geometry/support/vectorStacks.js";import{settings as Y}from"./settings.js";import{VERTICAL_DOT_THRESHOLD as Z,SMALL_ANGLE_DOT_THRESHOLD as W,PLANE_MIN_BASIS_SCREEN_LEN2 as q,INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION as z,SHIFT_RESTART_OFFSET_DISTANCE as $,RESIZE_HANDLE_EDGE_PADDING_FRAC as J,SHIFT_RESTART_TIP_RADIUS as K,PLANE_OUTLINE_WIDTH as Q,RESIZE_HANDLE_CORNER_INPUT_RADIUS as tt,RESIZE_HANDLE_EDGE_INPUT_RADIUS as et,SHIFT_RESTART_TIP_LENGTH as nt,SHIFT_RESTART_ARROW_LENGTH as ot,SHIFT_RESTART_ARROW_OUTLINE_WIDTH as it,RESIZE_HANDLE_CORNER_WIDTH as rt,RESIZE_HANDLE_EDGE_WIDTH as st,DISPLAY_FOCUS_MULTIPLIER as at,SHIFT_RESTART_TUBE_RADIUS as ct,SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER as lt,SHIFT_RESTART_TIP_FOCUS_MULTIPLIER as ut}from"./sliceToolConfig.js";import{applyProjectionAndElevationAlignment as dt}from"../support/projectionUtils.js";import{Manipulator3D as mt}from"../../interactive/Manipulator3D.js";import{calculateTranslateRotateFromBases as pt,createRotateManipulator as gt,worldScaledManipulatorSettings as ft}from"../../interactive/manipulatorUtils.js";import{RenderObject as bt}from"../../interactive/RenderObject.js";import{LineVisualElement as ht}from"../../interactive/visualElements/LineVisualElement.js";import{SlicePlaneVisualElement as Tt}from"../../interactive/visualElements/SlicePlaneVisualElement.js";import{RenderCoordsHelper as wt}from"../../support/RenderCoordsHelper.js";import{fromRender as At}from"../../support/geometryUtils/ray.js";import{CullFaceOptions as Ot}from"../../webgl-engine/lib/basicInterfaces.js";import{createPolylineGeometry as Rt,createConeGeometry as It,createPathExtrusionGeometry as Et}from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as jt}from"../../webgl-engine/lib/Material.js";import{ColorMaterial as Ct}from"../../webgl-engine/materials/ColorMaterial.js";import{NativeLineMaterial as Lt}from"../../webgl-engine/materials/NativeLineMaterial.js";import{RibbonLineMaterial as Ut}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{ManipulatorStateCustomFlags as _t,ManipulatorStateFlags as Mt}from"../../../interactive/interfaces.js";import Pt from"../../../../geometry/Extent.js";function vt(t,e,n,o,i,r,s,a){return Nt(e,s.worldUpAtPosition(t,x.get()),i,r,a.basis1,a.basis2),b(a.basis1,a.basis1,n),b(a.basis2,a.basis2,o),h(a.origin,t),k(a.basis2,a.basis1,a.origin,a.plane),a}function Nt(t,e,n,o,i,r){const s=T(t,e),a=x.get(),c=x.get();switch(o===ge.HORIZONTAL_OR_VERTICAL?Math.abs(s)>Z?ge.HORIZONTAL:ge.VERTICAL:o){case ge.VERTICAL:{const o=Math.abs(s)<=W?t:n.viewUp;w(a,o,e),h(c,e);break}case ge.HORIZONTAL:w(a,n.viewUp,e),w(c,e,a);break;case ge.TILTED:{const o=Math.abs(s)<=W?e:n.viewUp;w(a,o,t),w(c,t,a);break}}const l=w(x.get(),a,c);T(l,n.viewForward)>0&&b(c,c,-1),A(i,a),A(r,c)}function Vt(t,e,n){const o=e.worldUpAtPosition(t.origin,x.get()),i=t.basis1,r=ae(t,o),s=Math.round(r/he)*he;return v(t,s-r,i,n)}function yt(t,e,n,o,i,r){const s=h(x.get(),i.origin);O(s,s,b(x.get(),i.basis1,t.direction[0]<0?1:-1)),O(s,s,b(x.get(),i.basis2,t.direction[1]<0?1:-1));const a=R(i.basis1),c=R(i.basis2),l=I(x.get(),n,s),u=I(x.get(),e,s);let d=0,m=0;if($t(t)){const e=zt(i),n=zt(r);d=a-.5*t.direction[0]*T(i.basis1,u)/a,m=c-.5*t.direction[1]*T(i.basis2,u)/c;const o=n/e;d*=o,m*=o}const p=d+.5*t.direction[0]*T(i.basis1,l)/a,g=m+.5*t.direction[1]*T(i.basis2,l)/c,f=b(x.get(),i.basis1,p/a),w=b(x.get(),i.basis2,g/c);(p<=0||Wt(r.origin,f,o)<=q)&&h(f,r.basis1),(g<=0||Wt(r.origin,w,o)<=q)&&h(w,r.basis2);const A=h(x.get(),s);return O(A,A,b(x.get(),f,t.direction[0]<0?-1:1)),O(A,A,b(x.get(),w,t.direction[1]<0?-1:1)),N(A,f,w,r)}function St(t,e){return z*Math.min(e.width,e.height)*e.computeRenderPixelSizeAt(t)}function Gt(t,e,n,o){const i=w(x.get(),e,n);return w(i,i,e),D(t,i,o)}function kt(t,e){return pt(t.basis1,t.basis2,t.origin,e)}function Dt(t,e,n,o){const i=e.worldUpAtPosition(t.origin,x.get()),r=x.get();switch(n){case pe.HEADING:h(r,i);break;case pe.TILT:h(r,t.basis1)}return D(t.origin,r,o)}function Ht(t,e,n,o){const i=Zt(n,Yt.NEGATIVE_X),a=F.get();s(a,e,i.edge*Math.PI/2);const c=A(x.get(),i.basis);let l=b(x.get(),c,i.direction*o.computeScreenPixelSizeAt(i.position)*$);O(l,l,i.position);const u=o.projectToRenderScreen(l,r(x.get())),d=Bt(o,u);At(o,u,be),A(be.direction,be.direction);const m=x.get();!d&&V(n,be,m)&&(l=m),a[12]=0,a[13]=0,a[14]=0,t.modelTransform=a,t.renderLocation=L(l),d?t.state|=fe:t.state&=~fe}function Bt(t,e){const[n,o,i,r]=t.viewport,s=Math.min(i,r)/16;let a=!0;return e[0]<n+s?(e[0]=n+s,a=!1):e[0]>n+i-s&&(e[0]=n+i-s,a=!1),e[1]<o+s?(e[1]=o+s,a=!1):e[1]>o+r-s&&(e[1]=o+r-s,a=!1),a}function xt(t,e,n,o){const i=R(o.basis1),r=R(o.basis2),s=qt(o),u=zt(o),d=E(x.get(),0,0,0);O(d,b(x.get(),o.basis1,e.direction[0]),b(x.get(),o.basis2,e.direction[1])),O(d,o.origin,d);let m=0,p=1;if($t(e))1===e.direction[0]&&-1===e.direction[1]?m=he:1===e.direction[0]&&1===e.direction[1]?m=Math.PI:-1===e.direction[0]&&1===e.direction[1]&&(m=3*Math.PI/2),p=u;else{const t=0!==e.direction[0]?1:2;m=1===t?he:0,p=(1===t?r:i)-s}const g=a(F.get(),m);c(g,g,E(x.get(),p,p,p)),l(g,n,g),g[12]=0,g[13]=0,g[14]=0,t.modelTransform=g,t.renderLocation=d}function Ft(t,e,n,o){const i=o.worldUpAtPosition(n.origin,x.get()),r=Zt(n,Yt.POSITIVE_X),s=a(F.get(),r.edge*Math.PI/2);u(s,s,-ae(n,i)),l(s,e,s),s[12]=0,s[13]=0,s[14]=0,t.modelTransform=s,t.renderLocation=r.position}function Xt(t,e,n){const o=Zt(n,Yt.POSITIVE_Y),i=a(F.get(),o.edge*Math.PI/2);u(i,i,he),l(i,e,i),i[12]=0,i[13]=0,i[14]=0,t.modelTransform=i,t.renderLocation=o.position}var Yt;function Zt(t,e){switch(e){case Yt.POSITIVE_X:return{basis:t.basis1,direction:1,position:O(x.get(),t.origin,t.basis1),edge:e};case Yt.POSITIVE_Y:return{basis:t.basis2,direction:1,position:O(x.get(),t.origin,t.basis2),edge:e};case Yt.NEGATIVE_X:return{basis:t.basis1,direction:-1,position:I(x.get(),t.origin,t.basis1),edge:e};case Yt.NEGATIVE_Y:return{basis:t.basis2,direction:-1,position:I(x.get(),t.origin,t.basis2),edge:e}}}function Wt(t,e,n){const o=n.projectToRenderScreen(O(x.get(),t,e),r(x.get())),i=n.projectToRenderScreen(I(x.get(),t,e),r(x.get()));return j(I(o,o,i))}function qt(t){const e=R(t.basis1),n=R(t.basis2);return J*Math.min(e,n)}function zt(t){return qt(t)}function $t(t){return 0!==t.direction[0]&&0!==t.direction[1]}function Jt(e,n){const o=n.offsetMode===Ae.CENTER_ON_CALLOUT?$:0,i=[_(o,0,-ot/2),_(o,0,ot/2)],r=ie(i,!0),s=(t,e)=>ne(i,t,e,n),a=s(0,!1),c=s(it,!0),l=new Lt({color:t.toUnitRGBA(n.calloutColor),renderOccluded:jt.OccludeAndTransparent,isDecoration:!0}),u=Rt(l,[[o,0,0],[o-$,0,0]]),d=Rt(l,[[o,0,0],[o-$,0,0]]);return new mt({view:e,renderObjects:[...a.normal.map((t=>new bt(t,Mt.Unfocused|me))),...c.normal.map((t=>new bt(t,Mt.Unfocused|me))),new bt(u,Mt.Unfocused|me|fe),...a.focused.map((t=>new bt(t,Mt.Focused|me))),...c.focused.map((t=>new bt(t,Mt.Focused|me))),new bt(d,Mt.Focused|me|fe)],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[r]},collisionPriority:1,radius:K,state:me})}function Kt(e,n){const o=gt(e,{calloutColor:t.toUnitRGBA(Y.callouts.color),customStateMask:me,texture:n});return o.state=me,o}function Qt(e){const n=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0],[-1,-1,0]];return new ht({view:e,attached:!1,color:t.toUnitRGBA(Y.plane.outlineColor),width:Q,renderOccluded:jt.OccludeAndTransparent,geometry:[n],isDecoration:!0})}function te(e){return new Tt({view:e,attached:!1,backgroundColor:t.toUnitRGBA(Y.plane.color),gridColor:t.toUnitRGBA(Y.plane.gridColor),gridWidth:4,renderOccluded:jt.OccludeAndTransparent,isDecoration:!0})}function ee(e,n,o){const i=$t(n),r=i?[_(1,0,0),_(0,0,0),_(0,1,0)]:[_(1,0,0),_(-1,0,0)],s=t.toUnitRGBA(o.color),a=t=>new Ut({color:s,width:t,renderOccluded:jt.OccludeAndTransparent,isDecoration:!0}),c=()=>new Lt({color:s,renderOccluded:jt.OccludeAndTransparent,isDecoration:!0}),l=i?rt:st,u=l*at,d=st,m=t=>t>1?a(t):c(),p=[new bt(Rt(m(l),r),Mt.Unfocused|Te),new bt(Rt(m(u),r),Mt.Focused|Te),new bt(Rt(m(d),r),we)],g=new mt({view:e,renderObjects:p,collisionType:{type:"line",paths:[r]},radius:i?tt:et,...ft});return g.state=Te,g}function ne(e,n,o,i){const r=t.blendColors(i.color,i.outlineColor,.4),s=t.blendColors(i.color,i.outlineColor,.14),a=new Ct({color:t.toUnitRGBA(i.color),cullFace:Ot.Back,renderOccluded:jt.Opaque,isDecoration:!0}),u=new Ct({color:t.toUnitRGBA(r),cullFace:Ot.Back,renderOccluded:jt.Opaque,isDecoration:!0}),h=new Ct({color:t.toUnitRGBA(s),cullFace:Ot.Back,renderOccluded:jt.Opaque,isDecoration:!0}),T=new Ct({color:t.toUnitRGBA(i.outlineColor),transparent:!0,writeDepth:!1,cullFace:Ot.Front,renderOccluded:jt.Transparent,isDecoration:!0}),w=t=>{const i=e.slice(0),r=I(x.get(),i[0],i[1]);A(r,r);const s=I(x.get(),i[i.length-1],i[i.length-2]);if(A(s,s),n>0){const t=b(U(),s,-n);i[i.length-1]=O(t,t,i[i.length-1]);const e=b(U(),r,-n);i[0]=O(e,e,i[0])}const w=t?ut:1,R=nt*w,j=K*w,C=d(F.get());if(n>0){const t=R/4,e=E(x.get(),0,t,0),o=1+n/t;m(C,C,e),c(C,C,E(x.get(),o,o,o)),m(C,C,b(e,e,-1/o))}const L=d(g()),M=_(0,1,0),P=p(g(),f(X.get(),M,s));P[12]=i[i.length-1][0],P[13]=i[i.length-1][1],P[14]=i[i.length-1][2],l(P,P,C);const v=oe(ct*(t?lt:1)+n,i,o?T:h);v.transformation=L;const N=[v],V=It(o?T:a,R,j,24,!1,!1,!0);V.transformation=P,N.push(V);const y=It(o?T:u,R,j,24,!1,!0,!1);y.transformation=P,N.push(y);const S=p(g(),f(X.get(),M,r));return S[12]=i[0][0],S[13]=i[0][1],S[14]=i[0][2],l(S,S,C),N.push(V.instantiate({transformation:S})),N.push(y.instantiate({transformation:S})),N};return{normal:w(!1),focused:w(!0)}}function oe(t,e,n){const o=[],i=12;for(let r=0;r<i;r++){const e=r/i*2*Math.PI;o.push([Math.cos(e)*t,Math.sin(e)*t])}return Et(n,o,e,[],[],!1)}function ie(t,e){const n=I(U(),t[t.length-1],t[t.length-2]);if(A(n,n),b(n,n,nt),O(n,n,t[t.length-1]),e){const e=I(U(),t[0],t[1]);return A(e,e),b(e,e,nt),O(e,e,t[0]),[e,...t,n]}return[...t,n]}function re(t,n,i,r=new e){if(null==t)return null;const{renderCoordsHelper:s}=n,a=s.fromRenderCoords(t.origin,n.spatialReference);if(null==a)return null;const c=M(a,i);if(null==c)return null;r.position=c;const l=2*R(t.basis1),u=2*R(t.basis2),d=wt.renderUnitScaleFactor(n.spatialReference,i);r.width=l*d,r.height=u*d;const m=s.worldUpAtPosition(t.origin,x.get());return r.tilt=o(ae(t,m)),r.heading=s.headingAtPosition(t.origin,t.basis1)-90,r}function se(t,e,n){if(null==t)return null;const o=t.origin,i=x.get(),r=x.get(),s=x.get(),a=x.get();let c,l,u,d,m,p;O(i,o,t.basis1),O(i,i,t.basis2),O(r,o,t.basis1),C(r,r,t.basis2),C(s,o,t.basis1),C(s,s,t.basis2),C(a,o,t.basis1),O(a,a,t.basis2);for(const g of[i,r,s,a]){const t=e.fromRenderCoords(g,g,n);if(null==t)return null;c=null==c?t[0]:Math.min(c,t[0]),l=null==l?t[0]:Math.max(l,t[0]),u=null==u?t[1]:Math.min(u,t[1]),d=null==d?t[1]:Math.max(d,t[1]),m=null==m?t[2]:Math.min(m,t[2]),p=null==p?t[2]:Math.max(p,t[2])}return new Pt({xmin:c,xmax:l,ymin:u,ymax:d,zmin:m,zmax:p,spatialReference:n})}function ae(t,e){return B(e,t.basis2,t.basis1)+he}function ce(t,e,o,r,s,a,c=y()){return a.toRenderCoords(t,c.origin)?(a.worldBasisAtPosition(c.origin,P.X,c.basis1),a.worldBasisAtPosition(c.origin,P.Y,c.basis2),k(c.basis2,c.basis1,c.origin,c.plane),v(c,-i(e),S(c),c),v(c,i(o),c.basis1,c),b(c.basis1,c.basis1,r/2),b(c.basis2,c.basis2,s/2),G(c),c):(n.getLogger("esri.views.3d.analysis.Slice.sliceToolUtils").error(`Failed to project slice plane position, projection from ${t.spatialReference.wkid} is not supported`),null)}function le(t,e){if(null==t||null==t.position)return null;const n=dt(t.position,e.spatialReference,e.elevationProvider);if(null==n)return null;const o=wt.renderUnitScaleFactor(t.position.spatialReference,e.spatialReference),i=t.width*o,r=t.height*o;return{position:n,heading:t.heading,tilt:t.tilt,renderWidth:i,renderHeight:r}}function ue(t,e,n,o=y()){const i=le(t,e);return null==i?null:de(i,e,n,o)}function de(t,e,n,o=y()){if(null==t)return null;const i=ce(t.position,t.heading,t.tilt,t.renderWidth,t.renderHeight,e.renderCoordsHelper,o);return n.tiltEnabled||null==i||Vt(i,e.renderCoordsHelper,i),i}!function(t){t[t.POSITIVE_X=0]="POSITIVE_X",t[t.POSITIVE_Y=1]="POSITIVE_Y",t[t.NEGATIVE_X=2]="NEGATIVE_X",t[t.NEGATIVE_Y=3]="NEGATIVE_Y"}(Yt||(Yt={}));const me=_t.Custom1;var pe,ge;!function(t){t[t.HEADING=1]="HEADING",t[t.TILT=2]="TILT"}(pe||(pe={})),function(t){t[t.HORIZONTAL_OR_VERTICAL=0]="HORIZONTAL_OR_VERTICAL",t[t.HORIZONTAL=1]="HORIZONTAL",t[t.VERTICAL=2]="VERTICAL",t[t.TILTED=3]="TILTED"}(ge||(ge={}));const fe=_t.Custom2,be=H(),he=Math.PI/2,Te=_t.Custom1,we=_t.Custom2;var Ae;function Oe(t){return null!=("building-scene-3d"===t.type?t:null)}!function(t){t[t.CENTER_ON_CALLOUT=0]="CENTER_ON_CALLOUT",t[t.CENTER_ON_ARROW=1]="CENTER_ON_ARROW"}(Ae||(Ae={}));export{me as DidPointerMoveRecentlyFlag,fe as IsShiftEdgeOnScreenFlag,Ae as OffsetMode,pe as RotationAxis,ge as SliceOrientation,ie as addArrowTips,kt as calculateBoundedPlaneTranslateRotate,zt as calculateDiagonalResizeHandleScale,St as calculatePlaneHalfSize,qt as calculateResizeHandlePadding,Wt as calculateScreenSpaceBasisLength2,te as createGridVisualElement,Qt as createOutlineVisualElement,vt as createPlane,ee as createResizeManipulator,Kt as createRotateManipulator,Dt as createRotatePlane,Jt as createShiftManipulator,Gt as createShiftPlane,Vt as forceHorizontalOrVertical,$t as isDiagonalResizeHandle,Oe as isIBuildingSceneLayerView3D,Nt as normalToBases,se as planeToExtent,re as planeToShape,le as projectAndElevationAlignShape,de as projectedShapeToPlane,Te as resizeNormal,we as resizeOutlineOnly,yt as resizePlane,ue as shapeToPlane,xt as updateResizeHandle,Ft as updateRotateHeadingHandle,Xt as updateRotateTiltHandle,Ht as updateShiftRestartHandle};
|
|
5
|
+
import e from"../../../../Color.js";import"../../../../geometry.js";import t from"../../../../analysis/SlicePlane.js";import"../../../../core/has.js";import n from"../../../../core/Logger.js";import{rad2deg as o,deg2rad as i}from"../../../../core/mathUtils.js";import{castRenderScreenPointArray3 as r}from"../../../../core/screenUtils.js";import{o as s,b as a,k as c,m as l,r as u,i as d,w as m,F as g}from"../../../../chunks/mat4.js";import{c as p}from"../../../../chunks/mat4f64.js";import{r as f}from"../../../../chunks/quat.js";import{g as b,c as h,e as T,f as w,n as A,a as O,l as R,b as I,s as E,p as j,A as C}from"../../../../chunks/vec3.js";import{a as L,c as U,f as v}from"../../../../chunks/vec3f64.js";import{tryProjectWithZConversion as _}from"../../../../geometry/projection.js";import{Axis as M}from"../../../../geometry/support/Axis.js";import{r as P,f as N,i as V,a as y,n as S,u as G}from"../../../../chunks/boundedPlane.js";import{fromVectorsAndPoint as k,fromPositionAndNormal as D}from"../../../../geometry/support/plane.js";import{create as H}from"../../../../geometry/support/ray.js";import{angleAroundAxis as B}from"../../../../geometry/support/vector.js";import{sv3d as x,sm4d as F,sq4d as X}from"../../../../geometry/support/vectorStacks.js";import{CalloutStyle as Y,PlaneStyle as Z}from"./settings.js";import{VERTICAL_DOT_THRESHOLD as W,SMALL_ANGLE_DOT_THRESHOLD as q,PLANE_MIN_BASIS_SCREEN_LEN2 as z,INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION as $,SHIFT_RESTART_OFFSET_DISTANCE as J,RESIZE_HANDLE_EDGE_PADDING_FRAC as K,SHIFT_RESTART_TIP_RADIUS as Q,PLANE_OUTLINE_WIDTH as ee,RESIZE_HANDLE_CORNER_INPUT_RADIUS as te,RESIZE_HANDLE_EDGE_INPUT_RADIUS as ne,SHIFT_RESTART_TIP_LENGTH as oe,SHIFT_RESTART_ARROW_LENGTH as ie,SHIFT_RESTART_ARROW_OUTLINE_WIDTH as re,RESIZE_HANDLE_CORNER_WIDTH as se,RESIZE_HANDLE_EDGE_WIDTH as ae,DISPLAY_FOCUS_MULTIPLIER as ce,SHIFT_RESTART_TUBE_RADIUS as le,SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER as ue,SHIFT_RESTART_TIP_FOCUS_MULTIPLIER as de}from"./sliceToolConfig.js";import{applyProjectionAndElevationAlignment as me}from"../support/projectionUtils.js";import{Manipulator3D as ge}from"../../interactive/Manipulator3D.js";import{calculateTranslateRotateFromBases as pe,createRotateManipulator as fe,worldScaledManipulatorSettings as be}from"../../interactive/manipulatorUtils.js";import{RenderObject as he}from"../../interactive/RenderObject.js";import{LineVisualElement as Te}from"../../interactive/visualElements/LineVisualElement.js";import{SlicePlaneVisualElement as we}from"../../interactive/visualElements/SlicePlaneVisualElement.js";import{RenderCoordsHelper as Ae}from"../../support/RenderCoordsHelper.js";import{fromRender as Oe}from"../../support/geometryUtils/ray.js";import{CullFaceOptions as Re}from"../../webgl-engine/lib/basicInterfaces.js";import{createPolylineGeometry as Ie,createConeGeometry as Ee,createPathExtrusionGeometry as je}from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as Ce}from"../../webgl-engine/lib/Material.js";import{ColorMaterial as Le}from"../../webgl-engine/materials/ColorMaterial.js";import{NativeLineMaterial as Ue}from"../../webgl-engine/materials/NativeLineMaterial.js";import{RibbonLineMaterial as ve}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{ManipulatorStateCustomFlags as _e,ManipulatorStateFlags as Me}from"../../../interactive/interfaces.js";import Pe from"../../../../geometry/Extent.js";function Ne(e,t,n,o,i,r,s,a){return Ve(t,s.worldUpAtPosition(e,x.get()),i,r,a.basis1,a.basis2),b(a.basis1,a.basis1,n),b(a.basis2,a.basis2,o),h(a.origin,e),k(a.basis2,a.basis1,a.origin,a.plane),a}function Ve(e,t,n,o,i,r){const s=T(e,t),a=x.get(),c=x.get();switch(o===ft.HORIZONTAL_OR_VERTICAL?Math.abs(s)>W?ft.HORIZONTAL:ft.VERTICAL:o){case ft.VERTICAL:{const o=Math.abs(s)<=q?e:n.viewUp;w(a,o,t),h(c,t);break}case ft.HORIZONTAL:w(a,n.viewUp,t),w(c,t,a);break;case ft.TILTED:{const o=Math.abs(s)<=q?t:n.viewUp;w(a,o,e),w(c,e,a);break}}const l=w(x.get(),a,c);T(l,n.viewForward)>0&&b(c,c,-1),A(i,a),A(r,c)}function ye(e,t,n){const o=t.worldUpAtPosition(e.origin,x.get()),i=e.basis1,r=ct(e,o),s=Math.round(r/Tt)*Tt;return P(e,s-r,i,n)}function Se(e,t,n,o,i,r){const s=h(x.get(),i.origin);O(s,s,b(x.get(),i.basis1,e.direction[0]<0?1:-1)),O(s,s,b(x.get(),i.basis2,e.direction[1]<0?1:-1));const a=R(i.basis1),c=R(i.basis2),l=I(x.get(),n,s),u=I(x.get(),t,s);let d=0,m=0;if(Je(e)){const t=$e(i),n=$e(r);d=a-.5*e.direction[0]*T(i.basis1,u)/a,m=c-.5*e.direction[1]*T(i.basis2,u)/c;const o=n/t;d*=o,m*=o}const g=d+.5*e.direction[0]*T(i.basis1,l)/a,p=m+.5*e.direction[1]*T(i.basis2,l)/c,f=b(x.get(),i.basis1,g/a),w=b(x.get(),i.basis2,p/c);(g<=0||qe(r.origin,f,o)<=z)&&h(f,r.basis1),(p<=0||qe(r.origin,w,o)<=z)&&h(w,r.basis2);const A=h(x.get(),s);return O(A,A,b(x.get(),f,e.direction[0]<0?-1:1)),O(A,A,b(x.get(),w,e.direction[1]<0?-1:1)),N(A,f,w,r)}function Ge(e,t){return $*Math.min(t.width,t.height)*t.computeRenderPixelSizeAt(e)}function ke(e,t,n,o){const i=w(x.get(),t,n);return w(i,i,t),D(e,i,o)}function De(e,t){return pe(e.basis1,e.basis2,e.origin,t)}function He(e,t,n,o){const i=t.worldUpAtPosition(e.origin,x.get()),r=x.get();switch(n){case pt.HEADING:h(r,i);break;case pt.TILT:h(r,e.basis1)}return D(e.origin,r,o)}function Be(e,t,n,o){const i=We(n,Ze.NEGATIVE_X),a=F.get();s(a,t,i.edge*Math.PI/2);const c=A(x.get(),i.basis);let l=b(x.get(),c,i.direction*o.computeScreenPixelSizeAt(i.position)*J);O(l,l,i.position);const u=o.projectToRenderScreen(l,r(x.get())),d=xe(o,u);Oe(o,u,ht),A(ht.direction,ht.direction);const m=x.get();!d&&V(n,ht,m)&&(l=m),a[12]=0,a[13]=0,a[14]=0,e.modelTransform=a,e.renderLocation=L(l),d?e.state|=bt:e.state&=~bt}function xe(e,t){const[n,o,i,r]=e.viewport,s=Math.min(i,r)/16;let a=!0;return t[0]<n+s?(t[0]=n+s,a=!1):t[0]>n+i-s&&(t[0]=n+i-s,a=!1),t[1]<o+s?(t[1]=o+s,a=!1):t[1]>o+r-s&&(t[1]=o+r-s,a=!1),a}function Fe(e,t,n,o){const i=R(o.basis1),r=R(o.basis2),s=ze(o),u=$e(o),d=E(x.get(),0,0,0);O(d,b(x.get(),o.basis1,t.direction[0]),b(x.get(),o.basis2,t.direction[1])),O(d,o.origin,d);let m=0,g=1;if(Je(t))1===t.direction[0]&&-1===t.direction[1]?m=Tt:1===t.direction[0]&&1===t.direction[1]?m=Math.PI:-1===t.direction[0]&&1===t.direction[1]&&(m=3*Math.PI/2),g=u;else{const e=0!==t.direction[0]?1:2;m=1===e?Tt:0,g=(1===e?r:i)-s}const p=a(F.get(),m);c(p,p,E(x.get(),g,g,g)),l(p,n,p),p[12]=0,p[13]=0,p[14]=0,e.modelTransform=p,e.renderLocation=d}function Xe(e,t,n,o){const i=o.worldUpAtPosition(n.origin,x.get()),r=We(n,Ze.POSITIVE_X),s=a(F.get(),r.edge*Math.PI/2);u(s,s,-ct(n,i)),l(s,t,s),s[12]=0,s[13]=0,s[14]=0,e.modelTransform=s,e.renderLocation=r.position}function Ye(e,t,n){const o=We(n,Ze.POSITIVE_Y),i=a(F.get(),o.edge*Math.PI/2);u(i,i,Tt),l(i,t,i),i[12]=0,i[13]=0,i[14]=0,e.modelTransform=i,e.renderLocation=o.position}var Ze;function We(e,t){switch(t){case Ze.POSITIVE_X:return{basis:e.basis1,direction:1,position:O(x.get(),e.origin,e.basis1),edge:t};case Ze.POSITIVE_Y:return{basis:e.basis2,direction:1,position:O(x.get(),e.origin,e.basis2),edge:t};case Ze.NEGATIVE_X:return{basis:e.basis1,direction:-1,position:I(x.get(),e.origin,e.basis1),edge:t};case Ze.NEGATIVE_Y:return{basis:e.basis2,direction:-1,position:I(x.get(),e.origin,e.basis2),edge:t}}}function qe(e,t,n){const o=n.projectToRenderScreen(O(x.get(),e,t),r(x.get())),i=n.projectToRenderScreen(I(x.get(),e,t),r(x.get()));return j(I(o,o,i))}function ze(e){const t=R(e.basis1),n=R(e.basis2);return K*Math.min(t,n)}function $e(e){return ze(e)}function Je(e){return 0!==e.direction[0]&&0!==e.direction[1]}function Ke(t,n){const o=n.offsetMode===Ot.CENTER_ON_CALLOUT?J:0,i=[v(o,0,-ie/2),v(o,0,ie/2)],r=rt(i,!0),s=(e,t)=>ot(i,e,t,n),a=s(0,!1),c=s(re,!0),l=new Ue({color:e.toUnitRGBA(n.calloutColor),renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),u=Ie(l,[[o,0,0],[o-J,0,0]]),d=Ie(l,[[o,0,0],[o-J,0,0]]);return new ge({view:t,renderObjects:[...a.normal.map((e=>new he(e,Me.Unfocused|gt))),...c.normal.map((e=>new he(e,Me.Unfocused|gt))),new he(u,Me.Unfocused|gt|bt),...a.focused.map((e=>new he(e,Me.Focused|gt))),...c.focused.map((e=>new he(e,Me.Focused|gt))),new he(d,Me.Focused|gt|bt)],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[r]},collisionPriority:1,radius:Q,state:gt})}function Qe(t,n){const o=new Y(t.effectiveTheme),i=fe(t,{calloutColor:e.toUnitRGBA(o.color),customStateMask:gt,texture:n});return i.state=gt,i}function et(t){const n=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0],[-1,-1,0]],o=new Z(t.effectiveTheme);return new Te({view:t,attached:!1,color:e.toUnitRGBA(o.outlineColor),width:ee,renderOccluded:Ce.OccludeAndTransparent,geometry:[n],isDecoration:!0})}function tt(t){const n=new Z(t.effectiveTheme);return new we({view:t,attached:!1,backgroundColor:e.toUnitRGBA(n.color),gridColor:e.toUnitRGBA(n.gridColor),gridWidth:4,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0})}function nt(t,n,o){const i=Je(n),r=i?[v(1,0,0),v(0,0,0),v(0,1,0)]:[v(1,0,0),v(-1,0,0)],s=e.toUnitRGBA(o.color),a=e=>new ve({color:s,width:e,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),c=()=>new Ue({color:s,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),l=i?se:ae,u=l*ce,d=ae,m=e=>e>1?a(e):c(),g=[new he(Ie(m(l),r),Me.Unfocused|wt),new he(Ie(m(u),r),Me.Focused|wt),new he(Ie(m(d),r),At)],p=new ge({view:t,renderObjects:g,collisionType:{type:"line",paths:[r]},radius:i?te:ne,...be});return p.state=wt,p}function ot(t,n,o,i){const r=e.blendColors(i.color,i.outlineColor,.4),s=e.blendColors(i.color,i.outlineColor,.14),a=new Le({color:e.toUnitRGBA(i.color),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),u=new Le({color:e.toUnitRGBA(r),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),h=new Le({color:e.toUnitRGBA(s),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),T=new Le({color:e.toUnitRGBA(i.outlineColor),transparent:!0,writeDepth:!1,cullFace:Re.Front,renderOccluded:Ce.Transparent,isDecoration:!0}),w=e=>{const i=t.slice(0),r=I(x.get(),i[0],i[1]);A(r,r);const s=I(x.get(),i[i.length-1],i[i.length-2]);if(A(s,s),n>0){const e=b(U(),s,-n);i[i.length-1]=O(e,e,i[i.length-1]);const t=b(U(),r,-n);i[0]=O(t,t,i[0])}const w=e?de:1,R=oe*w,j=Q*w,C=d(F.get());if(n>0){const e=R/4,t=E(x.get(),0,e,0),o=1+n/e;m(C,C,t),c(C,C,E(x.get(),o,o,o)),m(C,C,b(t,t,-1/o))}const L=d(p()),_=v(0,1,0),M=g(p(),f(X.get(),_,s));M[12]=i[i.length-1][0],M[13]=i[i.length-1][1],M[14]=i[i.length-1][2],l(M,M,C);const P=it(le*(e?ue:1)+n,i,o?T:h);P.transformation=L;const N=[P],V=Ee(o?T:a,R,j,24,!1,!1,!0);V.transformation=M,N.push(V);const y=Ee(o?T:u,R,j,24,!1,!0,!1);y.transformation=M,N.push(y);const S=g(p(),f(X.get(),_,r));return S[12]=i[0][0],S[13]=i[0][1],S[14]=i[0][2],l(S,S,C),N.push(V.instantiate({transformation:S})),N.push(y.instantiate({transformation:S})),N};return{normal:w(!1),focused:w(!0)}}function it(e,t,n){const o=[],i=12;for(let r=0;r<i;r++){const t=r/i*2*Math.PI;o.push([Math.cos(t)*e,Math.sin(t)*e])}return je(n,o,t,[],[],!1)}function rt(e,t){const n=I(U(),e[e.length-1],e[e.length-2]);if(A(n,n),b(n,n,oe),O(n,n,e[e.length-1]),t){const t=I(U(),e[0],e[1]);return A(t,t),b(t,t,oe),O(t,t,e[0]),[t,...e,n]}return[...e,n]}function st(e,n,i,r=new t){if(null==e)return null;const{renderCoordsHelper:s}=n,a=s.fromRenderCoords(e.origin,n.spatialReference);if(null==a)return null;const c=_(a,i);if(null==c)return null;r.position=c;const l=2*R(e.basis1),u=2*R(e.basis2),d=Ae.renderUnitScaleFactor(n.spatialReference,i);r.width=l*d,r.height=u*d;const m=s.worldUpAtPosition(e.origin,x.get());return r.tilt=o(ct(e,m)),r.heading=s.headingAtPosition(e.origin,e.basis1)-90,r}function at(e,t,n){if(null==e)return null;const o=e.origin,i=x.get(),r=x.get(),s=x.get(),a=x.get();let c,l,u,d,m,g;O(i,o,e.basis1),O(i,i,e.basis2),O(r,o,e.basis1),C(r,r,e.basis2),C(s,o,e.basis1),C(s,s,e.basis2),C(a,o,e.basis1),O(a,a,e.basis2);for(const p of[i,r,s,a]){const e=t.fromRenderCoords(p,p,n);if(null==e)return null;c=null==c?e[0]:Math.min(c,e[0]),l=null==l?e[0]:Math.max(l,e[0]),u=null==u?e[1]:Math.min(u,e[1]),d=null==d?e[1]:Math.max(d,e[1]),m=null==m?e[2]:Math.min(m,e[2]),g=null==g?e[2]:Math.max(g,e[2])}return new Pe({xmin:c,xmax:l,ymin:u,ymax:d,zmin:m,zmax:g,spatialReference:n})}function ct(e,t){return B(t,e.basis2,e.basis1)+Tt}function lt(e,t,o,r,s,a,c=y()){return a.toRenderCoords(e,c.origin)?(a.worldBasisAtPosition(c.origin,M.X,c.basis1),a.worldBasisAtPosition(c.origin,M.Y,c.basis2),k(c.basis2,c.basis1,c.origin,c.plane),P(c,-i(t),S(c),c),P(c,i(o),c.basis1,c),b(c.basis1,c.basis1,r/2),b(c.basis2,c.basis2,s/2),G(c),c):(n.getLogger("esri.views.3d.analysis.Slice.sliceToolUtils").error(`Failed to project slice plane position, projection from ${e.spatialReference.wkid} is not supported`),null)}function ut(e,t){if(null==e||null==e.position)return null;const n=me(e.position,t.spatialReference,t.elevationProvider);if(null==n)return null;const o=Ae.renderUnitScaleFactor(e.position.spatialReference,t.spatialReference),i=e.width*o,r=e.height*o;return{position:n,heading:e.heading,tilt:e.tilt,renderWidth:i,renderHeight:r}}function dt(e,t,n,o=y()){const i=ut(e,t);return null==i?null:mt(i,t,n,o)}function mt(e,t,n,o=y()){if(null==e)return null;const i=lt(e.position,e.heading,e.tilt,e.renderWidth,e.renderHeight,t.renderCoordsHelper,o);return n.tiltEnabled||null==i||ye(i,t.renderCoordsHelper,i),i}!function(e){e[e.POSITIVE_X=0]="POSITIVE_X",e[e.POSITIVE_Y=1]="POSITIVE_Y",e[e.NEGATIVE_X=2]="NEGATIVE_X",e[e.NEGATIVE_Y=3]="NEGATIVE_Y"}(Ze||(Ze={}));const gt=_e.Custom1;var pt,ft;!function(e){e[e.HEADING=1]="HEADING",e[e.TILT=2]="TILT"}(pt||(pt={})),function(e){e[e.HORIZONTAL_OR_VERTICAL=0]="HORIZONTAL_OR_VERTICAL",e[e.HORIZONTAL=1]="HORIZONTAL",e[e.VERTICAL=2]="VERTICAL",e[e.TILTED=3]="TILTED"}(ft||(ft={}));const bt=_e.Custom2,ht=H(),Tt=Math.PI/2,wt=_e.Custom1,At=_e.Custom2;var Ot;function Rt(e){return null!=("building-scene-3d"===e.type?e:null)}!function(e){e[e.CENTER_ON_CALLOUT=0]="CENTER_ON_CALLOUT",e[e.CENTER_ON_ARROW=1]="CENTER_ON_ARROW"}(Ot||(Ot={}));export{gt as DidPointerMoveRecentlyFlag,bt as IsShiftEdgeOnScreenFlag,Ot as OffsetMode,pt as RotationAxis,ft as SliceOrientation,rt as addArrowTips,De as calculateBoundedPlaneTranslateRotate,$e as calculateDiagonalResizeHandleScale,Ge as calculatePlaneHalfSize,ze as calculateResizeHandlePadding,qe as calculateScreenSpaceBasisLength2,tt as createGridVisualElement,et as createOutlineVisualElement,Ne as createPlane,nt as createResizeManipulator,Qe as createRotateManipulator,He as createRotatePlane,Ke as createShiftManipulator,ke as createShiftPlane,ye as forceHorizontalOrVertical,Je as isDiagonalResizeHandle,Rt as isIBuildingSceneLayerView3D,Ve as normalToBases,at as planeToExtent,st as planeToShape,ut as projectAndElevationAlignShape,mt as projectedShapeToPlane,wt as resizeNormal,At as resizeOutlineOnly,Se as resizePlane,dt as shapeToPlane,Fe as updateResizeHandle,Xe as updateRotateHeadingHandle,Ye as updateRotateTiltHandle,Be as updateShiftRestartHandle};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../Color.js";import{
|
|
5
|
+
import e from"../../../Color.js";import{multiplyOpacity as n}from"../../../core/colorUtils.js";import"../../../core/has.js";import{destroyHandle as i}from"../../../core/handleUtils.js";import{h as t}from"../../../chunks/vec3.js";import{c as r}from"../../../chunks/vec3f64.js";import{projectVectorToVector as o}from"../../../geometry/projection.js";import{onTheGroundElevationInfo as a,absoluteHeightElevationInfo as l}from"../../../support/elevationInfoUtils.js";import{ExtendedLineVisualElement as s,ExtensionType as p}from"./visualElements/ExtendedLineVisualElement.js";import{ParallelLineVisualElement as c}from"./visualElements/ParallelLineVisualElement.js";import{PointVisualElement as d}from"./visualElements/PointVisualElement.js";import{RightAngleQuadVisualElement as u}from"./visualElements/RightAngleQuadVisualElement.js";import{DrapedRenderGroup as m}from"../layers/interfaces.js";import{RenderOccludedFlag as g}from"../webgl-engine/lib/Material.js";import{defaults as f}from"../../interactive/snapping/Settings.js";import{SnappingDomain as v}from"../../interactive/snapping/SnappingDomain.js";import{snappingPointToDehydratedPoint as h,createSnappingPoint as E}from"../../interactive/snapping/SnappingPoint.js";import{LineSegmentHintType as C}from"../../interactive/snapping/snappingUtils.js";import{SnappingVisualizer as S}from"../../interactive/snapping/SnappingVisualizer.js";import{LineSnappingHint as w}from"../../interactive/snapping/hints/LineSnappingHint.js";import{vectorToRender as j}from"../../interactive/support/viewUtils.js";class O extends S{sortUniqueHints(e){return e.sort(((e,n)=>(n instanceof w?n.length:0)-(e instanceof w?e.length:0)))}visualizeIntersectionPoint(e,n){const{spatialReference:t,view:r}=n,o=D(n);return i(new d({view:r,primitive:"circle",geometry:h(e.intersectionPoint,t),elevationInfo:e.isDraped?a:l,size:20,outlineSize:2,color:o.intersectionPointColor,outlineColor:o.intersectionPointOutlineColor,pixelSnappingEnabled:!1,isDecoration:!0,attached:!0}))}visualizePoint(e,n){const{view:t,spatialReference:r}=n,o=D(n),a=R(e.point,e.domain,n);return i(new d({view:t,primitive:"circle",geometry:h(a,r),elevationInfo:A(e,n),size:20,outlineSize:2,color:o.pointColor,outlineColor:o.pointOutlineColor,pixelSnappingEnabled:!1,isDecoration:!0,attached:!0}))}visualizeLine(e,n){const{view:t,spatialReference:r}=n,o=D(n),a=R(e.lineStart,e.domain,n),l=R(e.lineEnd,e.domain,n);return i(this._createLineSegmentHint(e.type,a,l,r,A(e,n),t,o,e.isDraped,e.fadeLeft,e.fadeRight))}visualizeParallelSign(e,n){const{view:r,spatialReference:o}=n,a=D(n),{isDraped:l}=e,s=A(e,n),p=R(e.lineStart,e.domain,n),d=R(e.lineEnd,e.domain,n),u=x(p,o,s,r,l),v=x(d,o,s,r,l),h=t(v,u,v,.5),E=new c({view:r,attached:!1,offset:f.parallelLineHintOffset,length:f.parallelLineHintLength,width:f.parallelLineHintWidth,color:a.parallelSignColor,location:h,renderOccluded:l?g.OccludeAndTransparent:g.Opaque,isDraped:l,renderGroup:m.SnappingHint,isDecoration:!0});return E.setDirectionFromPoints(u,h),E.attached=!0,i(E)}visualizeRightAngleQuad(e,n){const{view:t,spatialReference:r}=n,o=D(n),a=A(e,n),{isDraped:l}=e,s=R(e.previousVertex,e.domain,n),p=R(e.centerVertex,e.domain,n),c=R(e.nextVertex,e.domain,n),d=x(s,r,a,t,l),v=x(p,r,a,t,l),h=x(c,r,a,t,l);return i(new u({view:t,attached:!0,color:l?o.rightAngleColorDraped:o.rightAngleColor,renderOccluded:l?g.OccludeAndTransparent:g.Transparent,outlineRenderOccluded:l?g.OccludeAndTransparent:g.Opaque,outlineColor:o.rightAngleOutlineColor,outlineSize:f.rightAngleHintOutlineSize,size:f.rightAngleHintSize,isDraped:l,geometry:{previous:d,center:v,next:h},renderGroup:m.SnappingHint,isDecoration:!0}))}_createLineSegmentHint(e,n,i,t,r,o,a,l=!1,c=!0,d=!0){const u=x(n,t,r,o,l),v=x(i,t,r,o,l),h=new s({view:o,extensionType:p.FADED,start:u,end:v,isDraped:l,color:a.lineColor,renderOccluded:l?g.OccludeAndTransparent:g.Opaque,renderGroup:m.SnappingHint,isDecoration:!0});switch(e){case C.TARGET:h.width=f.lineHintWidthTarget,h.fadedExtensions={start:0,end:f.lineHintFadedExtensions};break;case C.REFERENCE_EXTENSION:h.width=f.lineHintWidthReference,h.fadedExtensions={start:0,end:0};break;case C.REFERENCE:h.width=f.lineHintWidthReference,h.fadedExtensions={start:c?f.lineHintFadedExtensions:0,end:d?f.lineHintFadedExtensions:0}}return h.attached=!0,h}}function D(i){const{effectiveTheme:t}=i.view,r=e.toUnitRGBA(t.accentColor),o=[0,0,0,0];return{intersectionPointColor:o,intersectionPointOutlineColor:r,pointColor:o,pointOutlineColor:r,lineColor:r,lineOutlineColor:void 0,parallelSignColor:r,rightAngleColor:r,rightAngleColorDraped:e.toUnitRGBA(n(t.accentColor,.5)),rightAngleOutlineColor:r}}function R(e,n,i){const t=H(n,i);return null==t?e:E(e[0],e[1],t)}function A(e,n){return null!=H(e.domain,n)?n.selfSnappingZ.elevationInfo:e.isDraped?a:l}function H(e,{selfSnappingZ:n}){return e===v.SELF&&null!=n?n.value:null}function x(e,n,i,t,a,l=r()){if(a){const i=t.basemapTerrain.overlayManager.renderer.spatialReference;o(e,n,l,i)}else j(e,n,i,t,l);return l}export{O as SnappingVisualizer3D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../../chunks/tslib.es6.js";import{handlesGroup as
|
|
5
|
+
import{_ as e}from"../../../../../chunks/tslib.es6.js";import{unitRGBAFromColor as t}from"../../../../../core/colorUtils.js";import{handlesGroup as i,makeHandle as r}from"../../../../../core/handleUtils.js";import{destroyMaybe as s}from"../../../../../core/maybe.js";import{watch as n,when as a,syncAndInitial as o}from"../../../../../core/reactiveUtils.js";import{property as l}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{subclass as c}from"../../../../../core/accessorSupport/decorators/subclass.js";import{s as p}from"../../../../../chunks/vec3.js";import{c as h}from"../../../../../chunks/vec3f64.js";import{getEffectiveElevationInfo as m,getEffectiveElevationMode as u}from"../../../../../support/elevationInfoUtils.js";import d from"../../../../../symbols/support/ElevationInfo.js";import{SegmentLabels3D as v}from"../../SegmentLabels3D.js";import{SnappingVisualizer3D as f}from"../../SnappingVisualizer3D.js";import{meshTransformFastUpdateHandles as V}from"../meshFastUpdateUtils.js";import{getSettings as y}from"../settings.js";import{ExtendedLineVisualElement as E}from"../../visualElements/ExtendedLineVisualElement.js";import{OutlineVisualElement as w}from"../../visualElements/OutlineVisualElement.js";import{VerticesVisualElement as g}from"../../visualElements/VerticesVisualElement.js";import{evaluateElevationAlignmentAtPoint as _}from"../../../layers/graphics/elevationAlignmentUtils.js";import{ElevationContext as j}from"../../../layers/graphics/ElevationContext.js";import{GraphicState as G}from"../../../layers/graphics/GraphicState.js";import{RenderOccludedFlag as S}from"../../../webgl-engine/lib/Material.js";import{DrawGraphicTool as D,geometryTypeToDrawOperationGeometryType as I}from"../../../../draw/DrawGraphicTool.js";import{DrawOperation as L}from"../../../../draw/DrawOperation.js";import{SceneDrawSurface as T,ElevationDrawSurface as O}from"../../../../draw/drawSurfaces.js";let x=class extends D{constructor(e){super(e),this._activeVertexVisualElement=null,this._createGraphicState=null,this._outlineVisualElement=null,this._verticesVisualElement=null,this._verticalLineVisualElement=null,this.geometryType=null,this.type="draw-3d"}initialize(){const{mode:e,offset:t}=this.elevationInfo;this.internalGraphicsLayer.elevationInfo=new d({mode:e,offset:t})}normalizeCtorArgs(e){if(!e.elevationInfo){const t=e.hasZ??!0;return{...e,elevationInfo:m(t)}}return e}initializeGraphic(e){const{view:t}=this,r=this._createGraphicState=new G({graphic:e});return i([t.maskOccludee(e),t.trackGraphicState(r),n((()=>({element:this._outlineVisualElement,isDraped:r.isDraped})),(({element:e,isDraped:t})=>{e&&(e.isDraped=t)}),o),this._setupLoadingIndicator(r),...V(r)])}makeDrawOperation(){const{geometryType:e}=this,t="circle"!==e&&"rectangle"!==e;return new L({view:this.view,manipulators:this.manipulators,geometryType:I(e),drawingMode:this.mode,hasZ:this.hasZ,defaultZ:this.defaultZ,snapToSceneEnabled:this.snapToScene,drawSurface:new T(this.view,this.elevationInfo,[this.internalGraphicsLayer]),elevationDrawSurface:new O(this.elevationInfo,this.defaultZ,this.view,this.internalGraphicsLayer),hasM:!1,elevationInfo:this.elevationInfo,snappingManager:this.snappingManager,snappingVisualizer:new f,segmentLabels:t?new v:null,labelOptions:this.labelOptions,tooltipOptions:this.tooltipOptions,isDraped:this._createGraphicState?this._createGraphicState.isDraped:"on-the-ground"===u(this.hasZ,this.elevationInfo)})}onActiveVertexChanged(e){const{view:i}=this,n=y(i.effectiveTheme);if(this._activeVertexVisualElement)return this._activeVertexVisualElement.vertices=[e],this._updateVerticalLineVisualElement(e),r();const a=n.manipulators,o=a.vertex;this._activeVertexVisualElement=new g({view:i,spatialReference:i.spatialReference,vertices:[e],elevationInfo:this.internalGraphicsLayer.elevationInfo,color:t(o.color),size:o.size,outlineColor:t(o.outlineColor),outlineSize:o.outlineSize,renderOccluded:o.renderOccluded,attached:!1,isDecoration:!0}),this._activeVertexVisualElement.color=t(a.selected.color),this._activeVertexVisualElement.attached=!0;const l=n.visualElements.zVerticalLine;return this._verticalLineVisualElement=new E({view:i,extensionType:l.extensionType,innerWidth:1,attached:!1,writeDepthEnabled:!1,renderOccluded:S.OccludeAndTransparent,isDecoration:!0}),l.apply(this._verticalLineVisualElement),r((()=>{this._activeVertexVisualElement=s(this._activeVertexVisualElement),this._verticalLineVisualElement=s(this._verticalLineVisualElement)}))}_updateVerticalLineVisualElement(e){const t=this._verticalLineVisualElement;if(!t)return;const{renderCoordsHelper:i,elevationProvider:r}=this.view;p(b,e[0],e[1],e[2]),z.setFromElevationInfo(this.elevationInfo),b[2]=_(b,r,z,i);i.toRenderCoords(b,this.view.spatialReference,b)?(t.setStartEndFromWorldDownAtLocation(b),t.attached=!0):t.attached=!1}onOutlineChanged(e){if(this._outlineVisualElement)return this._outlineVisualElement.geometry=e,r();const t=this.internalGraphicsLayer.elevationInfo,{view:i}=this,n=y(i.effectiveTheme);return this._outlineVisualElement=new w({view:i,geometry:e,elevationInfo:t,isDraped:this._createGraphicState?this._createGraphicState.isDraped:"on-the-ground"===u(this.hasZ,t),attached:!1,isDecoration:!0}),n.visualElements.lineGraphics.outline.apply(this._outlineVisualElement),n.visualElements.lineGraphics.shadowStyle.apply(this._outlineVisualElement),this._outlineVisualElement.attached=!0,this._outlineVisualElement.laserlineEnabled=!0,r((()=>{this._outlineVisualElement=s(this._outlineVisualElement)}))}onRegularVerticesChanged(e){if(this._verticesVisualElement)return this._verticesVisualElement.vertices=e,r();const{view:i}=this,n=y(i.effectiveTheme).manipulators.vertex;return this._verticesVisualElement=new g({view:i,spatialReference:i.spatialReference,vertices:e,elevationInfo:this.internalGraphicsLayer.elevationInfo,color:t(n.color),size:n.size,outlineColor:t(n.outlineColor),outlineSize:n.outlineSize,renderOccluded:n.renderOccluded,attached:!1,isDecoration:!0}),this._verticesVisualElement.attached=!0,r((()=>{this._verticesVisualElement=s(this._verticesVisualElement)}))}_updateGraphicGeometry(e,t){if("mesh"===this.geometryType&&"point"===t?.type){const i=this.geometryToPlace;return i&&i.centerAt(t),void(i&&e.geometry===i?i.vertexSpace.isGeoreferenced?e.notifyGeometryChanged():e.notifyMeshTransformChanged():e.geometry=i)}super._updateGraphicGeometry(e,t)}_setupLoadingIndicator(e){const{drawOperation:t}=this;if(!this.geometryToPlace)return t.loading=!1,null;t.loading=!0;const s=r((()=>{t.loading=!1}));let n;const l=()=>n&&cancelAnimationFrame(n);return i([a((()=>e.displaying),(()=>{l(),n=requestAnimationFrame((()=>s.remove()))}),{...o,once:!0}),r(l),s])}};e([l({constructOnly:!0})],x.prototype,"elevationInfo",void 0),e([l({constructOnly:!0})],x.prototype,"geometryType",void 0),e([l()],x.prototype,"type",void 0),e([l({constructOnly:!0})],x.prototype,"view",void 0),x=e([c("esri.views.3d.interactive.editingTools.draw.DrawGraphicTool3D")],x);const z=new j,b=h();export{x as DrawGraphicTool3D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{removeHandles as e,handlesGroup as t,destroyHandle as n,refHandle as a}from"../../../../core/handleUtils.js";import{deg2rad as i}from"../../../../core/mathUtils.js";import{watch as o}from"../../../../core/reactiveUtils.js";import{s as r,a as l,g as s}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{getGraphicEffectiveElevationInfo as p}from"../../../../support/elevationInfoUtils.js";import{Manipulator3D as h}from"../Manipulator3D.js";import{GrabbingState as m}from"./GrabbingState.js";import{ManipulatorState as d}from"./ManipulatorState.js";import{ManipulatorType as u}from"./ManipulatorType.js";import{getSettings as g}from"./settings.js";import{ExtendedLineVisualElement as f}from"../visualElements/ExtendedLineVisualElement.js";import{LaserlineVisualElement as y}from"../visualElements/LaserlineVisualElement.js";import{OutlineVisualElement as v}from"../visualElements/OutlineVisualElement.js";import{GraphicState as E}from"../../layers/graphics/GraphicState.js";import{RenderOccludedFlag as w}from"../../webgl-engine/lib/Material.js";function b(t){const{view:n,graphic:a}=t,i=new E({graphic:a}),o=j(t,i),r=[o,S(t,o.visualElement,i),n.maskOccludee(a),n.trackGraphicState(i)];return{visualElement:o.visualElement,remove:()=>e(r)}}function j(e,a){const{view:i,graphic:r}=e,l=new v({view:i,geometry:
|
|
5
|
+
import{removeHandles as e,handlesGroup as t,destroyHandle as n,refHandle as a}from"../../../../core/handleUtils.js";import{deg2rad as i}from"../../../../core/mathUtils.js";import{watch as o}from"../../../../core/reactiveUtils.js";import{s as r,a as l,g as s}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{getGraphicEffectiveElevationInfo as p}from"../../../../support/elevationInfoUtils.js";import{Manipulator3D as h}from"../Manipulator3D.js";import{GrabbingState as m}from"./GrabbingState.js";import{ManipulatorState as d}from"./ManipulatorState.js";import{ManipulatorType as u}from"./ManipulatorType.js";import{getSettings as g}from"./settings.js";import{ExtendedLineVisualElement as f}from"../visualElements/ExtendedLineVisualElement.js";import{LaserlineVisualElement as y}from"../visualElements/LaserlineVisualElement.js";import{OutlineVisualElement as v}from"../visualElements/OutlineVisualElement.js";import{GraphicState as E}from"../../layers/graphics/GraphicState.js";import{RenderOccludedFlag as w}from"../../webgl-engine/lib/Material.js";function b(t){const{view:n,graphic:a}=t,i=new E({graphic:a}),o=j(t,i),r=[o,S(t,o.visualElement,i),n.maskOccludee(a),n.trackGraphicState(i)];return{visualElement:o.visualElement,remove:()=>e(r)}}function j(e,a){const{view:i,graphic:r}=e,l=new v({view:i,geometry:D(r)?r.geometry:null,elevationInfo:p(r),attached:!1,isDecoration:!0}),s=g(i.effectiveTheme).visualElements.lineGraphics;s.shadowStyle.apply(l);const c=()=>{l.attached=a.displaying};s.outline.apply(l);const h=t([o((()=>a.displaying),c),o((()=>a.isDraped),(e=>{l.isDraped=e})),a.on("changed",(()=>l.geometry=D(r)?r.geometry:null)),n(l)]);return c(),{visualElement:l,remove:()=>h.remove()}}function S(r,l,s){const{graphic:c,view:h}=r,u=[],v=p(c),E="on-the-ground"===v.mode||!v.offset&&"absolute-height"!==v.mode,b=new d,j=g(h.effectiveTheme).visualElements,S=new f({view:h,extensionType:j.zVerticalLine.extensionType,innerWidth:1,attached:!1,writeDepthEnabled:!1,renderOccluded:w.OccludeAndTransparent,isDecoration:!0});j.pointGraphics.shadowStyle.apply(S);const G=i(j.heightPlaneAngleCutoff),L=new y({view:h,attached:!1,angleCutoff:G,isDecoration:!0});j.heightPlane.apply(L);let A=1,C=1;const O=()=>{if(b.update(r),!s.displaying||E&&(s.isDraped||!D(c)||!c.geometry.hasZ))return l.laserlineEnabled=!1,S.attached=!1,void(L.attached=!1);l.laserlineEnabled=!0;const e=b.grabbingState&m.XY?j.laserlineAlphaMultiplier:1;e!==A&&(A=e,j.lineGraphics.shadowStyle.apply(l,e),j.pointGraphics.shadowStyle.apply(S,e));const t=b.grabbingState&m.Z?j.laserlineAlphaMultiplier:1;t!==C&&(C=t,j.heightPlane.apply(L,t)),M(S,b),T(r,l,L,b)};j.zVerticalLine.apply(S),u.push(s.on("changed",O),o((()=>s.displaying),O),l.events.on("attachment-origin-changed",O),n(S),n(L));const V=[],k=()=>{e(V),V.length=0,r.forEachManipulator((e=>V.push(e.events.on("grab-changed",O)))),r.forEachManipulator((e=>V.push(e.events.on("select-changed",O)))),O()};return k(),u.push(r.onManipulatorsChanged(k),a((()=>t(V)))),t(u)}function M(e,t){const n=1===t.numSelected?t.firstSelected:t.numSelected>1&&null!=t.firstGrabbedXY?t.firstGrabbedXY:null;null!=n?(e.setStartEndFromWorldDownAtLocation(n.renderLocation),e.attached=!0):e.attached=!1}function T(e,t,n,a){if(a.numSelected>0){r(G,0,0,0);let t=0;e.forEachManipulator(((e,n)=>{n===u.TRANSLATE_XY&&e.selected&&e instanceof h&&(l(G,G,e.renderLocation),t++)})),t>0?(n.heightManifoldTarget=s(G,G,1/t),n.attached=!0):n.attached=!1}else{const a=t.attachmentOrigin;null!=a&&e.view.renderCoordsHelper.toRenderCoords(a,G)?(n.heightManifoldTarget=G,n.attached=!0):n.attached=!1}}function D(e){return null!=e.geometry&&("polygon"===e.geometry.type||"polyline"===e.geometry.type)}const G=c();export{b as createVisualElements};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../../Color.js";import a from"../../../../../core/Evented.js";import r from"../../../../../core/Handles.js";import{handlesGroup as e}from"../../../../../core/handleUtils.js";import{destroyMaybe as i}from"../../../../../core/maybe.js";import{f as o,b as s,m as n,d as l,E as p}from"../../../../../chunks/mat4.js";import{c as u}from"../../../../../chunks/mat4f64.js";import{s as h}from"../../../../../chunks/vec3.js";import{f as c}from"../../../../../chunks/vec3f64.js";import{sv3d as m,sm4d as f}from"../../../../../geometry/support/vectorStacks.js";import{getGraphicEffectiveElevationInfo as d}from"../../../../../support/elevationInfoUtils.js";import{Manipulator3D as _}from"../../Manipulator3D.js";import{RenderObject as g}from"../../RenderObject.js";import{screenToMapXYAtLocation as M}from"../dragEventPipeline3D.js";import{ManipulatorType as w}from"../ManipulatorType.js";import{getSettings as
|
|
5
|
+
import t from"../../../../../Color.js";import a from"../../../../../core/Evented.js";import r from"../../../../../core/Handles.js";import{handlesGroup as e}from"../../../../../core/handleUtils.js";import{destroyMaybe as i}from"../../../../../core/maybe.js";import{f as o,b as s,m as n,d as l,E as p}from"../../../../../chunks/mat4.js";import{c as u}from"../../../../../chunks/mat4f64.js";import{s as h}from"../../../../../chunks/vec3.js";import{f as c}from"../../../../../chunks/vec3f64.js";import{sv3d as m,sm4d as f}from"../../../../../geometry/support/vectorStacks.js";import{getGraphicEffectiveElevationInfo as d}from"../../../../../support/elevationInfoUtils.js";import{Manipulator3D as _}from"../../Manipulator3D.js";import{RenderObject as g}from"../../RenderObject.js";import{screenToMapXYAtLocation as M}from"../dragEventPipeline3D.js";import{ManipulatorType as w}from"../ManipulatorType.js";import{getSettings as v}from"../settings.js";import{DISC_RADIUS as j,DISC_TRANSLATE_ARROW_OFFSET as A,DISC_HEIGHT as b,DISC_TRANSLATE_ARROW_SIZE as y}from"./config.js";import{Manipulation as I}from"./Manipulation.js";import{createGraphicMoveDragPipeline as T}from"./moveUtils.js";import{CullFaceOptions as D}from"../../../webgl-engine/lib/basicInterfaces.js";import{createExtrudedTriangle as E,transformInPlace as S}from"../../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as x}from"../../../webgl-engine/lib/Material.js";import{ColorMaterial as P}from"../../../webgl-engine/materials/ColorMaterial.js";import{createManipulatorDragEventPipeline as k,dragAtLocation as R,constrainToMapAxis as U,addScreenDelta as O}from"../../../../interactive/dragEventPipeline.js";import{ManipulatorStateFlags as L}from"../../../../interactive/interfaces.js";class q extends I{constructor(t){super(),this._handles=new r,this._arrowManipulatorInfos=new Array,this._angle=0,this._scale=1,this._radius=j,this._updateAfterDrag=!1,this.events=new a,this._tool=t.tool,this._view=t.view,this._opaqueMaterial=this._createMaterial(),this._transparentMaterial=this._createMaterial(.5),null!=t.radius&&(this._radius=t.radius),this._createManipulators(),this.forEachManipulator((t=>this._tool.manipulators.add(t)))}set orthogonalAvailable(t){this._arrowManipulatorInfos.length>=3&&(this._arrowManipulatorInfos[1].manipulator.available=t,this._arrowManipulatorInfos[3].manipulator.available=t)}destroy(){this._handles=i(this._handles),this.forEachManipulator((t=>{this._tool.manipulators.remove(t),t.destroy()})),this._tool=null,this._view=null,this._arrowManipulatorInfos.length=0}forEachManipulator(t){for(const{manipulator:a}of this._arrowManipulatorInfos)t(a,w.TRANSLATE_XY)}createGraphicDragPipeline(t,a,r){const e=a.graphic,i=d(e),o=e.geometry.spatialReference;return T(a,r,(a=>this.createDragPipeline(((r,e,i,o,s)=>(({steps:e,cancel:i}=t(r,e,i,o,s)),a(r,e,i))),i,o,e)),this._view.state.viewingMode)}createDragPipeline(t,a,r,i){return e(this._arrowManipulatorInfos.map((({manipulator:e},o)=>k(e,((e,s,n,l,p)=>{const u=s.next((t=>({...t,manipulatorType:w.TRANSLATE_XY}))).next(R(this._view,e.elevationAlignedLocation)).next(M(this._view,e.elevationAlignedLocation,a,r,i)).next(U(e.location,this.angle+(o+1)*Math.PI*.5)).next(O());t(e,u,n,l,p)})))))}get angle(){return this._angle}set angle(t){this._angle=t,this.dragging?this._updateAfterDrag=!0:this._updateManipulatorTransform()}get displayScale(){return this._scale}set displayScale(t){this._scale=t,this._updateManipulatorTransform()}get radius(){return this._radius}set radius(t){this._radius!==t&&(this._radius=t,this._updateManipulators())}_updateManipulators(){for(let t=0;t<this._arrowManipulatorInfos.length;t++)this._updateArrowManipulator(this._arrowManipulatorInfos[t],t);this._updateManipulatorTransform()}_updateArrowManipulator({manipulator:t,transform:a},r){const e=this._radius/j,i=y*e,l=i*Math.sqrt(3)/2,p=E(this._opaqueMaterial,l,i/2,i/2,b);S(p,o(f.get(),h(m.get(),0,-l/3,0))),t.renderObjects=[new g(p,L.Focused),new g(p.instantiate({material:this._transparentMaterial}),L.Unfocused)],t.radius=l/3*2*1.2;const u=s(f.get(),r*Math.PI/2),c=o(f.get(),h(m.get(),0,A*e,0));n(a,u,c)}_createManipulators(){for(let t=0;t<4;t++){const a=this._createArrowManipulator(t);this._arrowManipulatorInfos.push(a)}this._updateManipulatorTransform()}_updateManipulatorTransform(){const t=this.angle,a=l(f.get(),t,c(0,0,1));if(null==a)return;const r=p(f.get(),h(m.get(),this.displayScale,this.displayScale,this.displayScale)),e=n(f.get(),r,a);for(const i of this._arrowManipulatorInfos){const t=n(f.get(),e,i.transform);i.manipulator.modelTransform=t}}_createArrowManipulator(t){const a=new _({view:this._view,autoScaleRenderObjects:!1,worldOriented:!0,focusMultiplier:1,touchMultiplier:1,collisionType:{type:"disc",direction:c(0,0,1)}}),r={manipulator:a,transform:u()};return this._updateArrowManipulator(r,t),this._handles.add(a.events.on("drag",(t=>{this._updateAfterDrag&&"end"===t.action&&!this.dragging&&(this._updateManipulatorTransform(),this._updateAfterDrag=!1)}))),r}_createMaterial(a=1){const r=v(this._view.effectiveTheme),e=t.toUnitRGBA(r.colors.accent);return e[3]*=a,new P({color:e,transparent:1!==a,cullFace:D.Back,renderOccluded:x.Transparent,isDecoration:!0})}get test(){return{arrowManipulators:this._arrowManipulatorInfos.map((({manipulator:t})=>t))}}}export{q as MoveXYAxisManipulation};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../../Color.js";import{E as e}from"../../../../../chunks/mat4.js";import{c as i}from"../../../../../chunks/mat4f64.js";import{s as a}from"../../../../../chunks/vec3.js";import{f as r}from"../../../../../chunks/vec3f64.js";import{sv3d as s,sm4d as o}from"../../../../../geometry/support/vectorStacks.js";import{getGraphicEffectiveElevationInfo as n}from"../../../../../support/elevationInfoUtils.js";import{Manipulator3D as l}from"../../Manipulator3D.js";import{RenderObject as p}from"../../RenderObject.js";import{screenToMapXYAtLocation as c}from"../dragEventPipeline3D.js";import{ManipulatorType as u}from"../ManipulatorType.js";import{getSettings as m}from"../settings.js";import{DISC_RADIUS as h,GEOMETRY_SEGMENTS as d,DISC_HEIGHT as _,DISC_COLLISION_RADIUS as f}from"./config.js";import{Manipulation as g}from"./Manipulation.js";import{createGraphicMoveDragPipeline as M}from"./moveUtils.js";import{SnapToScene as j}from"../snapping/SnapToScene.js";import{CullFaceOptions as T}from"../../../webgl-engine/lib/basicInterfaces.js";import{createCylinderGeometry as v}from"../../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as S}from"../../../webgl-engine/lib/Material.js";import{ColorMaterial as w}from"../../../webgl-engine/materials/ColorMaterial.js";import{createManipulatorDragEventPipeline as y,dragAtLocation as b,addScreenDelta as E}from"../../../../interactive/dragEventPipeline.js";import{ManipulatorStateFlags as x}from"../../../../interactive/interfaces.js";class A extends g{constructor(t){super(),this._snapToScene=new j,this.
|
|
5
|
+
import t from"../../../../../Color.js";import{E as e}from"../../../../../chunks/mat4.js";import{c as i}from"../../../../../chunks/mat4f64.js";import{s as a}from"../../../../../chunks/vec3.js";import{f as r}from"../../../../../chunks/vec3f64.js";import{sv3d as s,sm4d as o}from"../../../../../geometry/support/vectorStacks.js";import{getGraphicEffectiveElevationInfo as n}from"../../../../../support/elevationInfoUtils.js";import{Manipulator3D as l}from"../../Manipulator3D.js";import{RenderObject as p}from"../../RenderObject.js";import{screenToMapXYAtLocation as c}from"../dragEventPipeline3D.js";import{ManipulatorType as u}from"../ManipulatorType.js";import{getSettings as m}from"../settings.js";import{DISC_RADIUS as h,GEOMETRY_SEGMENTS as d,DISC_HEIGHT as _,DISC_COLLISION_RADIUS as f}from"./config.js";import{Manipulation as g}from"./Manipulation.js";import{createGraphicMoveDragPipeline as M}from"./moveUtils.js";import{SnapToScene as j}from"../snapping/SnapToScene.js";import{CullFaceOptions as T}from"../../../webgl-engine/lib/basicInterfaces.js";import{createCylinderGeometry as v}from"../../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as S}from"../../../webgl-engine/lib/Material.js";import{ColorMaterial as w}from"../../../webgl-engine/materials/ColorMaterial.js";import{createManipulatorDragEventPipeline as y,dragAtLocation as b,addScreenDelta as E}from"../../../../interactive/dragEventPipeline.js";import{ManipulatorStateFlags as x}from"../../../../interactive/interfaces.js";class A extends g{constructor(t){super(),this._snapToScene=new j,this._scale=1,this._radius=h,this._view=t.view,this._tool=t.tool,this._discMaterial=this._createMaterial(),this._discMaterialTransparent=this._createMaterial(.5),null!=t.snapToScene&&(this.snapToScene=t.snapToScene),null!=t.radius&&(this._radius=t.radius),this._createManipulator(),this.forEachManipulator((t=>this._tool.manipulators.add(t)))}destroy(){this.forEachManipulator((t=>{this._tool.manipulators.remove(t),t.destroy()})),this._tool=null,this._view=null,this._manipulator=null}forEachManipulator(t){t(this._manipulator,u.TRANSLATE_XY)}get displayScale(){return this._scale}set displayScale(t){this._scale=t,this._updateManipulatorTransform()}get snapToScene(){return this._snapToScene.enabled}set snapToScene(t){this._snapToScene.enabled=t}get radius(){return this._radius}set radius(t){t!==this._radius&&(this._radius=t,this._updateManipulator())}createGraphicDragPipeline(t,e,i){const a=e.graphic,r=n(a),s=a.geometry.spatialReference;return M(e,i,(e=>this.createDragPipeline(((i,a,r,s,o)=>(({steps:a,cancel:r}=t(i,a,r,s,o)),e(i,a,r))),r,s,a)),this._view.state.viewingMode)}createDragPipeline(t,e,i,a){const r=this._view;return y(this._manipulator,((s,o,n,l,p)=>{const m=o.next(b(r,s.elevationAlignedLocation)).next(c(r,s.elevationAlignedLocation,e,i,a)).next(...this._snapToScene.createDragEventPipelineStep(r,e)).next((t=>({...t,manipulatorType:u.TRANSLATE_XY}))).next(E());t(s,m,n,l,p)}))}_updateManipulatorTransform(){const t=e(o.get(),a(s.get(),this.displayScale,this.displayScale,this.displayScale));this._manipulator.modelTransform=t}_createManipulator(){const t=this._view;this._manipulator=new l({view:t,worldSized:!1,autoScaleRenderObjects:!1,focusMultiplier:1,touchMultiplier:1,collisionType:{type:"disc",direction:r(0,0,1)},worldOriented:!0}),this._updateManipulator()}_updateManipulator(){const t=v(this._discMaterial,_,1,d,r(0,0,1),r(0,0,0));t.transformation=e(i(),r(this._radius,this._radius,this._radius)),this._manipulator.renderObjects=[new p(t,x.Focused),new p(t.instantiate({material:this._discMaterialTransparent}),x.Unfocused)],this._manipulator.radius=f*(this._radius/h)}_createMaterial(e=1){const i=m(this._view.effectiveTheme),a=t.toUnitRGBA(i.colors.accent);return a[3]*=e,new w({color:a,transparent:1!==e,cullFace:T.Back,renderOccluded:S.Transparent,isDecoration:!0})}get test(){return{discManipulator:this._manipulator}}}export{A as MoveXYDiscManipulation};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../../Color.js";import e from"../../../../../core/Evented.js";import{clamp as
|
|
5
|
+
import t from"../../../../../Color.js";import{darken as e}from"../../../../../core/colorUtils.js";import i from"../../../../../core/Evented.js";import{clamp as r}from"../../../../../core/mathUtils.js";import{w as a,r as o,k as s}from"../../../../../chunks/mat4.js";import{c as n}from"../../../../../chunks/mat4f64.js";import{j as l,b as p,n as c,e as u,f as m,g as d}from"../../../../../chunks/vec3.js";import{c as h,f}from"../../../../../chunks/vec3f64.js";import{Manipulator3D as _}from"../../Manipulator3D.js";import{createManipulatorMaterial as j}from"../../manipulatorUtils.js";import{RenderObject as w}from"../../RenderObject.js";import{screenToZConstrained as M}from"../dragEventPipeline3D.js";import{ManipulatorType as v}from"../ManipulatorType.js";import{getSettings as g}from"../settings.js";import{DISC_RADIUS as y}from"./config.js";import{Manipulation as b}from"./Manipulation.js";import{createGraphicMoveDragPipeline as z}from"./moveUtils.js";import{createTubeGeometry as T,createConeGeometry as U}from"../../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as O}from"../../../webgl-engine/lib/Material.js";import{createManipulatorDragEventPipeline as P,addScreenDelta as A}from"../../../../interactive/dragEventPipeline.js";import{ManipulatorStateFlags as E}from"../../../../interactive/interfaces.js";class R extends b{constructor(t){super(),this._radius=y,this.events=new i,this._tool=t.tool,this._view=t.view,null!=t.radius&&(this._radius=t.radius),this._createManipulator(),this.forEachManipulator((t=>this._tool.manipulators.add(t)))}destroy(){this._manipulator.applyObjectTransform=S,this.forEachManipulator((t=>{this._tool.manipulators.remove(t),t.destroy()}))}forEachManipulator(t){t(this._manipulator,v.TRANSLATE_Z)}createGraphicDragPipeline(t,e,i){const r=e.graphic.geometry.spatialReference;return z(e,i,(e=>this.createDragPipeline(((i,r,a,o,s)=>(({steps:r,cancel:a}=t(i,r,a,o,s)),e(i,r,a))),r)),this._view.state.viewingMode)}createDragPipeline(t,e){const i=this._view;return P(this._manipulator,((r,a,o,s,n)=>{const l=a.next((t=>({...t,manipulatorType:v.TRANSLATE_Z}))).next(M(i,r.renderLocation,e)).next(A());t(r,l,o,s,n)}))}get radius(){return this._radius}set radius(t){t!==this._radius&&(this._radius=t,this._updateManipulator())}_updateManipulator(){const i=this._radius/y,r=g(this._view.effectiveTheme),l=r.zManipulator.height*i,p=r.zManipulator.coneHeight*i,c=r.zManipulator.coneWidth*i,u=r.zManipulator.width*i,m=[f(0,0,0),f(0,0,l)],d=[f(0,0,0),f(0,0,l+p)],h=t=>{const e=n();if(a(e,e,[0,0,l]),o(e,e,Math.PI/2),t){const i=1+2*t/c;s(e,e,[i,i,i])}return e},_=h(0),M=(i,a)=>{const o=e(r.zManipulator.color,a);return o.a*=i,t.toUnitRGBA(o)},v=j(M(1,.25),O.Occlude),b=j(M(1,0),O.Occlude),z=j(M(.7,0),r.zManipulator.renderOccluded),P=j(M(.85,0),r.zManipulator.renderOccluded),A=T(v,m,u/2,16,!1),R=U(v,p,c/2,16,!1);R.transformation=_,this._manipulator.renderObjects=[new w(R,E.Unfocused),new w(A,E.Unfocused),new w(R.instantiate({material:b}),E.Focused),new w(A.instantiate({material:b}),E.Focused),new w(R.instantiate({material:z}),E.Unfocused),new w(A.instantiate({material:z}),E.Unfocused),new w(R.instantiate({material:P}),E.Focused),new w(A.instantiate({material:P}),E.Focused)],this._manipulator.radius=u/2+2,this._manipulator.collisionType={type:"line",paths:[d]}}_createManipulator(){const t=this._view,e=g(t.effectiveTheme),i=new _({view:t,autoScaleRenderObjects:!1,worldSized:!1,selectable:!1,cursor:"ns-resize",elevationInfo:this.elevationInfo,worldOriented:!0,collisionPriority:1.6});i.applyObjectTransform=i=>{const a=t.state.camera,o=x;t.renderCoordsHelper.toRenderCoords(this._manipulator.elevationAlignedLocation,o);const s=l(a.eye,o),n=a.computeRenderPixelSizeAtDist(s),h=p(D,o,a.eye);c(h,h);const f=k;t.renderCoordsHelper.worldUpAtPosition(x,f);const _=Math.abs(u(h,f)),j=m(D,h,f),w=m(D,j,f),M=r(_,.01,1),v=1-Math.sqrt(1-M*M)/M/a.fullWidth,g=this._radius/y,b=e.zManipulator.width*g;d(w,c(w,w),(1/v-1)*s+n*b),i[12]-=D[0],i[13]-=D[1],i[14]-=D[2]},this._manipulator=i,this._updateManipulator()}get test(){return{manipulator:this._manipulator}}}const x=h(),D=h(),k=h(),S=()=>{};export{R as MoveZManipulation};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{removeHandles as e,destroyHandle as t,refHandle as n}from"../../../../core/handleUtils.js";import{deg2rad as i}from"../../../../core/mathUtils.js";import{watch as o,initial as a}from"../../../../core/reactiveUtils.js";import{s as r}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{projectVectorToVector as l,projectPointToVector as p}from"../../../../geometry/projection.js";import{create as c,empty as m,getMin as u}from"../../../../geometry/support/aaBoundingBox.js";import{containsXY as h}from"../../../../geometry/support/aaBoundingRect.js";import{getGraphicEffectiveElevationInfo as d}from"../../../../support/elevationInfoUtils.js";import{GrabbingState as f}from"./GrabbingState.js";import{ManipulatorState as g}from"./ManipulatorState.js";import{getSettings as v}from"./settings.js";import{ExtendedLineVisualElement as y}from"../visualElements/ExtendedLineVisualElement.js";import{LaserlineVisualElement as E}from"../visualElements/LaserlineVisualElement.js";import{PointVisualElement as j}from"../visualElements/PointVisualElement.js";import{evaluateElevationAlignmentAtPoint as w}from"../../layers/graphics/elevationAlignmentUtils.js";import{ElevationContext as b}from"../../layers/graphics/ElevationContext.js";import{GraphicState as D}from"../../layers/graphics/GraphicState.js";import{RenderOccludedFlag as S}from"../../webgl-engine/lib/Material.js";function x(t){const{view:n,graphic:i}=t,o=new D({graphic:i}),a=[],r=L(t,o,a);return A(t,o,a,r),a.push(n.trackGraphicState(o)),{visualElement:r,remove:()=>e(a)}}function A(e,n,a,s){const{view:p,graphic:c}=e,h=v(p),j=new y({view:p,extensionType:h.visualElements.zVerticalLine.extensionType,innerWidth:1,attached:!1,writeDepthEnabled:!1,renderOccluded:S.OccludeAndTransparent,isDecoration:!0});h.visualElements.zVerticalLine.apply(j);const D=new E({view:p,intersectsLineInfinite:!0,attached:!1,isDecoration:!0});h.visualElements.pointGraphics.shadowStyle.apply(D);const x=i(h.visualElements.heightPlaneAngleCutoff),A=new E({view:p,attached:!1,angleCutoff:x,isDecoration:!0});h.visualElements.heightPlane.apply(A);const L=d(e.graphic),P=b.fromElevationInfo(L),C="on-the-ground"===L.mode||!L.offset&&"absolute-height"!==L.mode,G=new g;let
|
|
5
|
+
import{removeHandles as e,destroyHandle as t,refHandle as n}from"../../../../core/handleUtils.js";import{deg2rad as i}from"../../../../core/mathUtils.js";import{watch as o,initial as a}from"../../../../core/reactiveUtils.js";import{s as r}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{projectVectorToVector as l,projectPointToVector as p}from"../../../../geometry/projection.js";import{create as c,empty as m,getMin as u}from"../../../../geometry/support/aaBoundingBox.js";import{containsXY as h}from"../../../../geometry/support/aaBoundingRect.js";import{getGraphicEffectiveElevationInfo as d}from"../../../../support/elevationInfoUtils.js";import{GrabbingState as f}from"./GrabbingState.js";import{ManipulatorState as g}from"./ManipulatorState.js";import{getSettings as v}from"./settings.js";import{ExtendedLineVisualElement as y}from"../visualElements/ExtendedLineVisualElement.js";import{LaserlineVisualElement as E}from"../visualElements/LaserlineVisualElement.js";import{PointVisualElement as j}from"../visualElements/PointVisualElement.js";import{evaluateElevationAlignmentAtPoint as w}from"../../layers/graphics/elevationAlignmentUtils.js";import{ElevationContext as b}from"../../layers/graphics/ElevationContext.js";import{GraphicState as D}from"../../layers/graphics/GraphicState.js";import{RenderOccludedFlag as S}from"../../webgl-engine/lib/Material.js";function x(t){const{view:n,graphic:i}=t,o=new D({graphic:i}),a=[],r=L(t,o,a);return A(t,o,a,r),a.push(n.trackGraphicState(o)),{visualElement:r,remove:()=>e(a)}}function A(e,n,a,s){const{view:p,graphic:c}=e,h=v(p.effectiveTheme),j=new y({view:p,extensionType:h.visualElements.zVerticalLine.extensionType,innerWidth:1,attached:!1,writeDepthEnabled:!1,renderOccluded:S.OccludeAndTransparent,isDecoration:!0});h.visualElements.zVerticalLine.apply(j);const D=new E({view:p,intersectsLineInfinite:!0,attached:!1,isDecoration:!0});h.visualElements.pointGraphics.shadowStyle.apply(D);const x=i(h.visualElements.heightPlaneAngleCutoff),A=new E({view:p,attached:!1,angleCutoff:x,isDecoration:!0});h.visualElements.heightPlane.apply(A);const L=d(e.graphic),P=b.fromElevationInfo(L),C="on-the-ground"===L.mode||!L.offset&&"absolute-height"!==L.mode,G=new g;let U=1,V=1;const B=()=>{G.update(e);const t=M(c),i=C&&(n.isDraped||null==t||!t.hasZ);let o=!0;if(i||null==t)o=!1;else{const e=w(t,p.elevationProvider,P,p.renderCoordsHelper);r(R,t.x,t.y,e),l(R,t.spatialReference,R,p.renderCoordsHelper.spatialReference),j.setStartEndFromWorldDownAtLocation(R),D.intersectsWorldUpAtLocation=R}const a=G.grabbingState&f.Z?h.visualElements.laserlineAlphaMultiplier:1;a!==U&&(U=a,h.visualElements.heightPlane.apply(A,a));const d=m(T);!i&&n.displaying&&s.calculateMapBounds(d)&&l(u(d,R),p.spatialReference,R,p.renderCoordsHelper.spatialReference)?(A.heightManifoldTarget=R,A.attached=!0):A.attached=!1;const g=G.grabbingState&f.XY?h.visualElements.laserlineAlphaMultiplier:1;g!==V&&(V=g,h.visualElements.pointGraphics.shadowStyle.apply(D,g));const v=o&&n.displaying&&!i;D.attached=v,j.attached=v};a.push(o((()=>[n.displaying,n.isDraped]),B),n.on("changed",B)),e.forEachManipulator((e=>{a.push(e.events.on("grab-changed",B))})),a.push(t(D)),a.push(t(j)),a.push(t(A)),B()}function L(e,n,i){const{view:o,graphic:a}=e,r=new j({view:o,geometry:M(a),elevationInfo:d(a),isDecoration:!0});return P(e,r,n,i),i.push(t(r)),r}function M(e){const t=e.geometry;return null==t?null:"point"===t.type?t:"mesh"===t.type?t.anchor.clone():null}function P(e,t,n,i){const r=()=>t.attached=n.displaying;C(e,t,n,i),v(e.view.effectiveTheme).visualElements.pointGraphics.outline.apply(t),i.push(o((()=>n.displaying),r,a))}function C(e,t,i,o){const{view:a,graphic:r}=e;let s=null;const l=e=>{null!=s&&(s.remove(),s=null),i.isDraped&&null!=e&&(s=G(a,e,(()=>{t.geometry=e})))},p=()=>{const e=M(r);l(e),t.geometry=e};o.push(i.on("changed",p),n((()=>s))),p()}function G(e,t,n){const i=e.elevationProvider.spatialReference;p(t,R,i);const o=R[0],a=R[1];return e.elevationProvider.on("elevation-change",(e=>{h(e.extent,o,a)&&n()}))}const R=s(),T=c();export{x as createVisualElements};
|