@arcgis/core 6.0.0-next.29 → 6.0.0-next.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/WebDocument2D.js +1 -1
  2. package/WebMap.d.ts +3 -19
  3. package/WebMap.js +1 -1
  4. package/WebScene.js +1 -1
  5. package/arcgisGlobal.d.ts +1 -0
  6. package/assets/esri/core/workers/RemoteClient.js +1 -1
  7. package/assets/esri/core/workers/chunks/039d9bc5b5015012f811.js +1 -0
  8. package/assets/esri/core/workers/chunks/{b01688ccc29d33bfc82d.js → 28a821de9dbf10324033.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{d3c3fb079ad97970f834.js → 4fb2fcc95f852bf8f86c.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{84940d8e14caf5a27e04.js → 64b360625c68cb863a08.js} +1 -1
  11. package/assets/esri/core/workers/chunks/71f792a20077aa739f87.js +1 -0
  12. package/assets/esri/core/workers/chunks/{e480e7d5f40049a2053b.js → 7af4edc6e87d27b9d467.js} +1 -1
  13. package/assets/esri/core/workers/chunks/90c1d10eae7ae71889b0.js +1 -0
  14. package/assets/esri/core/workers/chunks/{8a485130781b49dbf608.js → 9d40786c5ceface786ba.js} +1 -1
  15. package/assets/esri/core/workers/chunks/aba259a70bee68d2edb7.js +1 -0
  16. package/assets/esri/core/workers/chunks/c33a9635c294c8774977.js +1 -0
  17. package/assets/esri/views/3d/environment/resources/milkyway-band.avif +0 -0
  18. package/chunks/GlobalIllumination.glsl.js +16 -10
  19. package/chunks/GlobalIlluminationBlur.glsl.js +14 -14
  20. package/chunks/GlobalIlluminationUpscale.glsl.js +4 -4
  21. package/chunks/RibbonLine.glsl.js +78 -75
  22. package/config.js +1 -1
  23. package/core/workers/WorkerHandle.js +1 -1
  24. package/kernel.js +1 -1
  25. package/layers/WMTSLayer.d.ts +1 -1
  26. package/layers/WMTSLayer.js +1 -1
  27. package/layers/mixins/TiledImagery.d.ts +7 -0
  28. package/layers/support/WMTSSublayer.d.ts +5 -5
  29. package/networks/Network.js +1 -1
  30. package/networks/support/TopologyValidationJobInfo.js +1 -1
  31. package/package.json +2 -2
  32. package/rest/networks/support/ValidateNetworkTopologyResult.js +1 -1
  33. package/support/timeUtils.js +1 -1
  34. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
  35. package/views/2d/layers/GeospatialPDFLayerView2D.js +1 -1
  36. package/views/2d/layers/SketchLayerView2D.js +1 -1
  37. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  38. package/views/2d/types.d.ts +2 -1
  39. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  40. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  41. package/views/3d/interactive/visualElements/Object3DVisualElement.js +1 -1
  42. package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
  43. package/views/3d/interactive/visualElements/StageObjectVisualElement.js +2 -0
  44. package/views/3d/layers/WMTSLayerView3D.js +1 -1
  45. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  46. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  47. package/views/3d/layers/graphics/Graphics3DBufferGraphicLayer.js +1 -1
  48. package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
  49. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  50. package/views/3d/layers/graphics/Graphics3DPathSymbolLayerConstants.js +1 -1
  51. package/views/3d/layers/graphics/Graphics3DStageObjectGraphicLayer.js +1 -1
  52. package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
  53. package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
  54. package/views/3d/layers/graphics/pointUtils.js +1 -1
  55. package/views/3d/terrain/ExtentHelper.js +1 -1
  56. package/views/3d/terrain/PatchGeometryFactory.js +1 -1
  57. package/views/3d/terrain/PatchRenderData.js +1 -1
  58. package/views/3d/terrain/SphericalPatch.js +1 -1
  59. package/views/3d/terrain/TerrainRenderer.js +1 -1
  60. package/views/3d/terrain/TerrainSurface.js +1 -1
  61. package/views/3d/terrain/Tile.js +1 -1
  62. package/views/3d/terrain/tileUtils.js +1 -1
  63. package/views/3d/types.d.ts +2 -1
  64. package/views/3d/webgl-engine/Stage.js +1 -1
  65. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexInfo.glsl.js +10 -11
  66. package/views/3d/webgl-engine/core/shaderLibrary/util/PackedUint32.glsl.js +2 -0
  67. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  68. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  69. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationBlur.glsl.js +1 -1
  70. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationUpscale.glsl.js +1 -1
  71. package/views/3d/webgl-engine/effects/globalIllumination/globalIlluminationUniforms.js +2 -0
  72. package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
  73. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  74. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  75. package/views/3d/webgl-engine/lib/PackedUint32.js +2 -0
  76. package/views/3d/webgl-engine/lib/PathGeometry.js +1 -1
  77. package/views/3d/webgl-engine/lib/PathVertexInfo.js +1 -1
  78. package/views/3d/webgl-engine/lib/RibbonLineVertexInfo.js +2 -0
  79. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  80. package/views/3d/webgl-engine/materials/HUDMaterialBaseInstance.js +1 -1
  81. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  82. package/views/3d/webgl-engine/materials/LineCalloutMaterialBaseInstance.js +1 -1
  83. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  84. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  85. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  86. package/views/3d/webgl-engine/parts/Model.js +1 -1
  87. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  88. package/views/3d/webgl-engine/shaders/RibbonLineLayouts.js +1 -1
  89. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  90. package/views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js +1 -1
  91. package/views/SelectionManager.d.ts +5 -5
  92. package/views/SelectionManager.js +1 -1
  93. package/views/input/InputManager.js +1 -1
  94. package/views/layers/WMTSLayerView.d.ts +16 -0
  95. package/views/layers/WMTSLayerView.js +2 -0
  96. package/views/layers/support/highlightUtils.js +1 -1
  97. package/views/selection/SelectionOperation.js +1 -1
  98. package/views/selection/types.d.ts +3 -3
  99. package/views/support/GeometryWorker.js +1 -1
  100. package/views/support/GeometryWorkerHandle.js +1 -1
  101. package/views/support/selectionUtils.js +1 -1
  102. package/webdoc/support/webdocLoadUtils.js +1 -1
  103. package/widgets/BatchAttributeForm/inputs/RelationshipElementInput.js +1 -1
  104. package/widgets/FeatureTable/AttachmentsColumn.js +1 -1
  105. package/widgets/FeatureTable/RelationshipColumn.js +1 -1
  106. package/widgets/OrientedImageryViewer/imageMeasurementWorkerUtils.js +1 -1
  107. package/widgets/support/SelectionList/GroupLayerItem.d.ts +5 -5
  108. package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
  109. package/widgets/support/SelectionList/ItemBase.d.ts +3 -3
  110. package/widgets/support/SelectionList/LayerItem.js +1 -1
  111. package/widgets/support/SelectionList/SelectionListViewModel.d.ts +5 -6
  112. package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
  113. package/widgets/support/SelectionList/types.d.ts +3 -1
  114. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
  115. package/widgets/support/Selector2D/selectorUtils.js +1 -1
  116. package/widgets/support/symbolPreviewUtils.js +1 -1
  117. package/assets/esri/core/workers/chunks/2de4296590bf9f9e9add.js +0 -1
  118. package/assets/esri/core/workers/chunks/4976f5567fc7f1b63d10.js +0 -1
  119. package/assets/esri/core/workers/chunks/53c7510df09b71ab5646.js +0 -1
  120. package/assets/esri/core/workers/chunks/66c2a28a851130b87c04.js +0 -1
  121. package/assets/esri/core/workers/chunks/e7aaf7579592b79d6dd7.js +0 -1
  122. package/layers/geospatialPDF/CIM2DLayerview.js +0 -2
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{clamp as e}from"../../../../core/mathUtils.js";import{fromValues as t}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as n}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{exactEquals as i,copy as a}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as o}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{projectVectorToVector as s}from"../../../../geometry/projection/projectVectorToVector.js";import{expandWithBuffer as c}from"../../../../geometry/support/aaBoundingBox.js";import{sv3d as l}from"../../../../geometry/support/vectorStacks.js";import{Object3DVisualElement as u}from"./Object3DVisualElement.js";import{evaluateElevationAlignmentAtPoint as d}from"../../layers/graphics/elevationAlignmentUtils.js";import{ElevationContext as f}from"../../layers/graphics/ElevationContext.js";import{defaultBoundingBox as p,requiresHalfTexelOffset as m,defaultSymbolSizeRatio as h,createTexture as g}from"../../support/engineContent/sdfPrimitives.js";import{createPointGeometry as _}from"../../webgl-engine/lib/GeometryUtil.js";import{HUDMaterial as v}from"../../webgl-engine/materials/HUDMaterial.js";class y extends u{constructor(e){super(e),this._material=null,this._texture=null,this._geometry=null,this._size=3,this._color=o(1,0,1,1),this._pixelSnappingEnabled=!0,this._primitive=`square`,this._outlineSize=1,this._outlineColor=o(1,1,1,1),this._elevationInfo=null,this.applyProperties(e)}get geometry(){return this._geometry}set geometry(e){this._geometry=e,this.recreateGeometry()}get size(){return this._size}set size(e){if(e!==this._size){let t=this._preferredTextureSize;this._size=e,t<this._preferredTextureSize?this.recreate():this._updateSizeParameter()}}get color(){return this._color}set color(e){i(e,this._color)||(a(this._color,e),this._updateMaterial())}get pixelSnappingEnabled(){return this._pixelSnappingEnabled}set pixelSnappingEnabled(e){this._pixelSnappingEnabled!==e&&(this._pixelSnappingEnabled=e,this._updateMaterial())}get primitive(){return this._primitive}set primitive(e){this._primitive!==e&&(this._primitive=e,this.recreate())}get outlineSize(){return this._outlineSize}set outlineSize(e){e!==this._outlineSize&&(this._outlineSize=e,this._updateMaterial())}get outlineColor(){return this._outlineColor}set outlineColor(e){i(e,this._outlineColor)||(a(this._outlineColor,e),this._updateMaterial())}get elevationInfo(){return this._elevationInfo}set elevationInfo(e){this._elevationInfo=e,this.recreateGeometry()}_updateMaterial(){this._material?.setParameters(this._materialParameters)}_updateSizeParameter(){if(this.object?.geometries[0]==null)return;let e=this._geometrySize;this._material?.setParameters({size:t(e,e)})}get _materialParameters(){let e=this._geometrySize;return{color:this._color,textureIsSignedDistanceField:!0,sampleSignedDistanceFieldTexelCenter:m(this._primitive),distanceFieldBoundingBox:p,outlineColor:this._outlineColor,outlineSize:this._outlineSize,textureId:this._texture?.id,shaderPolygonOffset:0,drawAsLabel:!0,depthEnabled:!1,pixelSnappingEnabled:this.pixelSnappingEnabled,isDecoration:this.isDecoration,size:t(e,e)}}get _geometrySize(){return this._size/h}createExternalResources(){this._texture=g(this._primitive,this._preferredTextureSize),this._material=new v(this._materialParameters,this.view.state.viewingMode===1);let e=this.view.stage;this._texture.load(e.renderView.renderingContext),e.addTexture(this._texture)}destroyExternalResources(){this._texture&&=(this.view.stage.removeTexture(this._texture),this._texture.dispose(),null),this._material=null}createGeometries(e){let t=this._createRenderGeometry();t!=null&&e.addGeometry(t)}forEachMaterial(e){e(this._material)}get _preferredTextureSize(){return e(this._geometrySize*2,16,128)}calculateMapBounds(e){let t=this.object?.geometries[0];if(!t)return!1;let n=t.attributes.get(`position`).data;return s(n,this.view.renderCoordsHelper.spatialReference,b,this.view.spatialReference),c(e,b),!0}_createRenderGeometry(){let{geometry:e,_material:t}=this;if(e==null||t==null)return null;let{renderCoordsHelper:r,elevationProvider:i}=this.view,a=d(e,i,f.fromElevationInfo(this.elevationInfo),r),o=n(l.get(),e.x,e.y,a),c=l.get();return s(o,e.spatialReference,c,r.spatialReference),_(t,{position:c})}}const b=r();export{y as PointVisualElement};
2
+ import{clamp as e}from"../../../../core/mathUtils.js";import{normalFromMat4 as t,identity as n}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{fromValues as i}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as a,add as o,set as s,transformMat4 as c,transformMat3 as l,normalize as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{UNIT_Z as d,create as f}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{exactEquals as p,copy as m}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as h}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{projectVectorToVector as g}from"../../../../geometry/projection/projectVectorToVector.js";import{expandWithBuffer as _}from"../../../../geometry/support/aaBoundingBox.js";import{StageObjectVisualElement as v}from"./StageObjectVisualElement.js";import{evaluateElevationAlignmentAtPoint as y}from"../../layers/graphics/elevationAlignmentUtils.js";import{ElevationContext as b}from"../../layers/graphics/ElevationContext.js";import{defaultBoundingBox as x,requiresHalfTexelOffset as S,defaultSymbolSizeRatio as C,createTexture as w}from"../../support/engineContent/sdfPrimitives.js";import{updateObjectVertexField as T,updateVertexFieldVec3f as E}from"../../webgl-engine/lib/bufferGeometryUtils.js";import{BufferObject3D as D}from"../../webgl-engine/lib/BufferObject3D.js";import{createPointBufferGeometry as O}from"../../webgl-engine/lib/GeometryUtil.js";import{HUDMaterial as k}from"../../webgl-engine/materials/HUDMaterial.js";class A extends v{constructor(e){super(e),this._material=null,this._texture=null,this._geometry=null,this._size=3,this._color=h(1,0,1,1),this._pixelSnappingEnabled=!0,this._primitive=`square`,this._outlineSize=1,this._outlineColor=h(1,1,1,1),this._elevationInfo=null,this.applyProperties(e)}get geometry(){return this._geometry}set geometry(e){this._geometry=e,this.recreateGeometry()}get size(){return this._size}set size(e){if(e!==this._size){let t=this._preferredTextureSize;this._size=e,t<this._preferredTextureSize?this.recreate():this._updateSizeParameter()}}get color(){return this._color}set color(e){p(e,this._color)||(m(this._color,e),this._updateMaterial())}get pixelSnappingEnabled(){return this._pixelSnappingEnabled}set pixelSnappingEnabled(e){this._pixelSnappingEnabled!==e&&(this._pixelSnappingEnabled=e,this._updateMaterial())}get primitive(){return this._primitive}set primitive(e){this._primitive!==e&&(this._primitive=e,this.recreate())}get outlineSize(){return this._outlineSize}set outlineSize(e){e!==this._outlineSize&&(this._outlineSize=e,this._updateMaterial())}get outlineColor(){return this._outlineColor}set outlineColor(e){p(e,this._outlineColor)||(m(this._outlineColor,e),this._updateMaterial())}get elevationInfo(){return this._elevationInfo}set elevationInfo(e){this._elevationInfo=e,this.recreateGeometry()}_updateMaterial(){this._material?.setParameters(this._materialParameters)}_updateSizeParameter(){if(this.object?.geometries[0]==null)return;let e=this._geometrySize;this._material?.setParameters({size:i(e,e)})}get _materialParameters(){let e=this._geometrySize;return{color:this._color,textureIsSignedDistanceField:!0,sampleSignedDistanceFieldTexelCenter:S(this._primitive),distanceFieldBoundingBox:x,outlineColor:this._outlineColor,outlineSize:this._outlineSize,textureId:this._texture?.id,shaderPolygonOffset:0,drawAsLabel:!0,depthEnabled:!1,pixelSnappingEnabled:this.pixelSnappingEnabled,isDecoration:this.isDecoration,size:i(e,e)}}get _geometrySize(){return this._size/C}createExternalResources(){this._texture=w(this._primitive,this._preferredTextureSize),this._material=new k(this._materialParameters,this.view.state.viewingMode===1);let e=this.view.stage;this._texture.load(e.renderView.renderingContext),e.addTexture(this._texture)}destroyExternalResources(){this._texture&&=(this.view.stage.removeTexture(this._texture),this._texture.dispose(),null),this._material=null}createObject(){return new D({geometries:[]})}updateObjectTransform(e){let t=e.geometries[0],n=this.geometry;t!=null&&n!=null&&(this._computeRenderPositionAndNormal(j,M,n),this.view.stage.localOriginFactory.needsOriginUpdate(t.localOrigin,j,0)?this.recreateGeometry():(a(j,j,t.localOrigin.vec3),T(e,E,t,`position`,0,j),T(e,E,t,`normal`,0,M)))}createGeometries(e){let t=this._createRenderGeometry();t!=null&&e.addGeometry(t)}forEachMaterial(e){e(this._material)}get _preferredTextureSize(){return e(this._geometrySize*2,16,128)}calculateMapBounds(e){let t=this.object?.geometries[0];return t?(t.readPrimitivePosition(j,0),o(j,j,t.localOrigin.vec3),g(j,this.view.renderCoordsHelper.spatialReference,j,this.view.spatialReference),_(e,j),!0):!1}_createRenderGeometry(){let{geometry:e,_material:t}=this;if(e==null||t==null)return null;this._computeRenderPositionAndNormal(j,M,e);let n=this.view.stage.localOriginFactory.getOrigin(j);return O(t,n,{position:j,normal:M})}_computeRenderPositionAndNormal(e,r,i){let{renderCoordsHelper:a,elevationProvider:o}=this.view,f=y(i,o,b.fromElevationInfo(this.elevationInfo),a);s(j,i.x,i.y,f),g(j,i.spatialReference,e,a.spatialReference),c(e,e,this.transform),t(N,this.transform)??n(N),l(r,d,N),u(r,r)}}const j=f(),M=f(),N=r();export{A as PointVisualElement};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{copy as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{VisualElement as n}from"./VisualElement.js";import{WebGLLayer as r}from"../../webgl-engine/lib/WebGLLayer.js";class i extends n{constructor(e){super(e),this._resources=null,this._transform=t()}get object(){return this._resources?.object}get transform(){return this._transform}set transform(t){e(this._transform,t),this._resources!=null&&this.updateObjectTransform(this._resources.object)}recreate(){this.attached&&this.createResources()}recreateGeometry(){if(this._resources==null)return;let e=this._resources.object;e.removeAllGeometries(),this.createGeometries(e),e.visible=this.visible}createResources(){this.destroyResources();let e=this.view.stage;if(!e)return;let t=new r(e,{pickable:!1,updatePolicy:1}),n=this.createObject();this.createExternalResources(),this.createGeometries(n),t.add(n),n.visible=this.visible,this._resources={layer:t,object:n}}destroyResources(){let e=this.view.stage;this._resources!=null&&e&&(this._resources.layer.destroy(),this._resources.object.dispose(),this.destroyExternalResources(),this._resources=null)}updateVisibility(e){this._resources!=null&&(this._resources.object.visible=e)}}export{i as StageObjectVisualElement};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import n from"../../../core/Logger.js";import{throwIfAborted as r}from"../../../core/promiseUtils.js";import{whenOnce as i}from"../../../core/reactiveUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{getTileMaxtrixSetFromActiveLayer as s}from"../../../layers/support/layerUtils.js";import{LayerView3D as c}from"./LayerView3D.js";import{TiledLayerView3D as l}from"./TiledLayerView3D.js";import u from"../../layers/LayerView.js";import{RefreshableLayerView as d}from"../../layers/RefreshableLayerView.js";let f=class extends d(l(c(u))){constructor(){super(...arguments),this.type=`wmts-3d`}initialize(){this._getCompatibleTileInfoMatrixSet(e=>this._getTileInfoSupportError(e.tileInfo,e.fullExtent));let e=i(()=>this.view?.basemapTerrain?.tilingSchemeLocked).then(()=>{let e=this._getCompatibleTileInfoMatrixSet(e=>this._getTileInfoError(e.tileInfo,e.fullExtent));e!=null&&(e.id!==null&&this.layer.activeLayer.tileMatrixSetId!==e.id&&(this.layer.activeLayer.tileMatrixSetId=e.id),e.tileInfo&&(this.tileInfo=e.tileInfo),this.layer.fullExtent=e.fullExtent)});this.addResolvingPromise(e),this.when(()=>this._postInitialize())}refresh(){this.emit(`data-changed`)}canResume(){if(!super.canResume())return!1;let e=this.layer.activeLayer.tileMatrixSet;return e!=null&&!this._getTileInfoError(e.tileInfo,e.fullExtent)}async fetchTile([e,t,n],i){let a=await this.layer.fetchImageBitmapTile(e,t,n,{...i,allowDeriveTypeFromData:!0,imageOrientation:`flipY`});return r(i),a}async doRefresh(){this.suspended||this.emit(`data-changed`)}_postInitialize(){this._updatingHandles.add(()=>this.layer?.activeLayer?.styleId,()=>this.refresh()),this._updatingHandles.add(()=>this.layer?.activeLayer,e=>{let t=this._getCompatibleTileInfoMatrixSet(e=>this._getTileInfoError(e.tileInfo,e.fullExtent),!0);t&&t.id!=null&&e.tileMatrixSetId!==t.id&&(this.layer.activeLayer.tileMatrixSetId=t.id),this.notifyChange(`suspended`),this.canResume()&&this.refresh()})}_getCompatibleTileInfoMatrixSet(e,r=!1){let i=s(this.layer);if(i!=null){if(t.isCollection(i))return i.find(t=>{let i=e(t);return i!=null&&(r?n.getLogger(this).error(`The selected tile matrix set is not compatible with the view`,i):this.addResolvingPromise(Promise.reject(i))),i==null});let a=e(i);return a!=null&&(r?n.getLogger(this).error(`The selected tile matrix set is not compatible with the view`,a):this.addResolvingPromise(Promise.reject(a))),i}return null}_getTileInfoError(e,t){return this._getTileInfoSupportError(e,t)||this._getTileInfoCompatibilityError(e,this.view.basemapTerrain.tilingScheme)}};e([a()],f.prototype,`layer`,void 0),e([a()],f.prototype,`suspended`,void 0),e([a()],f.prototype,`tileInfo`,void 0),f=e([o(`esri.views.3d.layers.WMTSLayerView3D`)],f);const p=f;export{p as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Collection.js";import n from"../../../core/Logger.js";import{throwIfAborted as r}from"../../../core/promiseUtils.js";import{whenOnce as i}from"../../../core/reactiveUtils.js";import{property as a,subclass as o}from"../../../core/accessorSupport/decorators.js";import{projectWithoutEngine as s}from"../../../geometry/projectionUtils.js";import{getTileMaxtrixSetFromActiveLayer as c}from"../../../layers/support/layerUtils.js";import l from"../../../layers/support/TileInfoTilemapCache.js";import{LayerView3D as u}from"./LayerView3D.js";import{TiledLayerView3D as d}from"./TiledLayerView3D.js";import{RefreshableLayerView as f}from"../../layers/RefreshableLayerView.js";import p from"../../layers/WMTSLayerView.js";let m=class extends f(d(u(p))){constructor(){super(...arguments),this.type=`wmts-3d`,this.tileMatrixSet=null}initialize(){this._getCompatibleTileInfoMatrixSet(e=>this._getTileInfoSupportError(e.tileInfo,e.fullExtent));let e=i(()=>this.view?.basemapTerrain?.tilingSchemeLocked).then(()=>{let e=this._getCompatibleTileInfoMatrixSet(e=>this._getTileInfoError(e.tileInfo,e.fullExtent));e!=null&&(this.tileMatrixSet=e)});this.addResolvingPromise(e),this.when(()=>this._postInitialize())}get tileInfo(){return this.tileMatrixSet?.tileInfo}get fullExtent(){return this.tileMatrixSet?.fullExtent}get fullExtentInLocalViewSpatialReference(){let{fullExtent:e}=this,{spatialReference:t}=this.view;return e&&!e.spatialReference.equals(t)?s(e,e.spatialReference,t):e}get tilemapCache(){let e=this.tileMatrixSet?.tileInfo;return e?new l(e):null}refresh(){this.emit(`data-changed`)}canResume(){if(!super.canResume())return!1;let{tileMatrixSet:e}=this;return e!=null&&!this._getTileInfoError(e.tileInfo,e.fullExtent)}async fetchTile([e,t,n],i){let a=await this.layer.fetchImageBitmapTile(e,t,n,{...i,allowDeriveTypeFromData:!0,imageOrientation:`flipY`,tileMatrixSetId:this.tileMatrixSet?.id});return r(i),a}getTileUrl([e,t,n]){return this.layer.getTileUrl(e,t,n,this.tileMatrixSet?.id)}async doRefresh(){this.suspended||this.emit(`data-changed`)}_postInitialize(){this._updatingHandles.add(()=>this.layer?.activeLayer?.styleId,()=>this.refresh()),this._updatingHandles.add(()=>[this.layer?.activeLayer,this.layer?.activeLayer?.tileMatrixSetId],()=>{this.tileMatrixSet=this._getCompatibleTileInfoMatrixSet(e=>this._getTileInfoError(e.tileInfo,e.fullExtent),!0),this.canResume()&&this.refresh()})}_getCompatibleTileInfoMatrixSet(e,r=!1){let i=c(this.layer);if(i==null)return null;let a=t.isCollection(i)?i:[i],o,s=a.find(t=>(o=e(t),o==null));return!s&&o!=null&&(r?n.getLogger(this).error(`The selected tile matrix set is not compatible with the view`,o):this.addResolvingPromise(Promise.reject(o))),s}_getTileInfoError(e,t){return this._getTileInfoSupportError(e,t)||this._getTileInfoCompatibilityError(e,this.view.basemapTerrain.tilingScheme)}};e([a()],m.prototype,`layer`,void 0),e([a()],m.prototype,`suspended`,void 0),e([a()],m.prototype,`tileMatrixSet`,void 0),e([a()],m.prototype,`tileInfo`,null),e([a()],m.prototype,`fullExtent`,null),e([a()],m.prototype,`fullExtentInLocalViewSpatialReference`,null),e([a()],m.prototype,`tilemapCache`,null),m=e([o(`esri.views.3d.layers.WMTSLayerView3D`)],m);const h=m;export{h as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{lerp as n}from"../../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{property as i,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{transpose as o}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{transformMat4 as l,scale as u,round as d,copy as f,set as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as m,create as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as g,transformMat4 as _,scale as v}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as y}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as b}from"../../../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as ee}from"../../../../geometry/ellipsoidUtils.js";import{create as x,empty as te,copy as S,offset as C,width as w,height as ne,expand as T}from"../../../../geometry/support/aaBoundingRect.js";import{h as E,c as re,a as ie}from"../../../../chunks/boundedPlane.js";import{create as D}from"../../../../geometry/support/ray.js";import{Sphere as O,sphereCSO as k}from"../../../../geometry/support/sphere.js";import{InternalRenderCategory as A}from"../../webgl.js";import{DeconflictAABR as j}from"./DeconflictAABR.js";import{prepare as M,drawPoly as N}from"./deconflictorDebug.js";import{isSymbolLayerWithTransparencyMode as P}from"./transparencyUtils.js";import F from"../../webgl/RenderCamera.js";import{getVec3AttributeView as I,getScalarAttributeView as L}from"../../webgl-engine/lib/attributeViewUtils.js";import{GPUPointOcclusionQuery as R}from"../../webgl-engine/lib/GPUPointOcclusionQuery.js";import{SeparateScreenSizePerspectiveEvaluators as z}from"../../webgl-engine/lib/screenSizePerspectiveUtils.js";import{HUDMaterial as B}from"../../webgl-engine/materials/HUDMaterial.js";import{Yield as V}from"../../../support/Yield.js";const H=h(),U=h(),W=h(),G=h(),K=y(),q=y(),J=h(),Y=s(),ae=new O,X=D(),oe=h(),Z=x();class se{constructor(e){this.id=e,this.aabr=x(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.culled=!1,this.visible=!1,this.priority=0}}function ce(e,t){let n=e.distanceToOccluder!==0&&e.distance>e.distanceToOccluder,r=t.distanceToOccluder!==0&&t.distance>t.distanceToOccluder;return n===r?e.priority===t.priority?e.distance===t.distance?e.visible===t.visible?e.id-t.id:+t.visible-e.visible:e.distance-t.distance:t.priority-e.priority:+n-r}class le{constructor(e,t){this.graphics3DGraphic=e,this.slicePlaneEnabled=t,this._info=null,this._labelInfo=null}ensureInfo(e){let t=this.getInfo(e);return t||(t=new se(this.graphics3DGraphic.graphic.uid),this._setInfo(e,t)),t}getInfo(e){return e===16?this._labelInfo:this._info}removeInfo(e){this._setInfo(e,null)}_setInfo(e,t){e===16?this._labelInfo=t:this._info=t}}class Q{constructor(){this.camera=new F,this.slicePlane=re(),this.slicePlaneEnabled=!1}copyFrom(e){this.camera.equals(e.camera)||this.camera.copyFrom(e.camera),ie(e.slicePlane,this.slicePlane),this.slicePlaneEnabled=e.slicePlaneEnabled}}let $=class extends t{get dirty(){return this._dirty}get state(){return this._state}constructor(e){super(e),this._dirty=!1,this._viewState=new Q,this._state=0,this._checkOcclusion=new Map,this._active=new Map,this._checkOcclusionIterator=null,this._activeIterator=null,this._occlusionQueryUids=[],this._updatingHandles=new b,this._deconflictor=new j((e,t)=>{e.visible=t,this._setGraphicVisibility(this._active.get(e.id),t)},(e,t)=>e.id!==t.id,ce),this._baseOccludedVisibility=10,this._altitudeFactor=2,this._minAltitudeDifference=100}initialize(){this._updatingHandles.add(()=>(this.view?.map?.ground?.opacity??0)>0,()=>this.setDirty()),this._updatingHandles.add(()=>this.view.ready,()=>{this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this.setDirty()})}destroy(){this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this._updatingHandles.destroy(),this._deconflictor.destroy(),this._checkOcclusion.clear(),this._active.clear()}setDirty(){!this._dirty&&(this._active.size>0||this._checkOcclusion.size>0)&&(this._dirty=!0,this.notifyChange(`_readyToRun`))}setPriority(e,t){let n=this._active.get(e.graphic.uid)?.getInfo(this.visibilityGroup);n&&(n.priority=t)}get _readyToRun(){return this._state!==0||this._dirty}get updating(){return this._readyToRun||this._updatingHandles.updating}get updatingProgress(){if(!this.updating)return 1;let e=this._state/5;return this._dirty?e*.5:e}get readyToRun(){return this.view.ready&&this.view.state!=null&&this._readyToRun}get usedMemory(){return this._occlusionQuery?.usedMemory??0+(this._occlusionQueryUids?.length??0)*4}runTask(e){switch(this._state){case 0:this._startUpdate(),e.madeProgress();case 1:if(this._state=1,!this._processCheckOcclusion(e))return;case 2:if(this._state=2,!(this._occlusionQuery?.done??!0)||!(this._opaqueOcclusionQuery?.done??!0))return V;this._readOcclusionQueryResult(),e.madeProgress();case 3:if(this._state=3,!this._collectActiveGraphics(e))return;case 4:if(this._state=4,this._deconflictor.run(e),!this._deconflictor.done)return;default:this._state=0,this.notifyChange(`_readyToRun`)}}setGraphicsActive(e,t){t?e.forEach(e=>this.addToActiveGraphics(e)):e.forEach(e=>this.removeFromActiveGraphics(e))}isSupportedLayer(e){if(e==null||!(`hiddenIfDeconflicted`in e)||!e.hiddenIfDeconflicted)return!1;let t=e.stageObject;return(t?.geometries.length??0)===1&&t?.geometries[0]?.material instanceof B}_startUpdate(){M(this.view),this._dirty=!1,this._viewState.copyFrom(this.viewState);let{fullWidth:e,fullHeight:t}=this._viewState.camera;this._deconflictor.reset(e,t),this._resetIterators(),this._occlusionQueryUids.length=0,this._checkOcclusion.size||(this._occlusionQuery=r(this._occlusionQuery),this._opaqueOcclusionQuery=r(this._opaqueOcclusionQuery))}addToActiveGraphics(e){e.ensureInfo(this.visibilityGroup),this._active.set(e.graphics3DGraphic.graphic.uid,e),this.setDirty()}removeFromActiveGraphics(e){this._active.get(e.graphics3DGraphic.graphic.uid)===e&&(ue(e,this.visibilityGroup),e.removeInfo(this.visibilityGroup),this._active.delete(e.graphics3DGraphic.graphic.uid),this.setDirty())}addToCheckOcclusion(e){this._checkOcclusion.set(e.graphics3DGraphic.graphic.uid,e),this.setDirty()}removeFromCheckOcclusion(e){this._checkOcclusion.get(e.graphics3DGraphic.graphic.uid)===e&&this._checkOcclusion.delete(e.graphics3DGraphic.graphic.uid)}_processCheckOcclusion(e){if(this._checkOcclusion.size===0)return!0;let t=this._ensureCheckOcclusionIterator(),n=this._viewState.camera,i=o(Y,n.viewInverseTransposeMatrix),a=this.view.map.ground.opacity>0,s=this.view.viewingMode===`global`&&a&&n.relativeElevation>0?ae:null,c=0;s!=null&&(l(s.center,m,n.viewMatrix),s.radius=ee(this.view.spatialReference).radius,c=k.distanceToSilhouette(s,m));let u=x();for(;;){if(e.done)return!1;e.madeProgress();let r=t.next();if(r.done===!0)break;let a=r.value,o=a.graphics3DGraphic;if(o.destroyed||!o.isVisible(1,8))continue;let d=me(o,this.visibilityGroup),f=null,p=!0,m=!1;for(let e of d){if(!this.isSupportedLayer(e))continue;f=he,this._projectHudLayer(e,n,f),te(u);let t=e.stageObject.geometries[0].material;if(this._expandBoundingRect(u,n,e,t,f),f.isOutsideScreen||this._isCulledBySlice(a,f.positionWorld)||s!=null&&pe(f,s,c)){p=!1;break}f.altitude=this.view.renderCoordsHelper.getAltitude(f.positionWorld);let r=a.ensureInfo(this.visibilityGroup);if(r.altitude=f.altitude,r.distance=f.distance,r.distanceToOccluder=f.distanceToOccluder,r.culled=!1,S(r.aabr,u),!e.occlusionCheck)break;l(U,f.positionView,i);let d=this._ensureOcclusionQuery(),h=this._ensureOpaqueOcclusionQuery();this._occlusionQueryUids.length===0&&(this._initOcclusionQuery(d),this._initOcclusionQuery(h));let g=d.addPosition(U),_=h.addPosition(U);if(g===this._occlusionQueryUids.length&&_===g){let t=e.adaptiveOcclusion;this._occlusionQueryUids.push(t?-o.graphic.uid:o.graphic.uid),m=!0}break}let h=this._active.has(o.graphic.uid);if(!h&&!m)this._setGraphicVisibility(a,p);else if(h&&(!p||!f)){let e=a.ensureInfo(this.visibilityGroup);e.visible=!f,e.culled=!0}}return this._checkOcclusionIterator=null,this._occlusionQueryUids.length||(this._occlusionQuery=r(this._occlusionQuery),this._opaqueOcclusionQuery=r(this._opaqueOcclusionQuery)),this._occlusionQuery?.start(),this._opaqueOcclusionQuery?.start(),!0}_readOcclusionQueryResult(){if(!this._occlusionQuery||!this._occlusionQueryUids.length)return;let e=this._viewState.camera,t=this.view.renderCoordsHelper.getAltitude(e.eye);for(let e=0;e<this._occlusionQueryUids.length;e++){let n=this._occlusionQueryUids[e],r=Math.abs(n),i=n<0,a=this._checkOcclusion.get(r);if(!a)continue;let o=this._occlusionQuery.getOcclusion(e)??-1,s=this._opaqueOcclusionQuery?.getOcclusion(e)??-1,c=a.getInfo(this.visibilityGroup);c&&(c.distanceToOccluder=o>0?c.distance-o:0);let l=s===0||s>0&&this._occludedVisibility(c?c.distance-s:0,c?.distance??s,c?.altitude??0,t,i),u=o===0||o>0&&this._occludedVisibility(c?.distanceToOccluder??0,c?.distance??o,c?.altitude??0,t,i),d=l||u;d&&this._setTransparentMode(a,l&&!u),this._active.has(r)?c&&(c.culled=!d,c.visible=d):this._setGraphicVisibility(a,d)}this._occlusionQueryUids.length=0}_collectActiveGraphics(e){let t=this._ensureActiveGraphicsIterator(),n=this.visibilityGroup===16;for(;!e.done;){e.madeProgress();let r=t.next();if(r.done===!0)return this._activeIterator=null,!0;let i=r.value,a=i.getInfo(this.visibilityGroup);if(!a)continue;let o=!n||i.graphics3DGraphic.isVisible();!o||a.culled?(N(a.aabr,!1,!0),this._setGraphicVisibility(i,o&&a.visible)):this._deconflictor.add(a)}return!1}_occludedVisibility(e,t,n,r,i=!0){let a=Math.max(this._minAltitudeDifference,Math.abs(n-r))-this._minAltitudeDifference,o=i?this._baseOccludedVisibility+this._altitudeFactor*a:0;return e===0||t-e<=o}_resetIterators(){this._checkOcclusionIterator=null,this._activeIterator=null}_ensureCheckOcclusionIterator(){return this._checkOcclusionIterator??=this._checkOcclusion.values(),this._checkOcclusionIterator}_ensureActiveGraphicsIterator(){return this._activeIterator??=this._active.values(),this._activeIterator}_initOcclusionQuery(e){if(!e)return;let{camera:t}=this._viewState,n=Math.max(2,2+Math.round(Math.log2(Math.abs(t.relativeElevation))));u(H,this._viewState.camera.eye,2**-n),u(H,d(H,H),2**n),e.init(this._checkOcclusion.size,H)}_ensureOcclusionQuery(){return this._occlusionQuery??=new R({view:this.view}),this._occlusionQuery}_ensureOpaqueOcclusionQuery(){return this._opaqueOcclusionQuery??=new R({view:this.view,category:A.OPAQUE_OCCLUSION_QUERY}),this._opaqueOcclusionQuery}_getNumVisible(e){return this._checkOcclusion.values().reduce((t,n)=>t+ +!!n.getInfo(e)?.visible,0)}_projectHudLayer(e,t,n){let r=e.stageObject,i=r.geometries[0],a=i.material;f(U,r.boundingVolumeWorldSpace.sphere.center),l(H,U,t.viewMatrix);let o=I(i,`normal`).getVec(0,W),s=I(i,`centerOffset`)?.getVec(0,G)??m,c=L(i,`groundDistance`).get(0);a.applyShaderOffsets(U,H,o,r.transformation,s,c,t,n.screenSizePerspectiveEvaluators),g(K,H[0],H[1],H[2],1),_(q,K,t.projectionMatrix),u(n.positionNDC,q,1/q[3]),a.applyShaderOffsetsNDC(n.positionNDC,s,c,t,n.positionNDC,J),n.distanceWithoutPolygonOffset=t.depthNDCToWorld(J[2]),n.distance=J[2]===n.positionNDC[2]?n.distanceWithoutPolygonOffset:t.depthNDCToWorld(n.positionNDC[2]),g(q,n.positionNDC[0],n.positionNDC[1],n.positionNDC[2],1),_(K,q,t.inverseProjectionMatrix),v(K,K,1/K[3]),p(n.positionView,K[0],K[1],K[2]),f(n.positionWorld,U)}_isCulledBySlice(e,t){return e.slicePlaneEnabled&&this._viewState.slicePlaneEnabled&&E(this._viewState.slicePlane,t)}_expandBoundingRect(e,t,r,i,{positionNDC:a,screenSizePerspectiveEvaluators:o}){let s=r.getScreenSize(de);o.evaluator.applyVec2(s,s),s[0]*=t.pixelRatio,s[1]*=t.pixelRatio;let c=C(i.calculateRelativeScreenBounds(s,o.alignmentEvaluator.apply(t.pixelRatio),Z),n(0,t.fullWidth,.5+.5*a[0]),n(0,t.fullHeight,.5+.5*a[1])),l=this.marginFactor;if(l!==0){let e=l*Math.min(w(c),ne(c));c[0]-=e,c[1]-=e,c[2]+=e,c[3]+=e}T(e,c,e)}_setGraphicVisibility(e,t){let n=e?.graphics3DGraphic;n&&!n.destroyed&&(n.setVisibilityFlag(this.visibilityGroup,8,t),this.visibilityGroup===16&&this.view.labeler.setLabelGraphicVisibility(n,t))}_setTransparentMode(e,t){let n=e?.graphics3DGraphic;if(n&&!n.destroyed)for(let e of n.layers){if(e?.type!==`object3d`&&e?.type!==`buffer`)continue;let{graphics3DSymbolLayer:n}=e;P(n)&&n.updateTransparentMode(e,t)}}};e([i({constructOnly:!0})],$.prototype,`view`,void 0),e([i({type:Boolean,readOnly:!0})],$.prototype,`_readyToRun`,null),e([i({type:Boolean,readOnly:!0})],$.prototype,`updating`,null),e([i({readOnly:!0})],$.prototype,`_updatingHandles`,void 0),$=e([a(`esri.views.3d.layers.graphics.Deconflictor`)],$);function ue(e,t){let n=e.graphics3DGraphic;n.destroyed||n.setVisibilityFlag(t,8,!0)}const de=c();class fe{constructor(){this.positionWorld=h(),this.positionView=h(),this.positionNDC=h(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.distanceWithoutPolygonOffset=0,this.screenSizePerspectiveEvaluators=new z}get isOutsideScreen(){let e=this.positionNDC;return e[0]<-1||e[1]<-1||e[2]<-1||e[0]>=1||e[1]>=1||e[2]>=1}}function pe(e,t,n){return f(X.direction,e.positionView),p(X.origin,0,0,0),t.intersectRay(X,oe)?e.distanceWithoutPolygonOffset>n:!1}function me(e,t){return t===16?e.labelLayers:e.layers}const he=new fe;export{$ as Deconflictor,le as DeconflictorGraphic,Q as DeconflictorViewState};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{lerp as n}from"../../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{property as i,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{transpose as o}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{transformMat4 as l,scale as u,round as d,copy as f,set as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as m,create as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as g,transformMat4 as _,scale as v}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as y}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as b}from"../../../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as ee}from"../../../../geometry/ellipsoidUtils.js";import{create as x,empty as te,copy as S,offset as C,width as w,height as ne,expand as T}from"../../../../geometry/support/aaBoundingRect.js";import{h as E,c as re,a as ie}from"../../../../chunks/boundedPlane.js";import{create as D}from"../../../../geometry/support/ray.js";import{Sphere as O,sphereCSO as k}from"../../../../geometry/support/sphere.js";import{InternalRenderCategory as A}from"../../webgl.js";import{DeconflictAABR as j}from"./DeconflictAABR.js";import{prepare as M,drawPoly as N}from"./deconflictorDebug.js";import{isSymbolLayerWithTransparencyMode as P}from"./transparencyUtils.js";import F from"../../webgl/RenderCamera.js";import{getVec3AttributeView as I,getScalarAttributeView as L}from"../../webgl-engine/lib/attributeViewUtils.js";import{GPUPointOcclusionQuery as R}from"../../webgl-engine/lib/GPUPointOcclusionQuery.js";import{SeparateScreenSizePerspectiveEvaluators as z}from"../../webgl-engine/lib/screenSizePerspectiveUtils.js";import{HUDMaterial as B}from"../../webgl-engine/materials/HUDMaterial.js";import{Yield as V}from"../../../support/Yield.js";const H=h(),U=h(),W=h(),G=h(),K=y(),q=y(),J=h(),Y=s(),ae=new O,X=D(),oe=h(),Z=x();class se{constructor(e){this.id=e,this.aabr=x(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.culled=!1,this.visible=!1,this.priority=0}}function ce(e,t){let n=e.distanceToOccluder!==0&&e.distance>e.distanceToOccluder,r=t.distanceToOccluder!==0&&t.distance>t.distanceToOccluder;return n===r?e.priority===t.priority?e.distance===t.distance?e.visible===t.visible?e.id-t.id:+t.visible-e.visible:e.distance-t.distance:t.priority-e.priority:+n-r}class le{constructor(e,t){this.graphics3DGraphic=e,this.slicePlaneEnabled=t,this._info=null,this._labelInfo=null}ensureInfo(e){let t=this.getInfo(e);return t||(t=new se(this.graphics3DGraphic.graphic.uid),this._setInfo(e,t)),t}getInfo(e){return e===16?this._labelInfo:this._info}removeInfo(e){this._setInfo(e,null)}_setInfo(e,t){e===16?this._labelInfo=t:this._info=t}}class Q{constructor(){this.camera=new F,this.slicePlane=re(),this.slicePlaneEnabled=!1}copyFrom(e){this.camera.equals(e.camera)||this.camera.copyFrom(e.camera),ie(e.slicePlane,this.slicePlane),this.slicePlaneEnabled=e.slicePlaneEnabled}}let $=class extends t{get dirty(){return this._dirty}get state(){return this._state}constructor(e){super(e),this._dirty=!1,this._viewState=new Q,this._state=0,this._checkOcclusion=new Map,this._active=new Map,this._checkOcclusionIterator=null,this._activeIterator=null,this._occlusionQueryUids=[],this._updatingHandles=new b,this._deconflictor=new j((e,t)=>{e.visible=t,this._setGraphicVisibility(this._active.get(e.id),t)},(e,t)=>e.id!==t.id,ce),this._baseOccludedVisibility=10,this._altitudeFactor=2,this._minAltitudeDifference=100}initialize(){this._updatingHandles.add(()=>(this.view?.map?.ground?.opacity??0)>0,()=>this.setDirty()),this._updatingHandles.add(()=>this.view.ready,()=>{this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this.setDirty()})}destroy(){this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this._updatingHandles.destroy(),this._deconflictor.destroy(),this._checkOcclusion.clear(),this._active.clear()}setDirty(){!this._dirty&&(this._active.size>0||this._checkOcclusion.size>0)&&(this._dirty=!0,this.notifyChange(`_readyToRun`))}setPriority(e,t){let n=this._active.get(e.graphic.uid)?.getInfo(this.visibilityGroup);n&&(n.priority=t)}get _readyToRun(){return this._state!==0||this._dirty}get updating(){return this._readyToRun||this._updatingHandles.updating}get updatingProgress(){if(!this.updating)return 1;let e=this._state/5;return this._dirty?e*.5:e}get readyToRun(){return this.view.ready&&this.view.state!=null&&this._readyToRun}get usedMemory(){return this._occlusionQuery?.usedMemory??0+(this._occlusionQueryUids?.length??0)*4}runTask(e){switch(this._state){case 0:this._startUpdate(),e.madeProgress();case 1:if(this._state=1,!this._processCheckOcclusion(e))return;case 2:if(this._state=2,!(this._occlusionQuery?.done??!0)||!(this._opaqueOcclusionQuery?.done??!0))return V;this._readOcclusionQueryResult(),e.madeProgress();case 3:if(this._state=3,!this._collectActiveGraphics(e))return;case 4:if(this._state=4,this._deconflictor.run(e),!this._deconflictor.done)return;default:this._state=0,this.notifyChange(`_readyToRun`)}}setGraphicsActive(e,t){t?e.forEach(e=>this.addToActiveGraphics(e)):e.forEach(e=>this.removeFromActiveGraphics(e))}isSupportedLayer(e){if(e==null||e.type!==`buffer`||!e.hiddenIfDeconflicted)return!1;let t=e.stageObject;return(t?.geometries.length??0)===1&&t?.geometries[0]?.material instanceof B}_startUpdate(){M(this.view),this._dirty=!1,this._viewState.copyFrom(this.viewState);let{fullWidth:e,fullHeight:t}=this._viewState.camera;this._deconflictor.reset(e,t),this._resetIterators(),this._occlusionQueryUids.length=0,this._checkOcclusion.size||(this._occlusionQuery=r(this._occlusionQuery),this._opaqueOcclusionQuery=r(this._opaqueOcclusionQuery))}addToActiveGraphics(e){e.ensureInfo(this.visibilityGroup),this._active.set(e.graphics3DGraphic.graphic.uid,e),this.setDirty()}removeFromActiveGraphics(e){this._active.get(e.graphics3DGraphic.graphic.uid)===e&&(ue(e,this.visibilityGroup),e.removeInfo(this.visibilityGroup),this._active.delete(e.graphics3DGraphic.graphic.uid),this.setDirty())}addToCheckOcclusion(e){this._checkOcclusion.set(e.graphics3DGraphic.graphic.uid,e),this.setDirty()}removeFromCheckOcclusion(e){this._checkOcclusion.get(e.graphics3DGraphic.graphic.uid)===e&&this._checkOcclusion.delete(e.graphics3DGraphic.graphic.uid)}_processCheckOcclusion(e){if(this._checkOcclusion.size===0)return!0;let t=this._ensureCheckOcclusionIterator(),n=this._viewState.camera,i=o(Y,n.viewInverseTransposeMatrix),a=this.view.map.ground.opacity>0,s=this.view.viewingMode===`global`&&a&&n.relativeElevation>0?ae:null,c=0;s!=null&&(l(s.center,m,n.viewMatrix),s.radius=ee(this.view.spatialReference).radius,c=k.distanceToSilhouette(s,m));let u=x();for(;;){if(e.done)return!1;e.madeProgress();let r=t.next();if(r.done===!0)break;let a=r.value,o=a.graphics3DGraphic;if(o.destroyed||!o.isVisible(1,8))continue;let d=me(o,this.visibilityGroup),f=null,p=!0,m=!1;for(let e of d){if(!this.isSupportedLayer(e))continue;f=he,this._projectHudLayer(e,n,f),te(u);let t=e.stageObject.geometries[0].material;if(this._expandBoundingRect(u,n,e,t,f),f.isOutsideScreen||this._isCulledBySlice(a,f.positionWorld)||s!=null&&pe(f,s,c)){p=!1;break}f.altitude=this.view.renderCoordsHelper.getAltitude(f.positionWorld);let r=a.ensureInfo(this.visibilityGroup);if(r.altitude=f.altitude,r.distance=f.distance,r.distanceToOccluder=f.distanceToOccluder,r.culled=!1,S(r.aabr,u),!e.occlusionCheck)break;l(U,f.positionView,i);let d=this._ensureOcclusionQuery(),h=this._ensureOpaqueOcclusionQuery();this._occlusionQueryUids.length===0&&(this._initOcclusionQuery(d),this._initOcclusionQuery(h));let g=d.addPosition(U),_=h.addPosition(U);if(g===this._occlusionQueryUids.length&&_===g){let t=e.adaptiveOcclusion;this._occlusionQueryUids.push(t?-o.graphic.uid:o.graphic.uid),m=!0}break}let h=this._active.has(o.graphic.uid);if(!h&&!m)this._setGraphicVisibility(a,p);else if(h&&(!p||!f)){let e=a.ensureInfo(this.visibilityGroup);e.visible=!f,e.culled=!0}}return this._checkOcclusionIterator=null,this._occlusionQueryUids.length||(this._occlusionQuery=r(this._occlusionQuery),this._opaqueOcclusionQuery=r(this._opaqueOcclusionQuery)),this._occlusionQuery?.start(),this._opaqueOcclusionQuery?.start(),!0}_readOcclusionQueryResult(){if(!this._occlusionQuery||!this._occlusionQueryUids.length)return;let e=this._viewState.camera,t=this.view.renderCoordsHelper.getAltitude(e.eye);for(let e=0;e<this._occlusionQueryUids.length;e++){let n=this._occlusionQueryUids[e],r=Math.abs(n),i=n<0,a=this._checkOcclusion.get(r);if(!a)continue;let o=this._occlusionQuery.getOcclusion(e)??-1,s=this._opaqueOcclusionQuery?.getOcclusion(e)??-1,c=a.getInfo(this.visibilityGroup);c&&(c.distanceToOccluder=o>0?c.distance-o:0);let l=s===0||s>0&&this._occludedVisibility(c?c.distance-s:0,c?.distance??s,c?.altitude??0,t,i),u=o===0||o>0&&this._occludedVisibility(c?.distanceToOccluder??0,c?.distance??o,c?.altitude??0,t,i),d=l||u;d&&this._setTransparentMode(a,l&&!u),this._active.has(r)?c&&(c.culled=!d,c.visible=d):this._setGraphicVisibility(a,d)}this._occlusionQueryUids.length=0}_collectActiveGraphics(e){let t=this._ensureActiveGraphicsIterator(),n=this.visibilityGroup===16;for(;!e.done;){e.madeProgress();let r=t.next();if(r.done===!0)return this._activeIterator=null,!0;let i=r.value,a=i.getInfo(this.visibilityGroup);if(!a)continue;let o=!n||i.graphics3DGraphic.isVisible();!o||a.culled?(N(a.aabr,!1,!0),this._setGraphicVisibility(i,o&&a.visible)):this._deconflictor.add(a)}return!1}_occludedVisibility(e,t,n,r,i=!0){let a=Math.max(this._minAltitudeDifference,Math.abs(n-r))-this._minAltitudeDifference,o=i?this._baseOccludedVisibility+this._altitudeFactor*a:0;return e===0||t-e<=o}_resetIterators(){this._checkOcclusionIterator=null,this._activeIterator=null}_ensureCheckOcclusionIterator(){return this._checkOcclusionIterator??=this._checkOcclusion.values(),this._checkOcclusionIterator}_ensureActiveGraphicsIterator(){return this._activeIterator??=this._active.values(),this._activeIterator}_initOcclusionQuery(e){if(!e)return;let{camera:t}=this._viewState,n=Math.max(2,2+Math.round(Math.log2(Math.abs(t.relativeElevation))));u(H,this._viewState.camera.eye,2**-n),u(H,d(H,H),2**n),e.init(this._checkOcclusion.size,H)}_ensureOcclusionQuery(){return this._occlusionQuery??=new R({view:this.view}),this._occlusionQuery}_ensureOpaqueOcclusionQuery(){return this._opaqueOcclusionQuery??=new R({view:this.view,category:A.OPAQUE_OCCLUSION_QUERY}),this._opaqueOcclusionQuery}_getNumVisible(e){return this._checkOcclusion.values().reduce((t,n)=>t+ +!!n.getInfo(e)?.visible,0)}_projectHudLayer(e,t,n){let r=e.stageObject,i=r.geometries[0],a=i.material;f(U,r.boundingVolumeWorldSpace.sphere.center),l(H,U,t.viewMatrix);let o=I(i,`normal`).getVec(0,W),s=I(i,`centerOffset`)?.getVec(0,G)??m,c=L(i,`groundDistance`).get(0);a.applyShaderOffsets(U,H,o,r.transformation,s,c,t,n.screenSizePerspectiveEvaluators),g(K,H[0],H[1],H[2],1),_(q,K,t.projectionMatrix),u(n.positionNDC,q,1/q[3]),a.applyShaderOffsetsNDC(n.positionNDC,s,c,t,n.positionNDC,J),n.distanceWithoutPolygonOffset=t.depthNDCToWorld(J[2]),n.distance=J[2]===n.positionNDC[2]?n.distanceWithoutPolygonOffset:t.depthNDCToWorld(n.positionNDC[2]),g(q,n.positionNDC[0],n.positionNDC[1],n.positionNDC[2],1),_(K,q,t.inverseProjectionMatrix),v(K,K,1/K[3]),p(n.positionView,K[0],K[1],K[2]),f(n.positionWorld,U)}_isCulledBySlice(e,t){return e.slicePlaneEnabled&&this._viewState.slicePlaneEnabled&&E(this._viewState.slicePlane,t)}_expandBoundingRect(e,t,r,i,{positionNDC:a,screenSizePerspectiveEvaluators:o}){let s=r.getScreenSize(de);o.evaluator.applyVec2(s,s),s[0]*=t.pixelRatio,s[1]*=t.pixelRatio;let c=C(i.calculateRelativeScreenBounds(s,o.alignmentEvaluator.apply(t.pixelRatio),Z),n(0,t.fullWidth,.5+.5*a[0]),n(0,t.fullHeight,.5+.5*a[1])),l=this.marginFactor;if(l!==0){let e=l*Math.min(w(c),ne(c));c[0]-=e,c[1]-=e,c[2]+=e,c[3]+=e}T(e,c,e)}_setGraphicVisibility(e,t){let n=e?.graphics3DGraphic;n&&!n.destroyed&&(n.setVisibilityFlag(this.visibilityGroup,8,t),this.visibilityGroup===16&&this.view.labeler.setLabelGraphicVisibility(n,t))}_setTransparentMode(e,t){let n=e?.graphics3DGraphic;if(n&&!n.destroyed)for(let e of n.layers){if(e?.type!==`object3d`&&e?.type!==`buffer`)continue;let{graphics3DSymbolLayer:n}=e;P(n)&&n.updateTransparentMode(e,t)}}};e([i({constructOnly:!0})],$.prototype,`view`,void 0),e([i({type:Boolean,readOnly:!0})],$.prototype,`_readyToRun`,null),e([i({type:Boolean,readOnly:!0})],$.prototype,`updating`,null),e([i({readOnly:!0})],$.prototype,`_updatingHandles`,void 0),$=e([a(`esri.views.3d.layers.graphics.Deconflictor`)],$);function ue(e,t){let n=e.graphics3DGraphic;n.destroyed||n.setVisibilityFlag(t,8,!0)}const de=c();class fe{constructor(){this.positionWorld=h(),this.positionView=h(),this.positionNDC=h(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.distanceWithoutPolygonOffset=0,this.screenSizePerspectiveEvaluators=new z}get isOutsideScreen(){let e=this.positionNDC;return e[0]<-1||e[1]<-1||e[2]<-1||e[0]>=1||e[1]>=1||e[2]>=1}}function pe(e,t,n){return f(X.direction,e.positionView),p(X.origin,0,0,0),t.intersectRay(X,oe)?e.distanceWithoutPolygonOffset>n:!1}function me(e,t){return t===16?e.labelLayers:e.layers}const he=new fe;export{$ as Deconflictor,le as DeconflictorGraphic,Q as DeconflictorViewState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{copy as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,add as r,subtract as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a,ZEROS as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{computeTranslationToOriginAndRotation as s}from"../../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as c}from"../../../../geometry/projection/projectBuffer.js";import{BufferViewVec3f as l}from"../../../../geometry/support/buffer/BufferView.js";import{SampleElevationInfo as u,updateVertexPointGroundDistance as d,updateBufferPointGroundDistance as f,computePointTransformation as p,applyBufferPointTransformation as m}from"./elevationAlignmentUtils.js";import{debugFlags as h}from"../../support/debugFlags.js";import{SamplePosition as g}from"../../support/ElevationProvider.js";import{updateObjectVertexField as _,updateVertexFieldVec3f as v}from"../../webgl-engine/lib/bufferGeometryUtils.js";import{isGeometryWithMapPositions as y}from"../../webgl-engine/lib/GeometryWithMapPositions.js";function b(e,t,n,r,i){let a=e.stageObject,o=a.geometries,s=0;for(let e of o){if(!y(e))continue;let{update:o,averageGeometrySampledElevation:c}=P(e,t,n,r,i);s+=c,o&&a.geometryVertexAttributeUpdated(e,`position`)}return s/o.length}function x(t,r,i,a,o,c){let l=t.stageObject,u=r.centerInElevationSR,f=0;a(u,N),l.usesVerticalDistanceToGround?(d(l,N.verticalDistanceToGround),f=N.sampledElevation):r.mode!==`absolute-height`&&(f=N.sampledElevation);let p=e(w,c??l.transformation),m=n(M,p[12],p[13],p[14]);h.ENABLE_OPTIMIZATIONS?o.setAltitudeOfTransformation(N.z,p):(O[0]=u[0],O[1]=u[1],O[2]=N.z,s(i,O,p,o.spatialReference)&&(c?e(c,p):l.transformation=p));let g=D/o.unitInMeters;return(Math.abs(p[12]-m[0])>=g||Math.abs(p[13]-m[1])>=g||Math.abs(p[14]-m[2])>=g)&&(c?e(c,p):l.transformation=p),f}function S(e,t,n,r,i){return C(e,t,n,r,i,o)}function C(e,t,a,o,s,c){let u=t.centerInElevationSR;if(o(u,N),f(e,N.verticalDistanceToGround),h.ENABLE_OPTIMIZATIONS){let t=D/s.unitInMeters;for(let n of e.geometries){let a=n.buffers.vertex.getField(`position`,l),o=n.localOrigin.vec3;a.getVec(0,A),r(O,A,o),i(O,O,c),s.setAltitude(O,N.z),r(O,O,c),i(O,O,o),(Math.abs(O[0]-A[0])>=t||Math.abs(O[1]-A[1])>=t||Math.abs(O[2]-A[2])>=t)&&_(e,v,n,`position`,0,O)}}else n(O,u[0],u[1],N.z),p(O,a,s,w)&&(w[12]+=c[0],w[13]+=c[1],w[14]+=c[2],m(e,w));return N.sampledElevation}const w=t();function T(e,t,r,i,a){let o=e.graphics3DSymbolLayer.lodRenderer;if(o==null)return 0;let c=t.centerInElevationSR;i(c,N);let l=t.mode===`absolute-height`?0:N.sampledElevation,u=o.instanceData,d=e.instanceIndex,f=j;u.getGlobalTransform(d,f);let p=n(M,f[12],f[13],f[14]);h.ENABLE_OPTIMIZATIONS?a.setAltitudeOfTransformation(N.z,f):(O[0]=c[0],O[1]=c[1],O[2]=N.z,s(r,O,f,a.spatialReference)&&u.setGlobalTransform(d,f));let m=D/a.unitInMeters;return(!h.ENABLE_OPTIMIZATIONS||Math.abs(f[12]-p[0])>=m||Math.abs(f[13]-p[1])>=m||Math.abs(f[14]-p[2])>=m)&&u.setGlobalTransform(d,f),l}function E(e,t,n,r,i){let a=e.stageObject,o=a.geometries;if(o.length===0)return 0;let s=0,c=null,l=0,u=!1;for(let e of o){if(!y(e))continue;let o=e.attributes.get(`position`);if(o!==c){let{update:a,averageGeometrySampledElevation:s}=P(e,t,n,r,i);l=s,c=o,u=a}u&&a.geometryVertexAttributeUpdated(e,`position`),s+=l}return s/o.length}const D=.01,O=a(),k=a(),A=a(),j=t(),M=a(),N=new u;function P(e,t,n,r,i){let a=!1,o=e.transformation,s=t.requiresSampledElevationInfo;k[0]=o[12],k[1]=o[13],k[2]=o[14],e.invalidateBoundingInfo();let l=e.getMutableAttribute(`position`),u=l.data,d=l.size,f=u.length/d,p=new g(e.mapPositions,n),m=0,_=0;for(let e=0;e<f;e++){if(A[0]=u[m],A[1]=u[m+1],A[2]=u[m+2],r(p,N),s&&(_+=N.sampledElevation),h.ENABLE_OPTIMIZATIONS){O[0]=u[m]+k[0],O[1]=u[m+1]+k[1],O[2]=u[m+2]+k[2],i.setAltitude(O,N.z),u[m]=O[0]-k[0],u[m+1]=O[1]-k[1],u[m+2]=O[2]-k[2];let e=D/i.unitInMeters;(Math.abs(A[0]-u[m])>=e||Math.abs(A[1]-u[m+1])>=e||Math.abs(A[2]-u[m+2])>=e)&&(a=!0)}else u[m]=p.array[p.offset],u[m+1]=p.array[p.offset+1],u[m+2]=N.z,c(u,n,m,u,i.spatialReference,m,1),u[m]-=k[0],u[m+1]-=k[1],u[m+2]-=k[2],a=!0;m+=d,p.offset+=3}return _/=f,{update:a,averageGeometrySampledElevation:_}}export{S as perBufferPointElevationAligner,T as perLodInstanceElevationAligner,x as perObjectElevationAligner,C as perTranslatedBufferPointElevationAligner,b as perVertexElevationAligner,E as sharedGeometryElevationAligner};
2
+ import{copy as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,add as r,subtract as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a,ZEROS as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{computeTranslationToOriginAndRotation as s}from"../../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as c}from"../../../../geometry/projection/projectBuffer.js";import{BufferViewVec3f as l}from"../../../../geometry/support/buffer/BufferView.js";import{SampleElevationInfo as u,updateBufferPointGroundDistance as d,computePointTransformation as f,applyBufferPointTransformation as p}from"./elevationAlignmentUtils.js";import{debugFlags as m}from"../../support/debugFlags.js";import{SamplePosition as h}from"../../support/ElevationProvider.js";import{updateObjectVertexField as g,updateVertexFieldVec3f as _}from"../../webgl-engine/lib/bufferGeometryUtils.js";import{isGeometryWithMapPositions as v}from"../../webgl-engine/lib/GeometryWithMapPositions.js";function y(e,t,n,r,i){let a=e.stageObject,o=a.geometries,s=0;for(let e of o){if(!v(e))continue;let{update:o,averageGeometrySampledElevation:c}=N(e,t,n,r,i);s+=c,o&&a.geometryVertexAttributeUpdated(e,`position`)}return s/o.length}function b(t,r,i,a,o,c){let l=t.stageObject,u=r.centerInElevationSR;a(u,M);let d=r.requiresSampledElevationInfo?M.sampledElevation:0,f=e(C,c??l.transformation),p=n(j,f[12],f[13],f[14]);m.ENABLE_OPTIMIZATIONS?o.setAltitudeOfTransformation(M.z,f):(D[0]=u[0],D[1]=u[1],D[2]=M.z,s(i,D,f,o.spatialReference)&&(c?e(c,f):l.transformation=f));let h=E/o.unitInMeters;return(Math.abs(f[12]-p[0])>=h||Math.abs(f[13]-p[1])>=h||Math.abs(f[14]-p[2])>=h)&&(c?e(c,f):l.transformation=f),d}function x(e,t,n,r,i){return S(e,t,n,r,i,o)}function S(e,t,a,o,s,c){let u=t.centerInElevationSR;if(o(u,M),d(e,M.verticalDistanceToGround),m.ENABLE_OPTIMIZATIONS){let t=E/s.unitInMeters;for(let n of e.geometries){let a=n.buffers.vertex.getField(`position`,l),o=n.localOrigin.vec3;a.getVec(0,k),r(D,k,o),i(D,D,c),s.setAltitude(D,M.z),r(D,D,c),i(D,D,o),(Math.abs(D[0]-k[0])>=t||Math.abs(D[1]-k[1])>=t||Math.abs(D[2]-k[2])>=t)&&g(e,_,n,`position`,0,D)}}else n(D,u[0],u[1],M.z),f(D,a,s,C)&&(C[12]+=c[0],C[13]+=c[1],C[14]+=c[2],p(e,C));return M.sampledElevation}const C=t();function w(e,t,r,i,a){let o=e.graphics3DSymbolLayer.lodRenderer;if(o==null)return 0;let c=t.centerInElevationSR;i(c,M);let l=t.mode===`absolute-height`?0:M.sampledElevation,u=o.instanceData,d=e.instanceIndex,f=A;u.getGlobalTransform(d,f);let p=n(j,f[12],f[13],f[14]);m.ENABLE_OPTIMIZATIONS?a.setAltitudeOfTransformation(M.z,f):(D[0]=c[0],D[1]=c[1],D[2]=M.z,s(r,D,f,a.spatialReference)&&u.setGlobalTransform(d,f));let h=E/a.unitInMeters;return(!m.ENABLE_OPTIMIZATIONS||Math.abs(f[12]-p[0])>=h||Math.abs(f[13]-p[1])>=h||Math.abs(f[14]-p[2])>=h)&&u.setGlobalTransform(d,f),l}function T(e,t,n,r,i){let a=e.stageObject,o=a.geometries;if(o.length===0)return 0;let s=0,c=null,l=0,u=!1;for(let e of o){if(!v(e))continue;let o=e.attributes.get(`position`);if(o!==c){let{update:a,averageGeometrySampledElevation:s}=N(e,t,n,r,i);l=s,c=o,u=a}u&&a.geometryVertexAttributeUpdated(e,`position`),s+=l}return s/o.length}const E=.01,D=a(),O=a(),k=a(),A=t(),j=a(),M=new u;function N(e,t,n,r,i){let a=!1,o=e.transformation,s=t.requiresSampledElevationInfo;O[0]=o[12],O[1]=o[13],O[2]=o[14],e.invalidateBoundingInfo();let l=e.getMutableAttribute(`position`),u=l.data,d=l.size,f=u.length/d,p=new h(e.mapPositions,n),g=0,_=0;for(let e=0;e<f;e++){if(k[0]=u[g],k[1]=u[g+1],k[2]=u[g+2],r(p,M),s&&(_+=M.sampledElevation),m.ENABLE_OPTIMIZATIONS){D[0]=u[g]+O[0],D[1]=u[g+1]+O[1],D[2]=u[g+2]+O[2],i.setAltitude(D,M.z),u[g]=D[0]-O[0],u[g+1]=D[1]-O[1],u[g+2]=D[2]-O[2];let e=E/i.unitInMeters;(Math.abs(k[0]-u[g])>=e||Math.abs(k[1]-u[g+1])>=e||Math.abs(k[2]-u[g+2])>=e)&&(a=!0)}else u[g]=p.array[p.offset],u[g+1]=p.array[p.offset+1],u[g+2]=M.z,c(u,n,g,u,i.spatialReference,g,1),u[g]-=O[0],u[g+1]-=O[1],u[g+2]-=O[2],a=!0;g+=d,p.offset+=3}return _/=f,{update:a,averageGeometrySampledElevation:_}}export{x as perBufferPointElevationAligner,w as perLodInstanceElevationAligner,b as perObjectElevationAligner,S as perTranslatedBufferPointElevationAligner,y as perVertexElevationAligner,T as sharedGeometryElevationAligner};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{Graphics3DStageObjectGraphicLayer as e}from"./Graphics3DStageObjectGraphicLayer.js";class t extends e{constructor(e,t,n,r,i){super(e,t,n,i),this.elevationAligner=r,this.type=`buffer`}updateMaterial(e){let t=this.usedMemory;this._detachGeometryMemoryCallbacks();let{stageObject:n}=this,r=n.geometries.map(t=>t.instantiate(e));for(let e of r)n.removeGeometry(0),n.addGeometry(e);this._updateGeometryBufferMemory(t)}_alignWithElevation(e,t,n,r){this.elevationAligner!=null&&(this.alignedSampledElevation=this.elevationAligner(this.stageObject,this.elevationContext,e,t,n))}}export{t as Graphics3DBufferGraphicLayer};
2
+ import{Graphics3DStageObjectGraphicLayer as e}from"./Graphics3DStageObjectGraphicLayer.js";class t extends e{get hiddenIfDeconflicted(){return this._getFlag(8)}set hiddenIfDeconflicted(e){this._setFlag(8,e)}get occlusionCheck(){return this._getFlag(16)}get adaptiveOcclusion(){return this._getFlag(32)}setOccludedVisibilityMode(e=`hidden`){this._setFlag(16,e!==`visible`),this._setFlag(32,e===`adaptive`)}constructor(e,t,n,r,i){super(e,t,n,i),this.elevationAligner=r,this.type=`buffer`}initialize(e){super.initialize(e),this.hiddenIfDeconflicted&&(e.add(this.stageObject),this._setFlag(1,!0))}updateMaterial(e){let t=this.usedMemory;this._detachGeometryMemoryCallbacks();let{stageObject:n}=this,r=n.geometries.map(t=>t.instantiate(e));for(let e of r)n.removeGeometry(0),n.addGeometry(e);this._updateGeometryBufferMemory(t)}_alignWithElevation(e,t,n,r){this.elevationAligner!=null&&(this.alignedSampledElevation=this.elevationAligner(this.stageObject,this.elevationContext,e,t,n))}}export{t as Graphics3DBufferGraphicLayer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{pt2px as e}from"../../../../core/screenUtils.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ZEROS as n}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{RenderingInfo as r}from"../../../../renderers/support/RenderingInfo.js";import{textSymbolLayerSupportsVerticalOffset as i}from"../../../../symbols/callouts/calloutUtils.js";import{perObjectElevationAligner as a}from"./ElevationAligners.js";import{elevationModeChangeUpdateType as o,needsElevationUpdates2D as s}from"./elevationAlignmentUtils.js";import{Graphics3DGraphicCreationContext as c}from"./Graphics3DGraphicCreationContext.js";import{Graphics3DObject3DGraphicLayer as l}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DObjectMetadata as u}from"./Graphics3DObjectMetadata.js";import{Graphics3DSymbolLayer as d}from"./Graphics3DSymbolLayer.js";import{computeCentroid as f}from"./graphicUtils.js";import{addOlidAttribute as p}from"./olidUtils.js";import{createStageObject as m,extendPointGraphicElevationContext as h}from"./pointUtils.js";import{SymbolComplexity as g}from"./SymbolComplexity.js";import{isObjectSymbol3DLayer as _,isTextSymbol3DLayer as v}from"../support/layerUtils.js";import{Attribute as y}from"../../webgl-engine/lib/Attribute.js";import{Geometry as b}from"../../webgl-engine/lib/Geometry.js";import{LineCalloutMaterial as x,Parameters as S,uniqueMaterialIdentifier as C}from"../../webgl-engine/materials/LineCalloutMaterial.js";import{getLineCalloutMaterialBaseInstance as w}from"../../webgl-engine/materials/LineCalloutMaterialBaseInstance.js";class T extends d{static{this.elevationModeChangeTypes={definedChanged:1,staysOnTheGround:1,onTheGroundChanged:2}}constructor(e,t){super(e,null,t,k),this._elevationOptions={supportsOffsetAdjustment:!0,supportsOnTheGround:!1},this.ensureDrapedStatus(!1)}async doLoad(){this._materials[0]=new x(this._materialParameters,this._context.spherical)}_perInstanceMaterialParameters(e){let t=this._materialParameters;return t.horizontalScreenOffset=e.horizontalScreenOffset??0,t.centerOffsetUnits=e.centerOffsetUnits||`world`,t}get _materialParameters(){let t=new S,r=this.symbol,i=r.callout;if(i.color){let e=i.color.toUnitRGBA();e[3]*=this._getLayerOpacity(),t.color=e}else t.color=n;if(t.size=e(i.size||0),r.verticalOffset){let{screenLength:n,minWorldLength:i,maxWorldLength:a}=r.verticalOffset;t.verticalOffset={screenLength:e(n),minWorldLength:i||0,maxWorldLength:a??1/0}}t.borderColor=i.border?.color==null?null:i.border.color.toUnitRGBA();let a=r.symbolLayers.at(0),o=_(a),s=r.type===`label-3d`;return o&&(t.shaderPolygonOffset=0),t.hudDepthAlignStart=s,t.hasSlicePlane=this._context.slicePlaneEnabled,t.screenSizePerspective=this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null,t}_defaultElevationInfoNoZ(){return O}createGraphics3DGraphic(e,t){let n=e.renderingInfo,r=e.graphic,a=this.createElevationContextForGraphic(r,n.elevationOffset||0),o=n.symbol,s=this._elevationContext.mode===`on-the-ground`&&(o.type===`cim`||!o.symbolLayers.some(e=>_(e)||v(e)));if(o.type!==`label-3d`&&s||o.type===`point-3d`&&o.symbolLayers.every(e=>e.type===`text`&&!i(e)))return null;let c=f(r.geometry);return c==null?null:this._createAs3DShape(c,a,n,r.uid,t)}layerOpacityChanged(){this._materials[0]?.setParameters(this._materialParameters)}layerScreenSizePerspectiveChanged(){let e=this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null;this._materials[0]?.setParameters({screenSizePerspective:e})}layerElevationInfoChanged(e,t,n){let r=this._elevationContext.mode,i=o(T.elevationModeChangeTypes,n,r);return i===1&&e?.forEach(e=>{let n=t(e);n!=null&&this.graphics3DGraphicLayerElevationInfoChanged(e.graphic,n)}),i}slicePlaneEnabledChanged(){return this._materials[0]?.setParameters({hasSlicePlane:this._context.slicePlaneEnabled}),!0}physicalBasedRenderingChanged(){return!0}createElevationContextForGraphic(e,t=0){let n=super.createElevationContextForGraphic(e);return n.addOffsetRenderUnits(t),n}updateElevationContextForGraphic(e,t,n=0){super.updateElevationContextForGraphic(e,t),e.addOffsetRenderUnits(n)}graphics3DGraphicLayerElevationInfoChanged(e,t){let{elevationContext:n,metadata:r}=t;this.updateElevationContextForGraphic(n,e,r?.elevationOffset??0),t.needsElevationUpdates=s(n.mode)}computeComplexity(){return new g({verticesPerFeature:6})}_getOrCreateMaterial(e,t){let n=this._perInstanceMaterialParameters(e),r=C(n);if(r===this._materials[0]?.uniqueMaterialIdentifier)return this._materials[0];if(t){let e=t.get(r);return e??(e=new x(n,this._context.spherical),t.set(r,e)),e}return new x(n,this._context.spherical)}_createAs3DShape(e,t,n,r,i){let o=this._context.layerViewUid,c=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:r,layerViewUid:o}),d=this._getOrCreateMaterial(n,i),f=new b(d,E(n,c),null,void 0,w()),p=m(this._context,e,f,t,r);if(p==null)return null;let g=new l(this,p.object,null,a,t);return g.hiddenIfDeconflicted=!0,g.metadata=new u(n.elevationOffset),g.alignedSampledElevation=p.sampledElevation,g.needsElevationUpdates=s(t.mode),h(g,e,this._context.elevationProvider),g}}function E(e,t){let{translation:n,centerOffset:r,groundDistance:i}=e,a=n?new y([n[0],n[1],n[2]],D,3,!0):new y([0,0,0],D,3,!0),o=r?new y([r[0],r[1],r[2]],D,3,!0):new y([0,0,0],D,3,!0),s=i==null?new y([1],D,1,!0):new y([i],D,1,!0),c=[[`position`,a],[`normal`,new y([0,0,1],D,3,!0)],[`centerOffset`,o],[`groundDistance`,s]];return t!=null&&p(c,t,D),c}const D=[0],O={mode:`relative-to-ground`,offset:0},k={ignoreDrivers:!0,renderPriority:0,renderPriorityStep:1};class A extends r{constructor(e,n,r=t(),i=t(),a=0,o=0,s=`world`,c=0){super(e,n),this.translation=r,this.centerOffset=i,this.groundDistance=a,this.horizontalScreenOffset=o,this.centerOffsetUnits=s,this.elevationOffset=c}}class j extends c{}export{T as Graphics3DLineCalloutSymbolLayer,j as LineCalloutCreationContext,A as LineCalloutSymbolLayerRenderingInfo};
2
+ import{pt2px as e}from"../../../../core/screenUtils.js";import{subtract as t}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n,ZEROS as r,UNIT_Z as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ZEROS as a}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{RenderingInfo as o}from"../../../../renderers/support/RenderingInfo.js";import{textSymbolLayerSupportsVerticalOffset as s}from"../../../../symbols/callouts/calloutUtils.js";import{perTranslatedBufferPointElevationAligner as c}from"./ElevationAligners.js";import{elevationModeChangeUpdateType as l,needsElevationUpdates2D as u}from"./elevationAlignmentUtils.js";import{Graphics3DBufferGraphicLayer as d}from"./Graphics3DBufferGraphicLayer.js";import{Graphics3DGraphicCreationContext as f}from"./Graphics3DGraphicCreationContext.js";import{Graphics3DObjectMetadata as p}from"./Graphics3DObjectMetadata.js";import{Graphics3DSymbolLayer as m}from"./Graphics3DSymbolLayer.js";import{computeCentroid as h}from"./graphicUtils.js";import{createTranslatedBufferStageObject as g,extendPointGraphicElevationContext as _}from"./pointUtils.js";import{SymbolComplexity as v}from"./SymbolComplexity.js";import{isObjectSymbol3DLayer as y,isTextSymbol3DLayer as b}from"../support/layerUtils.js";import{BufferGeometry as x}from"../../webgl-engine/lib/BufferGeometry.js";import{Buffers as S}from"../../webgl-engine/lib/Buffers.js";import{LineCalloutMaterial as C,Parameters as w,uniqueMaterialIdentifier as T}from"../../webgl-engine/materials/LineCalloutMaterial.js";import{getLineCalloutMaterialBaseInstance as E}from"../../webgl-engine/materials/LineCalloutMaterialBaseInstance.js";import{layout as D}from"../../webgl-engine/shaders/LineCalloutTechnique.js";class O extends m{static{this.elevationModeChangeTypes={definedChanged:1,staysOnTheGround:1,onTheGroundChanged:2}}constructor(e,t){super(e,null,t,M),this._elevationOptions={supportsOffsetAdjustment:!0,supportsOnTheGround:!1},this.ensureDrapedStatus(!1)}async doLoad(){this._materials[0]=new C(this._materialParameters,this._context.spherical)}_perInstanceMaterialParameters(e){let t=this._materialParameters;return t.horizontalScreenOffset=e.horizontalScreenOffset??0,t.centerOffsetUnits=e.centerOffsetUnits||`world`,t}get _materialParameters(){let t=new w,n=this.symbol,r=n.callout;if(r.color){let e=r.color.toUnitRGBA();e[3]*=this._getLayerOpacity(),t.color=e}else t.color=a;if(t.size=e(r.size||0),n.verticalOffset){let{screenLength:r,minWorldLength:i,maxWorldLength:a}=n.verticalOffset;t.verticalOffset={screenLength:e(r),minWorldLength:i||0,maxWorldLength:a??1/0}}t.borderColor=r.border?.color==null?null:r.border.color.toUnitRGBA();let i=n.symbolLayers.at(0),o=y(i),s=n.type===`label-3d`;return o&&(t.shaderPolygonOffset=0),t.hudDepthAlignStart=s,t.hasSlicePlane=this._context.slicePlaneEnabled,t.screenSizePerspective=this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null,t}_defaultElevationInfoNoZ(){return j}createGraphics3DGraphic(e,t){let n=e.renderingInfo,r=e.graphic,i=n.symbol,a=this._elevationContext.mode===`on-the-ground`&&(i.type===`cim`||!i.symbolLayers.some(e=>y(e)||b(e)));if(i.type!==`label-3d`&&a||i.type===`point-3d`&&i.symbolLayers.every(e=>e.type===`text`&&!s(e)))return null;let o=h(r.geometry);return o==null?null:this._createAs3DShape(r,o,n,t)}layerOpacityChanged(){this._materials[0]?.setParameters(this._materialParameters)}layerScreenSizePerspectiveChanged(){let e=this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null;this._materials[0]?.setParameters({screenSizePerspective:e})}layerElevationInfoChanged(e,t,n){let r=this._elevationContext.mode,i=l(O.elevationModeChangeTypes,n,r);return i===1&&e?.forEach(e=>{let n=t(e);n!=null&&this.graphics3DGraphicLayerElevationInfoChanged(e.graphic,n)}),i}slicePlaneEnabledChanged(){return this._materials[0]?.setParameters({hasSlicePlane:this._context.slicePlaneEnabled}),!0}physicalBasedRenderingChanged(){return!0}createElevationContextForGraphic(e,t=0){let n=super.createElevationContextForGraphic(e);return n.addOffsetRenderUnits(t),n}updateElevationContextForGraphic(e,t,n=0){super.updateElevationContextForGraphic(e,t),e.addOffsetRenderUnits(n)}graphics3DGraphicLayerElevationInfoChanged(e,t){let{elevationContext:n,metadata:r}=t;this.updateElevationContextForGraphic(n,e,r?.elevationOffset??0),t.needsElevationUpdates=u(n.mode)||n.mode===`absolute-height`}computeComplexity(){return new v({verticesPerFeature:6})}_getOrCreateMaterial(e,t){let n=this._perInstanceMaterialParameters(e),r=T(n);if(r===this._materials[0]?.uniqueMaterialIdentifier)return this._materials[0];if(t){let e=t.get(r);return e??(e=new C(n,this._context.spherical),t.set(r,e)),e}return new C(n,this._context.spherical)}_createAs3DShape(e,t,i,a){let o=n(),s=this.createElevationContextForGraphic(e,i.elevationOffset||0),l=e.uid,f=this._getOrCreateMaterial(i,a),{centerOffset:m}=i,h=g(this._context,t,f,{centerOffset:m},s,l,i.translation??r,o,k);if(h==null)return null;let v=new d(this,h.object,null,(e,t,n,r,i)=>c(e,t,n,r,i,o),s);return v.hiddenIfDeconflicted=!0,v.metadata=new p(i.elevationOffset),v.alignedSampledElevation=h.sampledElevation,v.needsElevationUpdates=u(s.mode)||s.mode===`absolute-height`,_(v,t,this._context.elevationProvider),v}}function k(e,n,{position:a,normal:o,groundDistance:s,centerOffset:c}={}){let l=D.createBuffer(1);return t(A,a??r,n.vec3),l.position.setVec(0,A),l.normal.setVec(0,o??i),l.groundDistance.set(0,s??1),l.centerOffset.setVec(0,c??r),new x(e,new S(l),n,null,E())}const A=n(),j={mode:`relative-to-ground`,offset:0},M={ignoreDrivers:!0,renderPriority:0,renderPriorityStep:1};class N extends o{constructor(e,t,r=n(),i=n(),a=0,o=0,s=`world`,c=0){super(e,t),this.translation=r,this.centerOffset=i,this.groundDistance=a,this.horizontalScreenOffset=o,this.centerOffsetUnits=s,this.elevationOffset=c}}class P extends f{}export{O as Graphics3DLineCalloutSymbolLayer,P as LineCalloutCreationContext,N as LineCalloutSymbolLayerRenderingInfo,k as createLineCalloutBufferGeometry};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../core/Error.js";import has from"../../../../core/has.js";import{onePixelInPoints as t,pt2px as n,onePointInPixels as r}from"../../../../core/screenUtils.js";import{fromValues as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as a}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{ZEROS as o,clone as s,ones as c}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as l,fromBuffer as u,intersectsClippingArea as d,empty as f,expandWithAABB as p,expandWithBuffer as m}from"../../../../geometry/support/aaBoundingBox.js";import{getDriverAxisSizeValueAny as h}from"../../../../renderers/support/renderingInfoUtils.js";import{getTransformationType as g}from"../../../../renderers/visualVariables/support/sizeVariableUtils.js";import{sharedGeometryElevationAligner as _}from"./ElevationAligners.js";import{elevationModeChangeUpdateType as v,needsElevationUpdates2D as y}from"./elevationAlignmentUtils.js";import{Graphics3DDrapedGraphicLayer as b}from"./Graphics3DDrapedGraphicLayer.js";import{Graphics3DObject3DGraphicLayer as x}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as S,nanFallbackColor as C}from"./Graphics3DSymbolLayer.js";import{parseCapType as w,computeSymbolLayerIndex as T,parseLineMarkerStyle as E}from"./lineUtils.js";import{initFastSymbolUpdatesState as D,updateFastSymbolUpdatesState as O,getAttributeValue as k,getSizeAttributeValue as A,ConvertOptions as j}from"../support/FastSymbolUpdates.js";import{debugFlags as M}from"../../support/debugFlags.js";import{createGeometry as N}from"../../support/engineContent/line.js";import{geometryToRenderInfo as P,geometryToRenderInfoDraped as F}from"../../support/renderInfoUtils/line.js";import{Object3D as I}from"../../webgl-engine/lib/Object3D.js";import{RenderGeometry as L}from"../../webgl-engine/lib/RenderGeometry.js";import{LineMarkerMaterial as R}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{getStipplePatternForLinePattern as z,patternHidesLine as B}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as V}from"../../webgl-engine/materials/RibbonLineMaterial.js";const H=[`polyline`];class U extends S{static{this.elevationModeChangeTypes={definedChanged:2,staysOnTheGround:0,onTheGroundChanged:2}}constructor(e,t,n,r){super(e,t,n,r,K(t))}async doLoad(){if(this._fastUpdates=D(this._context.renderer,this._fastVisualVariableConvertOptions()),this._fastMarkerUpdates=D(this._context.renderer,this._fastVisualVariableConvertOptions(!0)),!this._drivenProperties.size&&(this.symbolLayer.size==null?t:this.symbolLayer.size)<0)throw new e(`graphics3dlinesymbollayer:invalid-size`,`Symbol sizes may not be negative values`)}_getMaterialParameters(e,t){let n=this._screenSizePerspective,r=!!has(`enable-feature:emissive-on-non-volumetric`)&&!this.draped,{symbolLayer:i}=this,{worldSized:a}=this.symbol,o={...this._getMaterialColorParameters(t),shadingEnabled:r,width:this._computeMaterialWidth(i.size,a),worldSized:a,polygonOffset:3,polygonOffsetIndex:T(this._renderPriority,this._renderPriorityStep),join:i.join||`miter`,cap:w(i.cap||`butt`),hasSlicePlane:this._context.slicePlaneEnabled,isClosed:e,stipplePattern:z(i.pattern??i.imagePattern),emissiveStrength:this._emissiveStrength,screenSizePerspective:n};if(t===2){if(this._fastMarkerUpdates?.visualVariables)return{...o,...this._fastMarkerUpdates.materialParameters}}else if(this._fastUpdates?.visualVariables)return{...o,...this._fastUpdates.materialParameters};return o}_getMaterialColorParameters(e){let t=e===2,n=this._getCombinedOpacityAndColor(t&&this._markerColor||this._materialColor);return this._patternHidesLine&&!t&&(n[3]=0),{color:n}}get _materialColor(){return this.symbolLayer.material?.color}get _emissiveStrength(){let e=this.symbolLayer.material?.emissive;return(e?.source===`color`?e?.strength:void 0)??0}get _markerColor(){return this.symbolLayer.marker?.color}get _lineMaterial(){return this._materials[0]??=new V(this._getMaterialParameters(!1,0),this.view),this._materials[0]}get _wireframeLineMaterial(){return this._materials[1]??=new V({...this._getMaterialParameters(!1,1),wireframe:!0},this.view),this._materials[1]}get _markerMaterial(){return this._materials[2]==null&&this.symbolLayer.marker!=null&&(this._materials[2]=new R({...this._getMaterialParameters(!1,2),placement:this.symbolLayer.marker.placement,markerPrimitive:E(this.symbolLayer.marker.style)},this.view.state.isGlobal)),this._materials[2]}_getDrivenSize(e){if(this._drivenProperties.size){let t=e.size;if(t==null)return this._getFallbackSize();let n=h(t.output);return this._getWorldOrScreenSize(n)}return 1}_getDrivenColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._materialColor)&&(n[3]=t?.output??this._getFallbackOpacity()),n}_getDrivenMarkerColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackMarkerOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._markerColor||this._materialColor)&&(n[3]=t?.output??this._getFallbackMarkerOpacity()),n}createGraphics3DGraphic(e){let t=e.graphic;if(!this._validatePolylineContext(e))return null;this._warnIfVVRequiresWorldSized(e.renderingInfo);let n=this.createElevationContextForGraphic(t),r=n.mode===`on-the-ground`;return this.ensureDrapedStatus(r),this.draped?this._createAsOverlay(e):this._createAs3DShape(e,n,t.uid)}_validatePolylineContext(e){let t=e.graphic.geometry;return this._validateGeometry(t,H,this.symbolLayer.type)&&t.type===`polyline`}applyRendererDiff(e,t){for(let n in e.diff)switch(n){case`visualVariables`:{let e=this._fastUpdates;if(O(e,t,this._fastVisualVariableConvertOptions()))for(let t of this._materials)t instanceof V&&t.setParameters(e.materialParameters);else return 0;let n=this._fastMarkerUpdates;if(O(n,t,this._fastVisualVariableConvertOptions(!0)))for(let e of this._materials)e instanceof R&&e.setParameters(n.materialParameters);else return 0}break;default:return 0}return`visualVariables`in e.diff&&this._warnIfVVRequiresWorldSized(),2}_warnIfVVRequiresWorldSized(e){if(this.symbol.worldSized||this.ignoreDrivers)return;let t=this._getSizeVariable(e);t==null||t.useSymbolValue||t.target===`outline`||g(t)===`real-world-size`&&this.logger.warnOnce(`SizeVariable uses real-world units, but LineSymbol3D.worldSized is false. Set LineSymbol3D.worldSized to true to render real-world line widths.`)}_getSizeVariable(e){let t=this._fastUpdates?.visualVariables.size;if(t)return t.variables[0];let n=e?.size,r=n?.output.findIndex(e=>typeof e==`number`);return r==null?null:n?.variables[r]}prepareSymbolLayerPatch(e){if(e.diff.type!==`partial`)return;let t=e.diff.diff,n={};t.size?.type===`complete`&&(n.width=this._computeMaterialWidth(t.size.newValue,this.symbol.worldSized),delete t.size),t.cap?.type===`complete`&&(n.cap=w(t.cap.newValue??`butt`),delete t.cap);let r=this._prepareMarkerPatch(e,t);this._prepareMaterialPatch(e,t,r),e.symbolLayerStatePatches.push(()=>{for(let e of this._materials)e?.setParameters(n)})}layerOpacityChanged(){for(let e=0;e<3;e++)this._materials[e]?.setParameters(this._getMaterialColorParameters(e))}get _screenSizePerspective(){return!this.draped&&this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null}layerScreenSizePerspectiveChanged(){let e=this._screenSizePerspective;for(let t of this._materials)t?.setParameters({screenSizePerspective:e})}layerElevationInfoChanged(e,t,n){let r=this._elevationContext.mode,i=v(U.elevationModeChangeTypes,n,r);if(i!==1)return i;let a=y(r);return this.updateGraphics3DGraphicElevationInfo(e,t,()=>a)}slicePlaneEnabledChanged(){let e={hasSlicePlane:this._context.slicePlaneEnabled};for(let t of this._materials)t?.setParameters(e);return!0}physicalBasedRenderingChanged(){return!0}_createAs3DShape(e,t,n){let r=e.graphic,i=W(r.geometry);if(i==null)return null;let a=[],o=l(),s=P(i,this._context.elevationProvider,this._context.renderCoordsHelper,t);this._logGeometryCreationWarnings(s,i.paths,`paths`,`LineSymbol3DLayer`);for(let t=0;t<s.lines.length;t++){let r=s.lines[t],c=r.position,l=r.mapPositions;if(this._context.clippingExtent!=null&&(u(l,o),!d(o,this._context.clippingExtent)))continue;let f=this._createGeometry(this._lineMaterial,e,c,l,i.type,1,n);if(a.push(f),M.LINE_WIREFRAMES&&a.push(f.instantiate({material:this._wireframeLineMaterial})),this._markerMaterial!=null){let t=f.instantiate({material:this._markerMaterial});t.attributes.has(`color`)&&t.setAttributeData(`color`,this._getDrivenMarkerColor(e.renderingInfo)),a.push(t)}}if(a.length===0)return null;let c=this._context.layerViewUid,f=new I({geometries:a,castShadow:!1,layerViewUid:c,graphicUid:n}),p=new x(this,f,null,_,t);return p.alignedSampledElevation=s.sampledElevation,p.needsElevationUpdates=y(t.mode),p}_createGeometry(e,t,n,r,i,a,o){let s=a===0?{spatialReference:this._context.overlaySR,renderCoordsHelper:this._context.renderCoordsHelper}:null,c=i===`polygon`,l=this._fastUpdates?.visualVariables.color,u=this._fastUpdates?.visualVariables.size,d=this._fastUpdates?.visualVariables.opacity,f=this._context.layerViewUid,p=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:o,layerViewUid:f}),{renderingInfo:m}=t,h={position:n,size:u?null:this._getDrivenSize(m),color:l?null:this._getDrivenColor(m),sizeFeature:u?A(u,m.size):null,colorFeature:l?k(l,m.color):null,opacityFeature:d?k(d,m.opacity):null};return N(e,{overlayInfo:s,removeDuplicateStartEnd:c,mapPositions:r,attributeData:h},p)}_createAsOverlay(e){let t=e.graphic,{geometry:n}=t;this._lineMaterial.renderPriority=this._renderPriority;let r=M.LINE_WIREFRAMES?this._wireframeLineMaterial:null,i=this._markerMaterial;r!=null&&(r.renderPriority=this._renderPriority-.001),i!=null&&(i.renderPriority=this._renderPriority-.002);let a=[],o=l(),s=f(),c=F(n,this._context.overlaySR);this._logGeometryCreationWarnings(c,n.paths,`paths`,`LineSymbol3DLayer`);for(let l of c.lines){if(u(l.position,o),!d(o,this._context.clippingExtent))continue;p(s,o);let c=this._createGeometry(this._lineMaterial,e,l.position,void 0,n.type,0,t.uid),f=e=>{let n=this._context.layerViewUid,r=new L(e,{layerViewUid:n,graphicUid:t.uid});a.push(r)};if(i!=null){let t=c.instantiate({material:i});t.attributes.has(`color`)&&t.setAttributeData(`color`,this._getDrivenMarkerColor(e.renderingInfo)),f(t);let n=this.symbolLayer.marker.placement;(n===`begin`||n===`begin-end`)&&m(o,l.position,0,1),(n===`end`||n===`begin-end`)&&m(o,l.position,l.position.length-3,1)}f(c),M.LINE_WIREFRAMES&&f(c.instantiate({material:r}))}return new b(this,a,s,this._context.drapeSourceRenderer)}get _patternHidesLine(){return B(this.symbolLayer.pattern)}_computeMaterialWidth(e,i){return i?this._drivenProperties.size?1:e??1:(e??=t,this._drivenProperties.size?this._fastUpdates?.visualVariables.size?r:1:n(e))}_prepareMaterialPatch(e,t,n){let r=t.material;if(r==null){n.changed&&n.useMaterialColor&&G(this._getCombinedOpacityAndColor(this._materialColor),this._materials[2],e);return}if(r.type===`collection`)return;let i=r.type===`complete`?r.newValue?.color:r.diff.color?.type===`complete`?r.diff.color.newValue:null,a=this._getCombinedOpacityAndColor(i);n.useMaterialColor&&G(s(a),this._materials[2],e),this._patternHidesLine&&(a[3]=0),G(a,this._materials[0],e),delete t.material}_prepareMarkerPatch(e,t){let n=t.marker,r=this._markerMaterial;if(n==null||n.type!==`partial`||n.diff==null||n.diff.placement!=null||n.diff.style!=null&&n.diff.style.type!==`complete`||n.diff.color!=null&&n.diff.color.type!==`complete`||r==null)return{changed:!1,useMaterialColor:this._markerColor==null};let i=n.diff.color,a=i!=null,o=a?i.newValue:null,s=o==null&&this._markerColor==null;o&&G(this._getCombinedOpacityAndColor(o),r,e);let c=n.diff.style?.newValue;return c&&e.symbolLayerStatePatches.push(()=>r.setParameters({markerPrimitive:E(c)})),delete t.marker,{changed:a,useMaterialColor:s}}_fastVisualVariableConvertOptions(e=!1){let t=this._getFallbackSize(),{size:n}=this.symbolLayer;return new j({supports:{size:!0,color:!0,rotation:!1,opacity:!0},symbolSize:i(n,n,n),fallbackColor:e?this._getFallbackMarkerOpacityAndColor(C):this._getFallbackOpacityAndColor(C),fallbackSize:i(t,t,t)})}_getFallbackOpacityAndColor(e){return this._materialColor?.toUnitRGBA()??e}_getFallbackOpacity(){return this._materialColor?.a??0}_getFallbackMarkerOpacityAndColor(e){return this.symbolLayer.marker?.color?.toUnitRGBA()??this._getFallbackOpacityAndColor(e)}_getFallbackMarkerOpacity(){return this.symbolLayer.marker?.color?.a??this._getFallbackOpacity()}_getWorldOrScreenSize(e){return this.symbol.worldSized?e:n(e)}_getFallbackSize(){return this._getWorldOrScreenSize(this.symbolLayer.size)}}function W(e){return e.type===`polyline`?e:null}function G(e,t,n){t!=null&&n.symbolLayerStatePatches.push(()=>t.setParameters({color:e}))}function K(e){return(e.material?.color?.a??1)===1&&(e.marker?.color?.a??1)===1}export{U as Graphics3DLineSymbolLayer};
2
+ import e from"../../../../core/Error.js";import has from"../../../../core/has.js";import{onePixelInPoints as t,pt2px as n,onePointInPixels as r}from"../../../../core/screenUtils.js";import{fromValues as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as a}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{ZEROS as o,clone as s,ones as c}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as l,fromBuffer as u,intersectsClippingArea as d,empty as f,expandWithAABB as p,expandWithBuffer as m}from"../../../../geometry/support/aaBoundingBox.js";import{getDriverAxisSizeValueAny as h}from"../../../../renderers/support/renderingInfoUtils.js";import{getTransformationType as g}from"../../../../renderers/visualVariables/support/sizeVariableUtils.js";import{sharedGeometryElevationAligner as _}from"./ElevationAligners.js";import{elevationModeChangeUpdateType as v,needsElevationUpdates2D as y}from"./elevationAlignmentUtils.js";import{Graphics3DDrapedGraphicLayer as b}from"./Graphics3DDrapedGraphicLayer.js";import{Graphics3DObject3DGraphicLayer as x}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as S,nanFallbackColor as C}from"./Graphics3DSymbolLayer.js";import{parseCapType as w,computeSymbolLayerIndex as T,parseLineMarkerStyle as E}from"./lineUtils.js";import{initFastSymbolUpdatesState as D,updateFastSymbolUpdatesState as O,getAttributeValue as k,getSizeAttributeValue as A,ConvertOptions as j}from"../support/FastSymbolUpdates.js";import{debugFlags as M}from"../../support/debugFlags.js";import{createGeometry as N}from"../../support/engineContent/line.js";import{geometryToRenderInfo as P,geometryToRenderInfoDraped as F}from"../../support/renderInfoUtils/line.js";import{Object3D as I}from"../../webgl-engine/lib/Object3D.js";import{RenderGeometry as L}from"../../webgl-engine/lib/RenderGeometry.js";import{LineMarkerMaterial as R}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{getStipplePatternForLinePattern as z,patternHidesLine as B}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as V}from"../../webgl-engine/materials/RibbonLineMaterial.js";const H=[`polyline`];class U extends S{static{this.elevationModeChangeTypes={definedChanged:2,staysOnTheGround:0,onTheGroundChanged:2}}constructor(e,t,n,r){super(e,t,n,r,K(t))}async doLoad(){if(this._fastUpdates=D(this._context.renderer,this._fastVisualVariableConvertOptions()),this._fastMarkerUpdates=D(this._context.renderer,this._fastVisualVariableConvertOptions(!0)),!this._drivenProperties.size&&(this.symbolLayer.size==null?t:this.symbolLayer.size)<0)throw new e(`graphics3dlinesymbollayer:invalid-size`,`Symbol sizes may not be negative values`)}_getMaterialParameters(e,t){let n=this._screenSizePerspective,r=!!has(`enable-feature:emissive-on-non-volumetric`)&&!this.draped,{symbolLayer:i}=this,{worldSized:a}=this.symbol,o={...this._getMaterialColorParameters(t),shadingEnabled:r,width:this._computeMaterialWidth(i.size,a),worldSized:a,polygonOffset:3,polygonOffsetIndex:T(this._renderPriority,this._renderPriorityStep),join:i.join||`miter`,cap:w(i.cap||`butt`),hasSlicePlane:this._context.slicePlaneEnabled,isClosed:e,stipplePattern:z(i.pattern??i.imagePattern),emissiveStrength:this._emissiveStrength,screenSizePerspective:n};if(t===2){if(this._fastMarkerUpdates?.visualVariables)return{...o,...this._fastMarkerUpdates.materialParameters}}else if(o.hasVertexColor=this._hasDrivenColorOrOpacity,o.hasVertexSize=this._drivenProperties.size,o.hasLineDistance=o.stipplePattern!=null,this._fastUpdates?.visualVariables)return{...o,...this._fastUpdates.materialParameters};return o}_getMaterialColorParameters(e){let t=e===2,n=this._getCombinedOpacityAndColor(t&&this._markerColor||this._materialColor);return this._patternHidesLine&&!t&&(n[3]=0),{color:n}}get _materialColor(){return this.symbolLayer.material?.color}get _emissiveStrength(){let e=this.symbolLayer.material?.emissive;return(e?.source===`color`?e?.strength:void 0)??0}get _markerColor(){return this.symbolLayer.marker?.color}get _lineMaterial(){return this._materials[0]??=new V(this._getMaterialParameters(!1,0),this.view),this._materials[0]}get _wireframeLineMaterial(){return this._materials[1]??=new V({...this._getMaterialParameters(!1,1),wireframe:!0},this.view),this._materials[1]}get _markerMaterial(){return this._materials[2]==null&&this.symbolLayer.marker!=null&&(this._materials[2]=new R({...this._getMaterialParameters(!1,2),placement:this.symbolLayer.marker.placement,markerPrimitive:E(this.symbolLayer.marker.style)},this.view.state.isGlobal)),this._materials[2]}_getDrivenSize(e){if(this._drivenProperties.size){let t=e.size;if(t==null)return this._getFallbackSize();let n=h(t.output);return this._getWorldOrScreenSize(n)}return 1}_getDrivenColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._materialColor)&&(n[3]=t?.output??this._getFallbackOpacity()),n}_getDrivenMarkerColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackMarkerOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._markerColor||this._materialColor)&&(n[3]=t?.output??this._getFallbackMarkerOpacity()),n}createGraphics3DGraphic(e){let t=e.graphic;if(!this._validatePolylineContext(e))return null;this._warnIfVVRequiresWorldSized(e.renderingInfo);let n=this.createElevationContextForGraphic(t),r=n.mode===`on-the-ground`;return this.ensureDrapedStatus(r),this.draped?this._createAsOverlay(e):this._createAs3DShape(e,n,t.uid)}_validatePolylineContext(e){let t=e.graphic.geometry;return this._validateGeometry(t,H,this.symbolLayer.type)&&t.type===`polyline`}applyRendererDiff(e,t){for(let n in e.diff)switch(n){case`visualVariables`:{let e=this._fastUpdates;if(O(e,t,this._fastVisualVariableConvertOptions()))for(let t of this._materials)t instanceof V&&t.setParameters(e.materialParameters);else return 0;let n=this._fastMarkerUpdates;if(O(n,t,this._fastVisualVariableConvertOptions(!0)))for(let e of this._materials)e instanceof R&&e.setParameters(n.materialParameters);else return 0}break;default:return 0}return`visualVariables`in e.diff&&this._warnIfVVRequiresWorldSized(),2}_warnIfVVRequiresWorldSized(e){if(this.symbol.worldSized||this.ignoreDrivers)return;let t=this._getSizeVariable(e);t==null||t.useSymbolValue||t.target===`outline`||g(t)===`real-world-size`&&this.logger.warnOnce(`SizeVariable uses real-world units, but LineSymbol3D.worldSized is false. Set LineSymbol3D.worldSized to true to render real-world line widths.`)}_getSizeVariable(e){let t=this._fastUpdates?.visualVariables.size;if(t)return t.variables[0];let n=e?.size,r=n?.output.findIndex(e=>typeof e==`number`);return r==null?null:n?.variables[r]}prepareSymbolLayerPatch(e){if(e.diff.type!==`partial`)return;let t=e.diff.diff,n={};t.size?.type===`complete`&&(n.width=this._computeMaterialWidth(t.size.newValue,this.symbol.worldSized),delete t.size),t.cap?.type===`complete`&&(n.cap=w(t.cap.newValue??`butt`),delete t.cap);let r=this._prepareMarkerPatch(e,t);this._prepareMaterialPatch(e,t,r),e.symbolLayerStatePatches.push(()=>{for(let e of this._materials)e?.setParameters(n)})}layerOpacityChanged(){for(let e=0;e<3;e++)this._materials[e]?.setParameters(this._getMaterialColorParameters(e))}get _screenSizePerspective(){return!this.draped&&this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null}layerScreenSizePerspectiveChanged(){let e=this._screenSizePerspective;for(let t of this._materials)t?.setParameters({screenSizePerspective:e})}layerElevationInfoChanged(e,t,n){let r=this._elevationContext.mode,i=v(U.elevationModeChangeTypes,n,r);if(i!==1)return i;let a=y(r);return this.updateGraphics3DGraphicElevationInfo(e,t,()=>a)}slicePlaneEnabledChanged(){let e={hasSlicePlane:this._context.slicePlaneEnabled};for(let t of this._materials)t?.setParameters(e);return!0}physicalBasedRenderingChanged(){return!0}_createAs3DShape(e,t,n){let r=e.graphic,i=W(r.geometry);if(i==null)return null;let a=[],o=l(),s=P(i,this._context.elevationProvider,this._context.renderCoordsHelper,t);this._logGeometryCreationWarnings(s,i.paths,`paths`,`LineSymbol3DLayer`);for(let t=0;t<s.lines.length;t++){let r=s.lines[t],c=r.position,l=r.mapPositions;if(this._context.clippingExtent!=null&&(u(l,o),!d(o,this._context.clippingExtent)))continue;let f=this._createGeometry(this._lineMaterial,e,c,l,i.type,1,n);if(a.push(f),M.LINE_WIREFRAMES&&a.push(f.instantiate({material:this._wireframeLineMaterial})),this._markerMaterial!=null){let t=f.instantiate({material:this._markerMaterial});t.attributes.has(`color`)&&t.setAttributeData(`color`,this._getDrivenMarkerColor(e.renderingInfo)),a.push(t)}}if(a.length===0)return null;let c=this._context.layerViewUid,f=new I({geometries:a,castShadow:!1,layerViewUid:c,graphicUid:n}),p=new x(this,f,null,_,t);return p.alignedSampledElevation=s.sampledElevation,p.needsElevationUpdates=y(t.mode),p}_createGeometry(e,t,n,r,i,a,o){let s=a===0?{spatialReference:this._context.overlaySR,renderCoordsHelper:this._context.renderCoordsHelper}:null,c=i===`polygon`,l=this._fastUpdates?.visualVariables.color,u=this._fastUpdates?.visualVariables.size,d=this._fastUpdates?.visualVariables.opacity,f=this._context.layerViewUid,p=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:o,layerViewUid:f}),{renderingInfo:m}=t,h={position:n,size:u?null:this._getDrivenSize(m),color:l?null:this._getDrivenColor(m),sizeFeature:u?A(u,m.size):null,colorFeature:l?k(l,m.color):null,opacityFeature:d?k(d,m.opacity):null};return N(e,{overlayInfo:s,removeDuplicateStartEnd:c,mapPositions:r,attributeData:h},p)}_createAsOverlay(e){let t=e.graphic,{geometry:n}=t;this._lineMaterial.renderPriority=this._renderPriority;let r=M.LINE_WIREFRAMES?this._wireframeLineMaterial:null,i=this._markerMaterial;r!=null&&(r.renderPriority=this._renderPriority-.001),i!=null&&(i.renderPriority=this._renderPriority-.002);let a=[],o=l(),s=f(),c=F(n,this._context.overlaySR);this._logGeometryCreationWarnings(c,n.paths,`paths`,`LineSymbol3DLayer`);for(let l of c.lines){if(u(l.position,o),!d(o,this._context.clippingExtent))continue;p(s,o);let c=this._createGeometry(this._lineMaterial,e,l.position,void 0,n.type,0,t.uid),f=e=>{let n=this._context.layerViewUid,r=new L(e,{layerViewUid:n,graphicUid:t.uid});a.push(r)};if(i!=null){let t=c.instantiate({material:i});t.attributes.has(`color`)&&t.setAttributeData(`color`,this._getDrivenMarkerColor(e.renderingInfo)),f(t);let n=this.symbolLayer.marker.placement;(n===`begin`||n===`begin-end`)&&m(o,l.position,0,1),(n===`end`||n===`begin-end`)&&m(o,l.position,l.position.length-3,1)}f(c),M.LINE_WIREFRAMES&&f(c.instantiate({material:r}))}return new b(this,a,s,this._context.drapeSourceRenderer)}get _patternHidesLine(){return B(this.symbolLayer.pattern)}_computeMaterialWidth(e,i){return i?this._drivenProperties.size?1:e??1:(e??=t,this._drivenProperties.size?this._fastUpdates?.visualVariables.size?r:1:n(e))}_prepareMaterialPatch(e,t,n){let r=t.material;if(r==null){n.changed&&n.useMaterialColor&&G(this._getCombinedOpacityAndColor(this._materialColor),this._materials[2],e);return}if(r.type===`collection`)return;let i=r.type===`complete`?r.newValue?.color:r.diff.color?.type===`complete`?r.diff.color.newValue:null,a=this._getCombinedOpacityAndColor(i);n.useMaterialColor&&G(s(a),this._materials[2],e),this._patternHidesLine&&(a[3]=0),G(a,this._materials[0],e),delete t.material}_prepareMarkerPatch(e,t){let n=t.marker,r=this._markerMaterial;if(n==null||n.type!==`partial`||n.diff==null||n.diff.placement!=null||n.diff.style!=null&&n.diff.style.type!==`complete`||n.diff.color!=null&&n.diff.color.type!==`complete`||r==null)return{changed:!1,useMaterialColor:this._markerColor==null};let i=n.diff.color,a=i!=null,o=a?i.newValue:null,s=o==null&&this._markerColor==null;o&&G(this._getCombinedOpacityAndColor(o),r,e);let c=n.diff.style?.newValue;return c&&e.symbolLayerStatePatches.push(()=>r.setParameters({markerPrimitive:E(c)})),delete t.marker,{changed:a,useMaterialColor:s}}_fastVisualVariableConvertOptions(e=!1){let t=this._getFallbackSize(),{size:n}=this.symbolLayer;return new j({supports:{size:!0,color:!0,rotation:!1,opacity:!0},symbolSize:i(n,n,n),fallbackColor:e?this._getFallbackMarkerOpacityAndColor(C):this._getFallbackOpacityAndColor(C),fallbackSize:i(t,t,t)})}_getFallbackOpacityAndColor(e){return this._materialColor?.toUnitRGBA()??e}_getFallbackOpacity(){return this._materialColor?.a??0}_getFallbackMarkerOpacityAndColor(e){return this.symbolLayer.marker?.color?.toUnitRGBA()??this._getFallbackOpacityAndColor(e)}_getFallbackMarkerOpacity(){return this.symbolLayer.marker?.color?.a??this._getFallbackOpacity()}_getWorldOrScreenSize(e){return this.symbol.worldSized?e:n(e)}_getFallbackSize(){return this._getWorldOrScreenSize(this.symbolLayer.size)}}function W(e){return e.type===`polyline`?e:null}function G(e,t,n){t!=null&&n.symbolLayerStatePatches.push(()=>t.setParameters({color:e}))}function K(e){return(e.material?.color?.a??1)===1&&(e.marker?.color?.a??1)===1}export{U as Graphics3DLineSymbolLayer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- const e=3,t=4,n=3,r=10,i=2**24,a=i-1;export{a as maxPathFrameIndex,i as maxPathLength,r as pathNumCircleProfileSubdivisions,e as pathNumJoinSubdivisions,t as pathNumProfilesPerJoin,n as pathNumRoundCapExtrusionSubdivisions};
2
+ import{pathVertexInfoPacking as e}from"../../webgl-engine/lib/PathVertexInfo.js";const t=3,n=4,r=3,i=10,a=e.getField(0).max,o=a+1;export{a as maxPathFrameIndex,o as maxPathLength,i as pathNumCircleProfileSubdivisions,t as pathNumJoinSubdivisions,n as pathNumProfilesPerJoin,r as pathNumRoundCapExtrusionSubdivisions};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{transformMat4 as e,add as t}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as r,create as i,isPoint as a,empty as o,center as s,offset as c}from"../../../../geometry/support/aaBoundingBox.js";import{evaluateElevationInfoAtPoint as l}from"./elevationAlignmentUtils.js";import{demResolutionForBoundingBox as u}from"./graphicUtils.js";import{computeGeometryBufferMemory as d}from"../../webgl-engine/lib/geometryMemoryUtils.js";class f{setNotifyMemoryChange(e){this._notifyMemoryChange=e;for(let t of this.stageObject.geometries)t.notifyMemoryChange=e}_getFlag(e){return(this._flags&e)===e}_setFlag(e,t){t?this._flags|=e:this._flags&=~e}get needsElevationUpdates(){return this._getFlag(2)}set needsElevationUpdates(e){this._setFlag(2,e)}get hiddenIfDeconflicted(){return this._getFlag(8)}set hiddenIfDeconflicted(e){this._setFlag(8,e)}get occlusionCheck(){return this._getFlag(16)}get adaptiveOcclusion(){return this._getFlag(32)}setOccludedVisibilityMode(e=`hidden`){this._setFlag(16,e!==`visible`),this._setFlag(32,e===`adaptive`)}get isElevationSource(){return!!this.stageObject.lastValidElevationBB}constructor(e,t,n,r,i=0){this.graphics3DSymbolLayer=e,this.stageObject=t,this._resourceToReleaseOnDestroy=n,this.elevationContext=r,this._additionalMemory=i,this._stageLayer=null,this._flags=0,this._geometryBufferMemory=0,this.alignedSampledElevation=0,this._updateGeometryBufferMemory()}initialize(e){this._stageLayer=e,this.hiddenIfDeconflicted&&(e.add(this.stageObject),this._setFlag(1,!0))}destroy(){this._getFlag(64)||(this._setFlag(64,!0),this.setNotifyMemoryChange(void 0),this._getFlag(1)&&(this._stageLayer.remove(this.stageObject),this._setFlag(1,!1)),this._disposeStageObject(),this._resourceToReleaseOnDestroy?.release(),this._stageLayer=null)}_disposeStageObject(){this.stageObject.dispose()}get usedMemory(){let e=this.graphics3DSymbolLayer.usedMemory+this._geometryBufferMemory+this._additionalMemory;for(let t of this.stageObject.geometries)e+=t.usedMemoryExcludingBuffers;return e}_detachGeometryMemoryCallbacks(){for(let e of this.stageObject.geometries)e.notifyMemoryChange=void 0}_updateGeometryBufferMemory(e){if(this._geometryBufferMemory=d(this.stageObject.geometries),this.setNotifyMemoryChange(this._notifyMemoryChange),e!==void 0){let t=this.usedMemory-e;t&&this._notifyMemoryChange?.(t)}}updateHighlights(e){}setVisibility(e){let{stageObject:t,_stageLayer:n}=this;n!=null&&this.visible!==e&&(t.visible=e,e&&!this._getFlag(1)&&(n.add(t),this._setFlag(1,!0)))}get visible(){return this._getFlag(1)&&this.stageObject.visible}alignWithElevation(e,t,n){this._alignWithElevation(e.spatialReference,(n,r)=>l(n,e,this.elevationContext,t,r),t,n)}alignWithAbsoluteElevation(e,t,n){this._alignWithElevation(this.graphics3DSymbolLayer.view.spatialReference,(t,n)=>{n.sampledElevation=e,n.verticalDistanceToGround=0,n.z=e},t,n)}getCenterObjectSpace(){return this.stageObject.boundingVolumeObjectSpace.sphere.center}getBoundingBoxObjectSpace(e=i()){let t=this.stageObject.boundingVolumeObjectSpace;return r(e,t.box),e}computeAttachmentOrigin(n){let r=this.stageObject.effectiveTransformation;for(let i of this.stageObject.geometries)i.computeAttachmentOrigin(h)&&(e(h,h,r),t(n.render.origin,n.render.origin,h),n.render.num++)}async getProjectedBoundingBox(t,n,r,i,l){let d=this.getBoundingBoxObjectSpace(l),f=g,_=a(d)?1:f.length;for(let t=0;t<_;t++){let n=f[t];m[0]=d[n[0]],m[1]=d[n[1]],m[2]=d[n[2]],e(m,m,this.stageObject.transformation),p[t*3]=m[0],p[t*3+1]=m[1],p[t*3+2]=m[2]}if(!t(p,0,_))return null;o(d);let v=null;this.calculateRelativeScreenBounds&&(v=this.calculateRelativeScreenBounds());for(let e=0;e<_*3;e+=3){for(let t=0;t<3;t++)d[t]=Math.min(d[t],p[e+t]),d[t+3]=Math.max(d[t+3],p[e+t]);v&&r.push({location:p.slice(e,e+3),screenSpaceBoundingRect:v})}if(n?.service&&this.elevationContext.mode!==`absolute-height`){s(d,h);let e=this.elevationContext.mode===`relative-to-scene`?`scene`:`ground`,t=0;if(n.useViewElevation)t=n.service.getElevation(h[0],h[1],e)??0;else try{let r=u(d,n.service.spatialReference,n);t=await n.service.queryElevation(h[0],h[1],i,r,e)??0}catch{}c(d,0,0,-this.alignedSampledElevation+t)}return d}addObjectState(e){e.stateType===0&&e.addObject(this.stageObject,this.stageObject.highlight(e.highlightName)),e.stateType===1&&e.addObject(this.stageObject,this.stageObject.maskOccludee())}removeObjectState(e){e.removeByObject(this.stageObject)}}const p=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],m=n(),h=n(),g=[[0,1,2],[3,1,2],[0,4,2],[3,4,2],[0,1,5],[3,1,5],[0,4,5],[3,4,5]];export{f as Graphics3DStageObjectGraphicLayer};
2
+ import{transformMat4 as e,add as t}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as r,create as i,isPoint as a,empty as o,center as s,offset as c}from"../../../../geometry/support/aaBoundingBox.js";import{evaluateElevationInfoAtPoint as l}from"./elevationAlignmentUtils.js";import{demResolutionForBoundingBox as u}from"./graphicUtils.js";import{computeGeometryBufferMemory as d}from"../../webgl-engine/lib/geometryMemoryUtils.js";class f{setNotifyMemoryChange(e){this._notifyMemoryChange=e;for(let t of this.stageObject.geometries)t.notifyMemoryChange=e}_getFlag(e){return(this._flags&e)===e}_setFlag(e,t){t?this._flags|=e:this._flags&=~e}get needsElevationUpdates(){return this._getFlag(2)}set needsElevationUpdates(e){this._setFlag(2,e)}get isElevationSource(){return!!this.stageObject.lastValidElevationBB}constructor(e,t,n,r,i=0){this.graphics3DSymbolLayer=e,this.stageObject=t,this._resourceToReleaseOnDestroy=n,this.elevationContext=r,this._additionalMemory=i,this._stageLayer=null,this._flags=0,this._geometryBufferMemory=0,this.alignedSampledElevation=0,this._updateGeometryBufferMemory()}initialize(e){this._stageLayer=e}destroy(){this._getFlag(64)||(this._setFlag(64,!0),this.setNotifyMemoryChange(void 0),this._getFlag(1)&&(this._stageLayer.remove(this.stageObject),this._setFlag(1,!1)),this._disposeStageObject(),this._resourceToReleaseOnDestroy?.release(),this._stageLayer=null)}_disposeStageObject(){this.stageObject.dispose()}get usedMemory(){let e=this.graphics3DSymbolLayer.usedMemory+this._geometryBufferMemory+this._additionalMemory;for(let t of this.stageObject.geometries)e+=t.usedMemoryExcludingBuffers;return e}_detachGeometryMemoryCallbacks(){for(let e of this.stageObject.geometries)e.notifyMemoryChange=void 0}_updateGeometryBufferMemory(e){if(this._geometryBufferMemory=d(this.stageObject.geometries),this.setNotifyMemoryChange(this._notifyMemoryChange),e!==void 0){let t=this.usedMemory-e;t&&this._notifyMemoryChange?.(t)}}updateHighlights(e){}setVisibility(e){let{stageObject:t,_stageLayer:n}=this;n!=null&&this.visible!==e&&(t.visible=e,e&&!this._getFlag(1)&&(n.add(t),this._setFlag(1,!0)))}get visible(){return this._getFlag(1)&&this.stageObject.visible}alignWithElevation(e,t,n){this._alignWithElevation(e.spatialReference,(n,r)=>l(n,e,this.elevationContext,t,r),t,n)}alignWithAbsoluteElevation(e,t,n){this._alignWithElevation(this.graphics3DSymbolLayer.view.spatialReference,(t,n)=>{n.sampledElevation=e,n.verticalDistanceToGround=0,n.z=e},t,n)}getCenterObjectSpace(){return this.stageObject.boundingVolumeObjectSpace.sphere.center}getBoundingBoxObjectSpace(e=i()){let t=this.stageObject.boundingVolumeObjectSpace;return r(e,t.box),e}computeAttachmentOrigin(n){let r=this.stageObject.effectiveTransformation;for(let i of this.stageObject.geometries)i.computeAttachmentOrigin(h)&&(e(h,h,r),t(n.render.origin,n.render.origin,h),n.render.num++)}async getProjectedBoundingBox(t,n,r,i,l){let d=this.getBoundingBoxObjectSpace(l),f=g,_=a(d)?1:f.length;for(let t=0;t<_;t++){let n=f[t];m[0]=d[n[0]],m[1]=d[n[1]],m[2]=d[n[2]],e(m,m,this.stageObject.transformation),p[t*3]=m[0],p[t*3+1]=m[1],p[t*3+2]=m[2]}if(!t(p,0,_))return null;o(d);let v=null;this.calculateRelativeScreenBounds&&(v=this.calculateRelativeScreenBounds());for(let e=0;e<_*3;e+=3){for(let t=0;t<3;t++)d[t]=Math.min(d[t],p[e+t]),d[t+3]=Math.max(d[t+3],p[e+t]);v&&r.push({location:p.slice(e,e+3),screenSpaceBoundingRect:v})}if(n?.service&&this.elevationContext.mode!==`absolute-height`){s(d,h);let e=this.elevationContext.mode===`relative-to-scene`?`scene`:`ground`,t=0;if(n.useViewElevation)t=n.service.getElevation(h[0],h[1],e)??0;else try{let r=u(d,n.service.spatialReference,n);t=await n.service.queryElevation(h[0],h[1],i,r,e)??0}catch{}c(d,0,0,-this.alignedSampledElevation+t)}return d}addObjectState(e){e.stateType===0&&e.addObject(this.stageObject,this.stageObject.highlight(e.highlightName)),e.stateType===1&&e.addObject(this.stageObject,this.stageObject.maskOccludee())}removeObjectState(e){e.removeByObject(this.stageObject)}}const p=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],m=n(),h=n(),g=[[0,1,2],[3,1,2],[0,4,2],[3,4,2],[0,1,5],[3,1,5],[0,4,5],[3,4,5]];export{f as Graphics3DStageObjectGraphicLayer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../core/Error.js";import{releaseMaybe as t}from"../../../../core/maybe.js";import{isPromiseLike as n}from"../../../../core/promiseUtils.js";import{pt2px as r}from"../../../../core/screenUtils.js";import{fromValues as i,ONES as a,create as o,ZEROS as s}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as l,create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as d}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{hasCalloutSupport as f,textSymbolLayerSupportsVerticalOffset as p}from"../../../../symbols/callouts/calloutUtils.js";import{perTranslatedBufferPointElevationAligner as m}from"./ElevationAligners.js";import{needsElevationUpdates2D as h}from"./elevationAlignmentUtils.js";import{Graphics3DBufferGraphicLayer as g}from"./Graphics3DBufferGraphicLayer.js";import{Graphics3DObjectMetadata as _}from"./Graphics3DObjectMetadata.js";import{Graphics3DSymbolLayer as v}from"./Graphics3DSymbolLayer.js";import{validateSymbolLayerSize as y}from"./graphicUtils.js";import{LabelPlacement as b,LabelParameters as x}from"./LabelParameters.js";import{verticalScreenOffsetFromAlignment as S,verticalPlacementFromAlignment as C,textRenderAlignmentFromHorizontalPlacement as w,horizontalPlacementToAnchorX as T,anchorFromPlacements as E,namedAnchorToHUDMaterialAnchorPos as D}from"./placementUtils.js";import{placePointOnGeometry as O,updateTranslatedBufferStageObjectGeometry as k,extendPointGraphicElevationContext as A,createTranslatedBufferStageObject as j}from"./pointUtils.js";import{getFontMetrics as M}from"../../webgl-engine/lib/FontMetrics.js";import{TextRenderParameters as N}from"../../webgl-engine/lib/TextRenderParameters.js";import P from"../../webgl-engine/lib/TextTextureFactory.js";import{HUDMaterial as F}from"../../webgl-engine/materials/HUDMaterial.js";class I extends v{constructor(e,t,n,r){super(e,t,n,r),this._elevationOptions={supportsOffsetAdjustment:!0,supportsOnTheGround:!1},this.ensureDrapedStatus(!1)}async doLoad(){if(!this._drivenProperties.size){let t=y(this.symbolLayer.size);if(t)throw new e(`graphics3dtextsymbollayer:invalid-size`,t)}await this._createTextRenderParameters()}async _createTextRenderParameters(){let e=this._context.graphicsCoreOwner.view.state.rasterPixelRatio;this._textRenderParameters=await N.fromSymbol(this.symbolLayer,e)}destroy(){super.destroy()}createGraphics3DGraphic(e){let t=e.graphic,n=O(t.geometry);if(n==null)return this.logger.warn(`unsupported geometry type for text symbol: ${t.geometry.type}`),null;let r=this.view.focusAreasView?.containsGeometry(n)??!0,i=this.symbolLayer.text;if(i==null||i===``)return null;let a=f(this.symbol)&&this.symbol.hasVisibleVerticalOffset()?this.symbol.verticalOffset:null;if(a!=null&&!p(this.symbolLayer))return this.logger.errorOncePerTick(`Callouts and vertical offset on text symbols are currently only supported with 'center' horizontal alignment (not with '${this.symbolLayer.horizontalAlignment}' alignment)`),null;let{verticalAlignment:o}=this.symbolLayer,s=new b(a);S(o,s.screenOffset);let c=new x(s,this.symbolLayer.horizontalAlignment,C(o)),l=r?null:this._context.focusAreaStyle;return this._createAs3DShape(t,n,i,c,l)}get needsUpdateFocus(){return!0}createLabel(e,t,n,r,i){let a=e.graphic,o=O(a.geometry);if(o==null)return this.logger.warn(`unsupported geometry type for label: ${a.geometry.type}`),null;let s=this.view.focusAreasView?.containsGeometry(o)??!0,c=t.text;if(!c||/^\s+$/.test(c))return null;let l=s?null:this._context.focusAreaStyle;return this._createAs3DShape(a,o,c,t,l,n,r,i)}createElevationContextForGraphic(e,t=0){let n=super.createElevationContextForGraphic(e);return n.addOffsetRenderUnits(t),n}updateElevationContextForGraphic(e,t,n=0){super.updateElevationContextForGraphic(e,t),e.addOffsetRenderUnits(n)}layerOpacityChanged(){return this.logger.warn(`layer opacity change not yet implemented in Graphics3DTextSymbolLayer`),!1}layerScreenSizePerspectiveChanged(e,t){let n=!this.draped&&this._context.screenSizePerspectiveEnabled,r=n?this.view.screenSizePerspective.labelParameters:null,i=n?this.view.screenSizePerspective.parameters:null;L(e,t,e=>{for(let t of e.stageObject.geometries)t.material.setParameters({screenSizePerspective:r,screenSizePerspectiveAlignment:i})})}layerElevationInfoChanged(e,t){return L(e,t,(e,t)=>{this.graphics3DGraphicLayerElevationInfoChanged(t,e)}),1}slicePlaneEnabledChanged(e,t){return L(e,t,e=>{for(let t of e.stageObject.geometries)t.material.setParameters({hasSlicePlane:this._context.slicePlaneEnabled})}),!0}terrainTransparencyChanged(){return this.draped}physicalBasedRenderingChanged(){return!0}get pixelRatioChanged(){return!1}graphics3DGraphicLayerElevationInfoChanged(e,t){let{elevationContext:n,metadata:r}=t;this.updateElevationContextForGraphic(n,e,r?.elevationOffset??0),t.needsElevationUpdates=h(n.mode)||n.mode===`absolute-height`}updateGeometry(e,t,n){let r=e.geometry;if(this.draped||!r||!this._validateGeometry(r))return!1;let{elevationContext:i,stageObject:a}=t;if(i.mode!==this.getGeometryElevationMode(r))return!1;let o=O(r);if(!o)return!1;i.updateFeatureExpressionFeature(e,this._context.layer);let s=k(a,this._context,o,i,n?.translation??l,B);return s!=null&&(n&&c(n.renderTranslation,B),t.alignedSampledElevation=s,A(t,o,this._context.elevationProvider),!0)}_defaultElevationInfoNoZ(){return z}_createAs3DShape(e,c,l,u,f,p,v=null,y=()=>u.placement.elevationOffset){let b=u.placement.renderTranslation,x=this.createElevationContextForGraphic(e,u.placement.elevationOffset),S=e.uid,C=null,T=null;if(v==null){let e=w(u.horizontalPlacement);C=new P(l,e,this._textRenderParameters);let r=null;if(this._context.sharedResources.textures!=null){T=this._context.sharedResources.textures.fromData(C.key,()=>C.create()),T.managedTexture.events.on(`unloaded`,()=>r=t(r));let e=this._context.stage.renderView.textures.acquire(T.managedTexture.id);if(e==null||n(e))return T.release(),null;r=e}}let E=this.symbolLayer.occludedVisibility?.mode??`hidden`,D=R(C,u),O=v!=null,k={occludedFragmentOpacity:E===`hidden`?null:this.view.state.ensureOccludedFragmentOpacity(!0,E),screenOffset:u.placement.screenOffset,anchorPosition:D,polygonOffset:2,color:[1,1,1,1],centerOffsetUnits:u.placement.centerOffsetUnits,depthEnabled:!1,drawAsLabel:!0,isLabel:!0,hasVertexSize:O,hasVertexUVi:O,hasVertexCenterOffset:O,size:C?i(C.displayWidth,C.displayHeight):a,focusAreaStyle:f};if(e.geometry?.type===`polyline`&&(k.shaderPolygonOffset=1e-4),O?k.textureId=v.id:T&&(k.textureId=T.managedTexture.id),u.placement.verticalOffset!=null){let{screenLength:e,minWorldLength:t,maxWorldLength:n}=u.placement.verticalOffset;k.verticalOffset={screenLength:r(e),minWorldLength:t||0,maxWorldLength:n??1/0}}let N={screenOffset:k.screenOffset,anchorPosition:D,centerOffsetUnits:k.centerOffsetUnits,verticalOffset:k.verticalOffset,shaderPolygonOffset:k.shaderPolygonOffset,focusAreaStyle:k.focusAreaStyle};if(this._context.screenSizePerspectiveEnabled){let{parameters:e,labelParameters:t}=this.view.screenSizePerspective,n=M(this._textRenderParameters);k.screenSizePerspective=t,k.screenSizePerspectiveMinPixelReferenceSize=n.maxHeight,k.screenSizePerspectiveAlignment=e,N.fontHeight=n.maxHeight}k.hasSlicePlane=this._context.slicePlaneEnabled;let I=p?JSON.stringify(N):``,L=p?.get(I);L??(L=new F(k,this._context.spherical),p?.set(I,L));let z=O?s:null,B=O?u.placement.centerOffset:null,V=O?d(0,0,0,0):null,H=j(this._context,c,L,{size:z,centerOffset:B,uvi:V},x,S,u.placement.translation,b);if(H==null)return null;let U=new g(this,H.object,T,(t,n,r,i,a)=>{let o=y()||u.placement.elevationOffset;return this.updateElevationContextForGraphic(n,e,o),m(t,n,r,i,a,b)},x);return U.setOccludedVisibilityMode(this.symbolLayer.occludedVisibility?.mode),U.hiddenIfDeconflicted=!0,U.alignedSampledElevation=H.sampledElevation,U.needsElevationUpdates=h(x.mode)||x.mode===`absolute-height`,U.getScreenSize=(e=o())=>(e[0]=C?C.displayWidth:u.displaySize[0],e[1]=C?C.displayHeight:u.displaySize[1],e),U.metadata=new _(u.placement.elevationOffset,l),A(U,c,this._context.elevationProvider),U}}function L(e,t,n){e?.forEach(e=>{let r=t(e);r!=null&&n(r,e.graphic)})}function R(e,t){let n=t.horizontalPlacement;if(t.verticalPlacement===`baseline`){let t=T[n],r=e==null?0:e.baselineAnchorY;return i(t,r)}let r=E(n,t.verticalPlacement);return D[r]}const z={mode:`relative-to-ground`,offset:0},B=u();export{I as Graphics3DTextSymbolLayer};
2
+ import e from"../../../../core/Error.js";import{releaseMaybe as t}from"../../../../core/maybe.js";import{isPromiseLike as n}from"../../../../core/promiseUtils.js";import{pt2px as r}from"../../../../core/screenUtils.js";import{fromValues as i,ONES as a,create as o,ZEROS as s}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as l,create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as d}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{hasCalloutSupport as f,textSymbolLayerSupportsVerticalOffset as p}from"../../../../symbols/callouts/calloutUtils.js";import{perTranslatedBufferPointElevationAligner as m}from"./ElevationAligners.js";import{needsElevationUpdates2D as h}from"./elevationAlignmentUtils.js";import{Graphics3DBufferGraphicLayer as g}from"./Graphics3DBufferGraphicLayer.js";import{Graphics3DObjectMetadata as _}from"./Graphics3DObjectMetadata.js";import{Graphics3DSymbolLayer as v}from"./Graphics3DSymbolLayer.js";import{validateSymbolLayerSize as y}from"./graphicUtils.js";import{LabelPlacement as b,LabelParameters as x}from"./LabelParameters.js";import{verticalScreenOffsetFromAlignment as S,verticalPlacementFromAlignment as C,textRenderAlignmentFromHorizontalPlacement as w,horizontalPlacementToAnchorX as T,anchorFromPlacements as E,namedAnchorToHUDMaterialAnchorPos as D}from"./placementUtils.js";import{placePointOnGeometry as O,updateTranslatedBufferStageObjectGeometry as k,extendPointGraphicElevationContext as A,createTranslatedBufferStageObject as j}from"./pointUtils.js";import{getFontMetrics as M}from"../../webgl-engine/lib/FontMetrics.js";import{createPointBufferGeometry as N}from"../../webgl-engine/lib/GeometryUtil.js";import{TextRenderParameters as P}from"../../webgl-engine/lib/TextRenderParameters.js";import F from"../../webgl-engine/lib/TextTextureFactory.js";import{HUDMaterial as I}from"../../webgl-engine/materials/HUDMaterial.js";class L extends v{constructor(e,t,n,r){super(e,t,n,r),this._elevationOptions={supportsOffsetAdjustment:!0,supportsOnTheGround:!1},this.ensureDrapedStatus(!1)}async doLoad(){if(!this._drivenProperties.size){let t=y(this.symbolLayer.size);if(t)throw new e(`graphics3dtextsymbollayer:invalid-size`,t)}await this._createTextRenderParameters()}async _createTextRenderParameters(){let e=this._context.graphicsCoreOwner.view.state.rasterPixelRatio;this._textRenderParameters=await P.fromSymbol(this.symbolLayer,e)}destroy(){super.destroy()}createGraphics3DGraphic(e){let t=e.graphic,n=O(t.geometry);if(n==null)return this.logger.warn(`unsupported geometry type for text symbol: ${t.geometry.type}`),null;let r=this.view.focusAreasView?.containsGeometry(n)??!0,i=this.symbolLayer.text;if(i==null||i===``)return null;let a=f(this.symbol)&&this.symbol.hasVisibleVerticalOffset()?this.symbol.verticalOffset:null;if(a!=null&&!p(this.symbolLayer))return this.logger.errorOncePerTick(`Callouts and vertical offset on text symbols are currently only supported with 'center' horizontal alignment (not with '${this.symbolLayer.horizontalAlignment}' alignment)`),null;let{verticalAlignment:o}=this.symbolLayer,s=new b(a);S(o,s.screenOffset);let c=new x(s,this.symbolLayer.horizontalAlignment,C(o)),l=r?null:this._context.focusAreaStyle;return this._createAs3DShape(t,n,i,c,l)}get needsUpdateFocus(){return!0}createLabel(e,t,n,r,i){let a=e.graphic,o=O(a.geometry);if(o==null)return this.logger.warn(`unsupported geometry type for label: ${a.geometry.type}`),null;let s=this.view.focusAreasView?.containsGeometry(o)??!0,c=t.text;if(!c||/^\s+$/.test(c))return null;let l=s?null:this._context.focusAreaStyle;return this._createAs3DShape(a,o,c,t,l,n,r,i)}createElevationContextForGraphic(e,t=0){let n=super.createElevationContextForGraphic(e);return n.addOffsetRenderUnits(t),n}updateElevationContextForGraphic(e,t,n=0){super.updateElevationContextForGraphic(e,t),e.addOffsetRenderUnits(n)}layerOpacityChanged(){return this.logger.warn(`layer opacity change not yet implemented in Graphics3DTextSymbolLayer`),!1}layerScreenSizePerspectiveChanged(e,t){let n=!this.draped&&this._context.screenSizePerspectiveEnabled,r=n?this.view.screenSizePerspective.labelParameters:null,i=n?this.view.screenSizePerspective.parameters:null;R(e,t,e=>{for(let t of e.stageObject.geometries)t.material.setParameters({screenSizePerspective:r,screenSizePerspectiveAlignment:i})})}layerElevationInfoChanged(e,t){return R(e,t,(e,t)=>{this.graphics3DGraphicLayerElevationInfoChanged(t,e)}),1}slicePlaneEnabledChanged(e,t){return R(e,t,e=>{for(let t of e.stageObject.geometries)t.material.setParameters({hasSlicePlane:this._context.slicePlaneEnabled})}),!0}terrainTransparencyChanged(){return this.draped}physicalBasedRenderingChanged(){return!0}get pixelRatioChanged(){return!1}graphics3DGraphicLayerElevationInfoChanged(e,t){let{elevationContext:n,metadata:r}=t;this.updateElevationContextForGraphic(n,e,r?.elevationOffset??0),t.needsElevationUpdates=h(n.mode)||n.mode===`absolute-height`}updateGeometry(e,t,n){let r=e.geometry;if(this.draped||!r||!this._validateGeometry(r))return!1;let{elevationContext:i,stageObject:a}=t;if(i.mode!==this.getGeometryElevationMode(r))return!1;let o=O(r);if(!o)return!1;i.updateFeatureExpressionFeature(e,this._context.layer);let s=k(a,this._context,o,i,n?.translation??l,V);return s!=null&&(n&&c(n.renderTranslation,V),t.alignedSampledElevation=s,A(t,o,this._context.elevationProvider),!0)}_defaultElevationInfoNoZ(){return B}_createAs3DShape(e,c,l,u,f,p,v=null,y=()=>u.placement.elevationOffset){let b=u.placement.renderTranslation,x=this.createElevationContextForGraphic(e,u.placement.elevationOffset),S=e.uid,C=null,T=null;if(v==null){let e=w(u.horizontalPlacement);C=new F(l,e,this._textRenderParameters);let r=null;if(this._context.sharedResources.textures!=null){T=this._context.sharedResources.textures.fromData(C.key,()=>C.create()),T.managedTexture.events.on(`unloaded`,()=>r=t(r));let e=this._context.stage.renderView.textures.acquire(T.managedTexture.id);if(e==null||n(e))return T.release(),null;r=e}}let E=this.symbolLayer.occludedVisibility?.mode??`hidden`,D=z(C,u),O=v!=null,k={occludedFragmentOpacity:E===`hidden`?null:this.view.state.ensureOccludedFragmentOpacity(!0,E),screenOffset:u.placement.screenOffset,anchorPosition:D,polygonOffset:2,color:[1,1,1,1],centerOffsetUnits:u.placement.centerOffsetUnits,depthEnabled:!1,drawAsLabel:!0,isLabel:!0,hasVertexSize:O,hasVertexUVi:O,hasVertexCenterOffset:O,size:C?i(C.displayWidth,C.displayHeight):a,focusAreaStyle:f};if(e.geometry?.type===`polyline`&&(k.shaderPolygonOffset=1e-4),O?k.textureId=v.id:T&&(k.textureId=T.managedTexture.id),u.placement.verticalOffset!=null){let{screenLength:e,minWorldLength:t,maxWorldLength:n}=u.placement.verticalOffset;k.verticalOffset={screenLength:r(e),minWorldLength:t||0,maxWorldLength:n??1/0}}let P={screenOffset:k.screenOffset,anchorPosition:D,centerOffsetUnits:k.centerOffsetUnits,verticalOffset:k.verticalOffset,shaderPolygonOffset:k.shaderPolygonOffset,focusAreaStyle:k.focusAreaStyle};if(this._context.screenSizePerspectiveEnabled){let{parameters:e,labelParameters:t}=this.view.screenSizePerspective,n=M(this._textRenderParameters);k.screenSizePerspective=t,k.screenSizePerspectiveMinPixelReferenceSize=n.maxHeight,k.screenSizePerspectiveAlignment=e,P.fontHeight=n.maxHeight}k.hasSlicePlane=this._context.slicePlaneEnabled;let L=p?JSON.stringify(P):``,R=p?.get(L);R??(R=new I(k,this._context.spherical),p?.set(L,R));let B=O?s:null,V=O?u.placement.centerOffset:null,H=O?d(0,0,0,0):null,U=j(this._context,c,R,{size:B,centerOffset:V,uvi:H},x,S,u.placement.translation,b,N);if(U==null)return null;let W=new g(this,U.object,T,(t,n,r,i,a)=>{let o=y()||u.placement.elevationOffset;return this.updateElevationContextForGraphic(n,e,o),m(t,n,r,i,a,b)},x);return W.setOccludedVisibilityMode(this.symbolLayer.occludedVisibility?.mode),W.hiddenIfDeconflicted=!0,W.alignedSampledElevation=U.sampledElevation,W.needsElevationUpdates=h(x.mode)||x.mode===`absolute-height`,W.getScreenSize=(e=o())=>(e[0]=C?C.displayWidth:u.displaySize[0],e[1]=C?C.displayHeight:u.displaySize[1],e),W.metadata=new _(u.placement.elevationOffset,l),A(W,c,this._context.elevationProvider),W}}function R(e,t,n){e?.forEach(e=>{let r=t(e);r!=null&&n(r,e.graphic)})}function z(e,t){let n=t.horizontalPlacement;if(t.verticalPlacement===`baseline`){let t=T[n],r=e==null?0:e.baselineAnchorY;return i(t,r)}let r=E(n,t.verticalPlacement);return D[r]}const B={mode:`relative-to-ground`,offset:0},V=u();export{L as Graphics3DTextSymbolLayer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{fromMat4 as e}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{copy as n}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as i,exactEquals as a,copy as o,transformMat3 as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as c,create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{computeTranslationToOriginAndRotation as u}from"../../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as d}from"../../../../geometry/projection/projectBuffer.js";import{isDehydratedPoint as f}from"../../../../layers/graphics/dehydratedFeatureUtils.js";import{isSamplePosition as p,getElevationAtPoint as m}from"../../support/ElevationProvider.js";import{updateObjectVertexField as h,updateVertexFieldVec3f as g,updateVertexFieldFloat as _}from"../../webgl-engine/lib/bufferGeometryUtils.js";function v(e,t,n,r,i,a,o,s,c,l,u){let f=I[u.mode],p=0;if(!d(e,t,n,r,c.spatialReference,i,s))return;let m,h;if(f?.requiresAlignment(u)?(p=f.applyElevationAlignmentBuffer(r,i,a,o,s,c,l,u),m=a,h=o):(m=r,h=i),d(m,c.spatialReference,h,a,l.spatialReference,o,s))return p}function y(e,t,n,r,i){let a=(f(e)?e.z:p(e)?e.array[e.offset+2]:e[2])||0;switch(n.mode){case`on-the-ground`:{let n=m(t,e,`ground`)??0;i.verticalDistanceToGround=0,i.sampledElevation=n,i.z=n;return}case`relative-to-ground`:{let o=m(t,e,`ground`)??0,s=n.geometryZWithOffset(a,r);i.verticalDistanceToGround=s,i.sampledElevation=o,i.z=s+o;return}case`relative-to-scene`:{let o=m(t,e,`scene`)??0,s=n.geometryZWithOffset(a,r);i.verticalDistanceToGround=s,i.sampledElevation=o,i.z=s+o;return}case`absolute-height`:{let o=n.geometryZWithOffset(a,r),s=m(t,e,`ground`)??0;i.verticalDistanceToGround=o-s,i.sampledElevation=s,i.z=o;return}default:i.z=0;return}}function b(e,t,n,r){return y(e,t,n,r,H),H.z}function x(e,t,n){return t===`on-the-ground`&&n===`on-the-ground`?e.staysOnTheGround:t!==n&&(t===`on-the-ground`||n===`on-the-ground`)?e.onTheGroundChanged:t==null||n==null?e.definedChanged:1}function S(e){return e===`relative-to-ground`||e===`relative-to-scene`}function C(e){return e!==`absolute-height`}function w(e,t,r,i,a){y(t,r,a,i,H),k(e,H.verticalDistanceToGround);let o=H.sampledElevation,s=n(L,e.transformation);return U[0]=t.x,U[1]=t.y,U[2]=H.z,u(t.spatialReference,U,s,i.spatialReference)?e.transformation=s:console.warn(`Could not locate symbol object properly, it might be misplaced`),o}function T(t,n,r,l,u,d,f,p){return y(t,n,l,r,p),i(z,t.x,t.y,p.z),E(z,t.spatialReference,r,d)?(a(u,c)?o(f,c):(e(R,d),s(f,u,R)),d[12]+=f[0],d[13]+=f[1],d[14]+=f[2],!0):!1}function E(e,t,n,r){return u(t,e,r,n.spatialReference)?!0:(console.warn(`Could not locate symbol object properly, it might be misplaced`),!1)}function D(e,t){i(V,t[8],t[9],t[10]);for(let n of e.geometries){let r=n.localOrigin.vec3;i(B,t[12]-r[0],t[13]-r[1],t[14]-r[2]),h(e,g,n,`position`,0,B),h(e,g,n,`normal`,0,V)}}function O(e,t){for(let n of e.geometries)h(e,_,n,`groundDistance`,0,t)}function k(e,t){for(let n=0;n<e.geometries.length;++n){let r=e.geometries[n].getMutableAttribute(`groundDistance`);r&&r.data[0]!==t&&(r.data[0]=t,e.geometryVertexAttributeUpdated(e.geometries[n],`groundDistance`))}}function A(e,t,n,r,i,a){let o=0,s=a.spatialReference;t*=3,r*=3;for(let c=0;c<i;++c){let i=e[t],c=e[t+1],l=e[t+2],u=a.getElevation(i,c,l,s,`ground`)??0;o+=u,n[r]=i,n[r+1]=c,n[r+2]=u,t+=3,r+=3}return o/i}function j(e,t,n,r,i,a,o,s){let c=0,l=s.calculateOffsetRenderUnits(o),u=s.featureExpressionInfoContext,d=a.spatialReference;t*=3,r*=3;for(let o=0;o<i;++o){let i=e[t],o=e[t+1],s=e[t+2],f=a.getElevation(i,o,s,d,`ground`)??0;c+=f,n[r]=i,n[r+1]=o,u==null?n[r+2]=s+f+l:n[r+2]=f+l,t+=3,r+=3}return c/i}function M(e,t,n,r,i,a,o,s){let c=0,l=s.calculateOffsetRenderUnits(o),u=s.featureExpressionInfoContext,d=a.spatialReference;t*=3,r*=3;for(let o=0;o<i;++o){let i=e[t],o=e[t+1],s=e[t+2],f=a.getElevation(i,o,s,d,`scene`)??0;c+=f,n[r]=i,n[r+1]=o,u==null?n[r+2]=s+f+l:n[r+2]=f+l,t+=3,r+=3}return c/i}function N(e){let t=e.meterUnitOffset,n=e.featureExpressionInfoContext;return t!==0||n!=null}function P(e,t,n,r,i,a,o,s){let c=s.calculateOffsetRenderUnits(o),l=s.featureExpressionInfoContext;t*=3,r*=3;for(let a=0;a<i;++a){let i=e[t],a=e[t+1],o=e[t+2];n[r]=i,n[r+1]=a,l==null?n[r+2]=o+c:n[r+2]=c,t+=3,r+=3}return 0}class F{constructor(){this.verticalDistanceToGround=0,this.sampledElevation=0,this.z=0}}const I={"absolute-height":{applyElevationAlignmentBuffer:P,requiresAlignment:N},"on-the-ground":{applyElevationAlignmentBuffer:A,requiresAlignment:()=>!0},"relative-to-ground":{applyElevationAlignmentBuffer:j,requiresAlignment:()=>!0},"relative-to-scene":{applyElevationAlignmentBuffer:M,requiresAlignment:()=>!0}},L=r(),R=t(),z=l(),B=l(),V=l(),H=new F,U=l();export{F as SampleElevationInfo,D as applyBufferPointTransformation,w as applyElevationAlignmentForHUD,v as applyPerVertexElevationAlignment,E as computePointTransformation,T as computePointTransformationForHUD,x as elevationModeChangeUpdateType,b as evaluateElevationAlignmentAtPoint,y as evaluateElevationInfoAtPoint,S as needsElevationUpdates2D,C as needsElevationUpdates3D,O as updateBufferPointGroundDistance,k as updateVertexPointGroundDistance};
2
+ import{fromMat4 as e}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{set as n,exactEquals as r,copy as i,transformMat3 as a}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as o,create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{computeTranslationToOriginAndRotation as c}from"../../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as l}from"../../../../geometry/projection/projectBuffer.js";import{isDehydratedPoint as u}from"../../../../layers/graphics/dehydratedFeatureUtils.js";import{isSamplePosition as d,getElevationAtPoint as f}from"../../support/ElevationProvider.js";import{updateObjectVertexField as p,updateVertexFieldFloat as m,updateVertexFieldVec3f as h}from"../../webgl-engine/lib/bufferGeometryUtils.js";function g(e,t,n,r,i,a,o,s,c,u,d){let f=M[d.mode],p=0;if(!l(e,t,n,r,c.spatialReference,i,s))return;let m,h;if(f?.requiresAlignment(d)?(p=f.applyElevationAlignmentBuffer(r,i,a,o,s,c,u,d),m=a,h=o):(m=r,h=i),l(m,c.spatialReference,h,a,u.spatialReference,o,s))return p}function _(e,t,n,r,i){let a=(u(e)?e.z:d(e)?e.array[e.offset+2]:e[2])||0;switch(n.mode){case`on-the-ground`:{let n=f(t,e,`ground`)??0;i.verticalDistanceToGround=0,i.sampledElevation=n,i.z=n;return}case`relative-to-ground`:{let o=f(t,e,`ground`)??0,s=n.geometryZWithOffset(a,r);i.verticalDistanceToGround=s,i.sampledElevation=o,i.z=s+o;return}case`relative-to-scene`:{let o=f(t,e,`scene`)??0,s=n.geometryZWithOffset(a,r);i.verticalDistanceToGround=s,i.sampledElevation=o,i.z=s+o;return}case`absolute-height`:{let o=n.geometryZWithOffset(a,r),s=f(t,e,`ground`)??0;i.verticalDistanceToGround=o-s,i.sampledElevation=s,i.z=o;return}default:i.z=0;return}}function v(e,t,n,r){return _(e,t,n,r,L),L.z}function y(e,t,n){return t===`on-the-ground`&&n===`on-the-ground`?e.staysOnTheGround:t!==n&&(t===`on-the-ground`||n===`on-the-ground`)?e.onTheGroundChanged:t==null||n==null?e.definedChanged:1}function b(e){return e===`relative-to-ground`||e===`relative-to-scene`}function x(e){return e!==`absolute-height`}function S(t,s,c,l,u,d,f,p){return _(t,s,l,c,p),n(P,t.x,t.y,p.z),C(P,t.spatialReference,c,d)?(r(u,o)?i(f,o):(e(N,d),a(f,u,N)),d[12]+=f[0],d[13]+=f[1],d[14]+=f[2],!0):!1}function C(e,t,n,r){return c(t,e,r,n.spatialReference)?!0:(console.warn(`Could not locate symbol object properly, it might be misplaced`),!1)}function w(e,t){n(I,t[8],t[9],t[10]);for(let r of e.geometries){let i=r.localOrigin.vec3;n(F,t[12]-i[0],t[13]-i[1],t[14]-i[2]),p(e,h,r,`position`,0,F),p(e,h,r,`normal`,0,I)}}function T(e,t){for(let n of e.geometries)p(e,m,n,`groundDistance`,0,t)}function E(e,t,n,r,i,a){let o=0,s=a.spatialReference;t*=3,r*=3;for(let c=0;c<i;++c){let i=e[t],c=e[t+1],l=e[t+2],u=a.getElevation(i,c,l,s,`ground`)??0;o+=u,n[r]=i,n[r+1]=c,n[r+2]=u,t+=3,r+=3}return o/i}function D(e,t,n,r,i,a,o,s){let c=0,l=s.calculateOffsetRenderUnits(o),u=s.featureExpressionInfoContext,d=a.spatialReference;t*=3,r*=3;for(let o=0;o<i;++o){let i=e[t],o=e[t+1],s=e[t+2],f=a.getElevation(i,o,s,d,`ground`)??0;c+=f,n[r]=i,n[r+1]=o,u==null?n[r+2]=s+f+l:n[r+2]=f+l,t+=3,r+=3}return c/i}function O(e,t,n,r,i,a,o,s){let c=0,l=s.calculateOffsetRenderUnits(o),u=s.featureExpressionInfoContext,d=a.spatialReference;t*=3,r*=3;for(let o=0;o<i;++o){let i=e[t],o=e[t+1],s=e[t+2],f=a.getElevation(i,o,s,d,`scene`)??0;c+=f,n[r]=i,n[r+1]=o,u==null?n[r+2]=s+f+l:n[r+2]=f+l,t+=3,r+=3}return c/i}function k(e){let t=e.meterUnitOffset,n=e.featureExpressionInfoContext;return t!==0||n!=null}function A(e,t,n,r,i,a,o,s){let c=s.calculateOffsetRenderUnits(o),l=s.featureExpressionInfoContext;t*=3,r*=3;for(let a=0;a<i;++a){let i=e[t],a=e[t+1],o=e[t+2];n[r]=i,n[r+1]=a,l==null?n[r+2]=o+c:n[r+2]=c,t+=3,r+=3}return 0}class j{constructor(){this.verticalDistanceToGround=0,this.sampledElevation=0,this.z=0}}const M={"absolute-height":{applyElevationAlignmentBuffer:A,requiresAlignment:k},"on-the-ground":{applyElevationAlignmentBuffer:E,requiresAlignment:()=>!0},"relative-to-ground":{applyElevationAlignmentBuffer:D,requiresAlignment:()=>!0},"relative-to-scene":{applyElevationAlignmentBuffer:O,requiresAlignment:()=>!0}},N=t(),P=s(),F=s(),I=s(),L=new j;export{j as SampleElevationInfo,w as applyBufferPointTransformation,g as applyPerVertexElevationAlignment,C as computePointTransformation,S as computePointTransformationForHUD,y as elevationModeChangeUpdateType,v as evaluateElevationAlignmentAtPoint,_ as evaluateElevationInfoAtPoint,b as needsElevationUpdates2D,x as needsElevationUpdates3D,T as updateBufferPointGroundDistance};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{getTranslation as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as r,create as i,ZEROS as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectPointToVector as o}from"../../../../geometry/projection/projectPointToVector.js";import{containsPoint as s}from"../../../../geometry/support/aaBoundingBox.js";import{getPointOnPath as c,getPathLength as l}from"../../../../geometry/support/coordsUtils.js";import{makeDehydratedPoint as u}from"../../../../layers/graphics/dehydratedPoint.js";import{computePointTransformationForHUD as d,updateBufferPointGroundDistance as f,SampleElevationInfo as p,applyBufferPointTransformation as m,applyElevationAlignmentForHUD as h}from"./elevationAlignmentUtils.js";import{computeCentroid as g}from"./graphicUtils.js";import{BufferObject3D as _}from"../../webgl-engine/lib/BufferObject3D.js";import{createPointBufferGeometry as v}from"../../webgl-engine/lib/GeometryUtil.js";import{Object3D as y}from"../../webgl-engine/lib/Object3D.js";function b(e,t,n,r,i){if(T(e,t))return null;n.localOrigin=O(e,t);let a=new y({geometries:[n],castShadow:!1,layerViewUid:e.layerViewUid,graphicUid:i,usesVerticalDistanceToGround:!0});return{object:a,sampledElevation:h(a,t,e.elevationProvider,e.renderCoordsHelper,r)}}function x(e,t,n,r,i,o){return S(e,t,n,r,i,o,a,k)}function S(t,r,i,a,o,s,c,l){if(T(t,r)||!d(r,t.elevationProvider,t.renderCoordsHelper,o,c,j,l,M))return null;e(k,j);let u=t.localOriginFactory.getOrigin(k);n(A,j[8],j[9],j[10]);let f=v(i,u,{...a,position:k,normal:A,groundDistance:M.verticalDistanceToGround});return{object:new _({geometries:[f],layerViewUid:t.layerViewUid,graphicUid:s}),sampledElevation:M.sampledElevation}}function C(e,t,n,r){return w(e,t,n,r,a,k)}function w(t,n,r,i,a,o){return T(n,r)||!d(r,n.elevationProvider,n.renderCoordsHelper,i,a,j,o,M)||(e(k,j),t.geometries.some(e=>n.localOriginFactory.needsOriginUpdate(e.localOrigin,k,0)))?null:(f(t,M.verticalDistanceToGround),m(t,j),M.sampledElevation)}function T(e,t){let n=e.clippingExtent;return n?(o(t,k,e.elevationProvider.spatialReference),!s(n,k)):!1}function E(e,t,n){let i=e.elevationContext,a=n.spatialReference;o(t,k,a),i.centerInElevationSR=r(k[0],k[1],t.hasZ?k[2]:0)}function D(e){switch(e.type){case`point`:return e;case`polygon`:case`extent`:return g(e);case`polyline`:{let t=e.paths[0];if(!t||t.length===0)return null;let n=c(t,l(t)/2);return u(n[0],n[1],n[2],e.spatialReference)}case`mesh`:return e.extent.center}return null}function O(e,t){return o(t,k,e.renderCoordsHelper.spatialReference),e.localOriginFactory.getOrigin(k)}const k=i(),A=i(),j=t(),M=new p;export{x as createBufferStageObject,b as createStageObject,S as createTranslatedBufferStageObject,E as extendPointGraphicElevationContext,O as getLocalOriginForPoint,D as placePointOnGeometry,C as updateBufferStageObjectGeometry,w as updateTranslatedBufferStageObjectGeometry};
2
+ import{getTranslation as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as r,ZEROS as i,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectPointToVector as o}from"../../../../geometry/projection/projectPointToVector.js";import{containsPoint as s}from"../../../../geometry/support/aaBoundingBox.js";import{getPointOnPath as c,getPathLength as l}from"../../../../geometry/support/coordsUtils.js";import{makeDehydratedPoint as u}from"../../../../layers/graphics/dehydratedPoint.js";import{computePointTransformationForHUD as d,updateBufferPointGroundDistance as f,SampleElevationInfo as p,applyBufferPointTransformation as m}from"./elevationAlignmentUtils.js";import{computeCentroid as h}from"./graphicUtils.js";import{BufferObject3D as g}from"../../webgl-engine/lib/BufferObject3D.js";import{createPointBufferGeometry as _}from"../../webgl-engine/lib/GeometryUtil.js";function v(e,t,n,r,a,o){return y(e,t,n,r,a,o,i,T,_)}function y(t,r,i,a,o,s,c,l,u){if(S(t,r)||!d(r,t.elevationProvider,t.renderCoordsHelper,o,c,D,l,O))return null;e(T,D);let f=t.localOriginFactory.getOrigin(T);n(E,D[8],D[9],D[10]);let p=u(i,f,{...a,position:T,normal:E,groundDistance:O.verticalDistanceToGround});return{object:new g({geometries:[p],layerViewUid:t.layerViewUid,graphicUid:s}),sampledElevation:O.sampledElevation}}function b(e,t,n,r){return x(e,t,n,r,i,T)}function x(t,n,r,i,a,o){return S(n,r)||!d(r,n.elevationProvider,n.renderCoordsHelper,i,a,D,o,O)||(e(T,D),t.geometries.some(e=>n.localOriginFactory.needsOriginUpdate(e.localOrigin,T,0)))?null:(f(t,O.verticalDistanceToGround),m(t,D),O.sampledElevation)}function S(e,t){let n=e.clippingExtent;return n?(o(t,T,e.elevationProvider.spatialReference),!s(n,T)):!1}function C(e,t,n){let i=e.elevationContext,a=n.spatialReference;o(t,T,a),i.centerInElevationSR=r(T[0],T[1],t.hasZ?T[2]:0)}function w(e){switch(e.type){case`point`:return e;case`polygon`:case`extent`:return h(e);case`polyline`:{let t=e.paths[0];if(!t||t.length===0)return null;let n=c(t,l(t)/2);return u(n[0],n[1],n[2],e.spatialReference)}case`mesh`:return e.extent.center}return null}const T=a(),E=a(),D=t(),O=new p;export{v as createBufferStageObject,y as createTranslatedBufferStageObject,C as extendPointGraphicElevationContext,w as placePointOnGeometry,b as updateBufferStageObjectGeometry,x as updateTranslatedBufferStageObjectGeometry};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import has from"../../../core/has.js";import{property as n,subclass as r}from"../../../core/accessorSupport/decorators.js";import{projectWithoutEngine as i}from"../../../geometry/projectionUtils.js";import{fromExtent as a,empty as o,expand as s,allFinite as c,equals as l}from"../../../geometry/support/aaBoundingRect.js";import{isIntegratedMeshLayer as u,isTiledLayer as d}from"../../../layers/support/layerUtils.js";import{webMercatorWorldExtent as f,geographicWorldExtent as p}from"./TerrainConst.js";import{getTiledLayerInfo as m,isProjectableRasterLayer as h}from"./terrainUtils.js";let g=class extends t{constructor(e){super(e)}initialize(){this.addHandles([this.layerViews.on(`change`,()=>this.notifyChange(`stencilEnabledExtents`))])}destroy(){}get layerViewsExtent(){return this._computeLayerViewsExtent()}get tiledLayersExtent(){return this._computeTiledLayersExtent()}get stencilEnabledExtents(){return this._computeStencilEnabledExtents()}_computeStencilEnabledExtents(){let e=[];return this.layerViews.forEach(t=>{let n=t.layer;if(u(n)&&(!has(`enable-feature:im-as-ground`)||n.isUsedAsGroundLayer)&&this.viewSpatialReference!=null){let t=b(n.fullExtent,this.viewSpatialReference);t!=null&&e.push(a(t))}}),e}};e([n({readOnly:!0})],g.prototype,`layerViewsExtent`,null),e([n({readOnly:!0})],g.prototype,`tiledLayersExtent`,null),e([n({readOnly:!0})],g.prototype,`stencilEnabledExtents`,null),e([n()],g.prototype,`viewSpatialReference`,void 0),e([n()],g.prototype,`tilingScheme`,void 0),e([n()],g.prototype,`defaultTiledLayersExtent`,void 0),e([n({constructOnly:!0})],g.prototype,`layers`,void 0),e([n({constructOnly:!0})],g.prototype,`layerViews`,void 0),g=e([r(`esri.views.3d.terrain.ExtentHelper`)],g);function _(e,t){return e===1?new v(t):new y(t)}let v=class extends g{_computeLayerViewsExtent(){return this._globalExtent}_computeTiledLayersExtent(){return this._globalExtent}get _globalExtent(){return this.viewSpatialReference.isWebMercator?f:p}};v=e([r(`esri.views.3d.terrain.ExtentHelper.ExtentHelperGlobal`)],v);let y=class extends g{_computeLayerViewsExtent(){let e=o(),t=this.viewSpatialReference;this.layerViews.forEach(n=>{let r=n.layer;if(n.isResolved()&&(r.type!==`graphics`||!r.internal)){let r=b(`fullExtentInLocalViewSpatialReference`in n&&n.fullExtentInLocalViewSpatialReference||n.layer.fullExtent,t);s(e,r,e)}});let n=c(e)?e:null,r=this._get(`layerViewsExtent`);return l(n,r)?r:n}_computeTiledLayersExtent(){let e=this.tilingScheme;if(!e)return null;let t=this.viewSpatialReference,n=o();this.layers.forEach(r=>{if(r.loaded&&d(r)){let i=m(r,t,2);if(i==null)return;let{tileInfo:a,fullExtent:o}=i,c=`tilemapCache`in r?r.tilemapCache?.effectiveMaxLOD:void 0;a!=null&&o!=null&&(h(r)||e.compatibleWith(a,c)&&o.spatialReference.equals(e.spatialReference))&&s(n,o,n)}}),s(n,this.defaultTiledLayersExtent,n);let r=c(n)?n:null,i=this._get(`tiledLayersExtent`);return l(r,i)?i:r}};y=e([r(`esri.views.3d.terrain.ExtentHelper.ExtentHelperLocal`)],y);function b(e,t){return e!=null&&!e.spatialReference.equals(t)?i(e,e.spatialReference,t):e}export{g as ExtentHelper,_ as create};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{property as n,subclass as r}from"../../../core/accessorSupport/decorators.js";import{projectWithoutEngine as i}from"../../../geometry/projectionUtils.js";import{empty as a,expand as o,allFinite as s,equals as c}from"../../../geometry/support/aaBoundingRect.js";import{isTiledLayer as l}from"../../../layers/support/layerUtils.js";import{webMercatorWorldExtent as u,geographicWorldExtent as d}from"./TerrainConst.js";import{getTiledLayerInfo as f,isProjectableRasterLayer as p}from"./terrainUtils.js";let m=class extends t{constructor(e){super(e)}destroy(){}get layerViewsExtent(){return this._computeLayerViewsExtent()}get tiledLayersExtent(){return this._computeTiledLayersExtent()}};e([n({readOnly:!0})],m.prototype,`layerViewsExtent`,null),e([n({readOnly:!0})],m.prototype,`tiledLayersExtent`,null),e([n()],m.prototype,`viewSpatialReference`,void 0),e([n()],m.prototype,`tilingScheme`,void 0),e([n()],m.prototype,`defaultTiledLayersExtent`,void 0),e([n({constructOnly:!0})],m.prototype,`layers`,void 0),e([n({constructOnly:!0})],m.prototype,`layerViews`,void 0),m=e([r(`esri.views.3d.terrain.ExtentHelper`)],m);function h(e,t){return e===1?new g(t):new _(t)}let g=class extends m{_computeLayerViewsExtent(){return this._globalExtent}_computeTiledLayersExtent(){return this._globalExtent}get _globalExtent(){return this.viewSpatialReference.isWebMercator?u:d}};g=e([r(`esri.views.3d.terrain.ExtentHelper.ExtentHelperGlobal`)],g);let _=class extends m{_computeLayerViewsExtent(){let e=a(),t=this.viewSpatialReference;this.layerViews.forEach(n=>{let r=n.layer;if(n.isResolved()&&(r.type!==`graphics`||!r.internal)){let r=v(`fullExtentInLocalViewSpatialReference`in n&&n.fullExtentInLocalViewSpatialReference||n.layer.fullExtent,t);o(e,r,e)}});let n=s(e)?e:null,r=this._get(`layerViewsExtent`);return c(n,r)?r:n}_computeTiledLayersExtent(){let e=this.tilingScheme;if(!e)return null;let t=this.viewSpatialReference,n=a();this.layers.forEach(r=>{if(r.loaded&&l(r)){let i=f(r,t,2);if(i==null)return;let{tileInfo:a,fullExtent:s}=i,c=`tilemapCache`in r?r.tilemapCache?.effectiveMaxLOD:void 0;a!=null&&s!=null&&(p(r)||e.compatibleWith(a,c)&&s.spatialReference.equals(e.spatialReference))&&o(n,s,n)}}),o(n,this.defaultTiledLayersExtent,n);let r=s(n)?n:null,i=this._get(`tiledLayersExtent`);return c(r,i)?i:r}};_=e([r(`esri.views.3d.terrain.ExtentHelper.ExtentHelperLocal`)],_);function v(e,t){return e!=null&&!e.spatialReference.equals(t)?i(e,e.spatialReference,t):e}export{m as ExtentHelper,h as create};