@vcmap/ui 5.0.0-rc.18 → 5.0.0-rc.21

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 (376) hide show
  1. package/README.md +6 -6
  2. package/build/build.js +2 -2
  3. package/build/buildCesium.js +3 -3
  4. package/build/buildHelpers.js +2 -1
  5. package/config/base.config.json +0 -4
  6. package/config/dev.config.json +35 -14
  7. package/config/www.config.json +4 -0
  8. package/dist/assets/cesium/Workers/ArcType-ce2e50ab.js +37 -0
  9. package/dist/assets/cesium/Workers/AttributeCompression-b646d393.js +716 -0
  10. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-ff186ccc.js +258 -0
  11. package/dist/assets/cesium/Workers/BoundingRectangle-be5924f4.js +369 -0
  12. package/dist/assets/cesium/Workers/BoxGeometry-12eeccaf.js +884 -0
  13. package/dist/assets/cesium/Workers/Check-666ab1a0.js +290 -0
  14. package/dist/assets/cesium/Workers/Color-a84038cb.js +2262 -0
  15. package/dist/assets/cesium/Workers/ComponentDatatype-f7b11d02.js +341 -0
  16. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-3272c1b3.js +132 -0
  17. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-0170e093.js +498 -0
  18. package/dist/assets/cesium/Workers/CylinderGeometry-7c5da648.js +467 -0
  19. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-372c07d8.js +63 -0
  20. package/dist/assets/cesium/Workers/EllipseGeometry-797d580e.js +1304 -0
  21. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-2939e1dc.js +366 -0
  22. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-8b50870f.js +443 -0
  23. package/dist/assets/cesium/Workers/EllipsoidGeodesic-98c62a56.js +520 -0
  24. package/dist/assets/cesium/Workers/EllipsoidGeometry-21c0e3a5.js +637 -0
  25. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-eff247c8.js +454 -0
  26. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-19756602.js +741 -0
  27. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-214683dc.js +373 -0
  28. package/dist/assets/cesium/Workers/EncodedCartesian3-81f70735.js +171 -0
  29. package/dist/assets/cesium/Workers/FrustumGeometry-ac42a6d9.js +2512 -0
  30. package/dist/assets/cesium/Workers/GeometryAttribute-7d6f1732.js +619 -0
  31. package/dist/assets/cesium/Workers/GeometryAttributes-f06a2792.js +91 -0
  32. package/dist/assets/cesium/Workers/GeometryInstance-451dc1cd.js +121 -0
  33. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-04332ce7.js +16 -0
  34. package/dist/assets/cesium/Workers/GeometryPipeline-ce4339ed.js +3690 -0
  35. package/dist/assets/cesium/Workers/IndexDatatype-a55ceaa1.js +200 -0
  36. package/dist/assets/cesium/Workers/IntersectionTests-f6e6bd8a.js +1836 -0
  37. package/dist/assets/cesium/Workers/Math-2dbd6b93.js +1330 -0
  38. package/dist/assets/cesium/Workers/Matrix2-13178034.js +7086 -0
  39. package/dist/assets/cesium/Workers/Matrix3-315394f6.js +4283 -0
  40. package/dist/assets/cesium/Workers/OrientedBoundingBox-04920dc7.js +1257 -0
  41. package/dist/assets/cesium/Workers/Plane-900aa728.js +309 -0
  42. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-a8680d96.js +1074 -0
  43. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +1345 -0
  44. package/dist/assets/cesium/Workers/PolylinePipeline-32f36d2a.js +573 -0
  45. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-a510d657.js +781 -0
  46. package/dist/assets/cesium/Workers/PrimitivePipeline-ba38434a.js +966 -0
  47. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-bdba697e.js +280 -0
  48. package/dist/assets/cesium/Workers/RuntimeError-06c93819.js +68 -0
  49. package/dist/assets/cesium/Workers/TerrainEncoding-833187da.js +1227 -0
  50. package/dist/assets/cesium/Workers/Transforms-40229881.js +14696 -0
  51. package/dist/assets/cesium/Workers/VertexFormat-6b480673.js +312 -0
  52. package/dist/assets/cesium/Workers/WallGeometryLibrary-919eed92.js +211 -0
  53. package/dist/assets/cesium/Workers/WebGLConstants-a8cc3e8c.js +620 -0
  54. package/dist/assets/cesium/Workers/WebMercatorProjection-13a90d41.js +151 -0
  55. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-c2038105.js +129 -0
  56. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +1336 -4
  57. package/dist/assets/cesium/Workers/combine-ca22a614.js +82 -0
  58. package/dist/assets/cesium/Workers/combineGeometry.js +17 -25
  59. package/dist/assets/cesium/Workers/createBoxGeometry.js +12 -25
  60. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +313 -25
  61. package/dist/assets/cesium/Workers/createCircleGeometry.js +213 -25
  62. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +160 -25
  63. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +586 -25
  64. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +236 -25
  65. package/dist/assets/cesium/Workers/createCorridorGeometry.js +1407 -25
  66. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +603 -25
  67. package/dist/assets/cesium/Workers/createCylinderGeometry.js +12 -25
  68. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +265 -25
  69. package/dist/assets/cesium/Workers/createEllipseGeometry.js +14 -25
  70. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +14 -25
  71. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +12 -25
  72. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +15 -25
  73. package/dist/assets/cesium/Workers/createFrustumGeometry.js +12 -25
  74. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +251 -25
  75. package/dist/assets/cesium/Workers/createGeometry.js +55 -25
  76. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +2134 -25
  77. package/dist/assets/cesium/Workers/createPlaneGeometry.js +250 -25
  78. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +115 -25
  79. package/dist/assets/cesium/Workers/createPolygonGeometry.js +1420 -25
  80. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +683 -25
  81. package/dist/assets/cesium/Workers/createPolylineGeometry.js +571 -25
  82. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +411 -25
  83. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +301 -25
  84. package/dist/assets/cesium/Workers/createRectangleGeometry.js +1476 -25
  85. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +535 -25
  86. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +458 -25
  87. package/dist/assets/cesium/Workers/createSphereGeometry.js +123 -25
  88. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +126 -25
  89. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +127 -25
  90. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +535 -25
  91. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +445 -25
  92. package/dist/assets/cesium/Workers/createVectorTilePoints.js +79 -25
  93. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +406 -25
  94. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +254 -25
  95. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +640 -25
  96. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +2711 -27
  97. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +994 -25
  98. package/dist/assets/cesium/Workers/createWallGeometry.js +623 -25
  99. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +432 -25
  100. package/dist/assets/cesium/Workers/decodeDraco.js +381 -25
  101. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +3687 -25
  102. package/dist/assets/cesium/Workers/decodeI3S.js +1040 -0
  103. package/dist/assets/cesium/Workers/defaultValue-0a909f67.js +51 -0
  104. package/dist/assets/cesium/Workers/package.js +2 -2
  105. package/dist/assets/cesium/Workers/transcodeKTX2.js +1516 -25
  106. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +18 -2
  107. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1023 -25
  108. package/dist/assets/{cesium.2f992f.js → cesium.49585c.js} +112161 -108735
  109. package/dist/assets/cesium.js +1 -1
  110. package/dist/assets/{core.cb0408.js → core.59d4d1.js} +1616 -1629
  111. package/dist/assets/core.js +1 -1
  112. package/dist/assets/{index.bccdf969.js → index.a3861d4e.js} +1 -1
  113. package/dist/assets/{ol.5e3fd0.js → ol.c1c512.js} +6992 -6972
  114. package/dist/assets/ol.js +1 -1
  115. package/dist/assets/ui.80175f.css +1 -0
  116. package/dist/assets/{ui.08c48f.js → ui.80175f.js} +6121 -6785
  117. package/dist/assets/ui.js +1 -1
  118. package/dist/assets/{vue.228ead.js → vue.a08ab1.js} +0 -0
  119. package/dist/assets/vue.js +2 -2
  120. package/dist/assets/{vuetify.0b5039.css → vuetify.efc158.css} +0 -0
  121. package/dist/assets/{vuetify.0b5039.js → vuetify.efc158.js} +1 -1
  122. package/dist/assets/vuetify.js +2 -2
  123. package/dist/index.html +1 -1
  124. package/index.js +2 -1
  125. package/lib/cesium.js +1 -1
  126. package/package.json +3 -4
  127. package/plugins/{simple-graph → @vcmap/simple-graph}/README.md +1 -1
  128. package/plugins/{simple-graph → @vcmap/simple-graph}/SimpleGraphComponent.vue +0 -0
  129. package/plugins/{simple-graph → @vcmap/simple-graph}/index.js +0 -0
  130. package/plugins/{simple-graph → @vcmap/simple-graph}/package.json +0 -0
  131. package/plugins/{simple-graph → @vcmap/simple-graph}/simpleGraphView.js +0 -0
  132. package/plugins/@vcmap-show-case/README.md +20 -0
  133. package/plugins/{buttonExamples/ButtonExamples.vue → @vcmap-show-case/buttons-example/ButtonsExample.vue} +1 -1
  134. package/plugins/@vcmap-show-case/buttons-example/README.md +4 -0
  135. package/plugins/{buttonExamples → @vcmap-show-case/buttons-example}/index.js +16 -8
  136. package/plugins/@vcmap-show-case/buttons-example/package.json +5 -0
  137. package/plugins/{categoryTest → @vcmap-show-case/category-tester}/Categories.vue +7 -6
  138. package/plugins/{categoryTest → @vcmap-show-case/category-tester}/Category.vue +4 -3
  139. package/plugins/@vcmap-show-case/category-tester/README.md +3 -0
  140. package/plugins/{categoryTest → @vcmap-show-case/category-tester}/index.js +12 -4
  141. package/plugins/@vcmap-show-case/category-tester/package.json +5 -0
  142. package/plugins/@vcmap-show-case/config-editor/README.md +3 -0
  143. package/plugins/{test → @vcmap-show-case/config-editor}/editor.vue +0 -0
  144. package/plugins/@vcmap-show-case/config-editor/index.js +47 -0
  145. package/plugins/@vcmap-show-case/config-editor/package.json +5 -0
  146. package/plugins/@vcmap-show-case/context-menu-tester/README.md +3 -0
  147. package/plugins/@vcmap-show-case/context-menu-tester/index.js +33 -0
  148. package/plugins/@vcmap-show-case/context-menu-tester/package.json +5 -0
  149. package/plugins/{@vcmap/pluginExample/pluginExampleComponent.vue → @vcmap-show-case/form-inputs-example/FormInputsExample.vue} +14 -13
  150. package/plugins/@vcmap-show-case/form-inputs-example/README.md +4 -0
  151. package/plugins/@vcmap-show-case/form-inputs-example/config.json +5 -0
  152. package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/exampleActions.js +1 -1
  153. package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/index.js +23 -22
  154. package/plugins/@vcmap-show-case/form-inputs-example/package.json +5 -0
  155. package/plugins/{@vcmap/pluginExample → @vcmap-show-case/form-inputs-example}/validation.js +0 -0
  156. package/plugins/@vcmap-show-case/icons-example/README.md +5 -0
  157. package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +51 -0
  158. package/plugins/@vcmap-show-case/icons-example/index.js +44 -0
  159. package/plugins/@vcmap-show-case/icons-example/package.json +5 -0
  160. package/plugins/{test/testList.vue → @vcmap-show-case/list-example/ListExample.vue} +1 -1
  161. package/plugins/@vcmap-show-case/list-example/README.md +3 -0
  162. package/plugins/@vcmap-show-case/list-example/index.js +44 -0
  163. package/plugins/@vcmap-show-case/list-example/package.json +5 -0
  164. package/plugins/@vcmap-show-case/notifier-tester/README.md +3 -0
  165. package/plugins/{notifier → @vcmap-show-case/notifier-tester}/index.js +11 -6
  166. package/plugins/{notifier → @vcmap-show-case/notifier-tester}/notifierTester.vue +0 -0
  167. package/plugins/@vcmap-show-case/notifier-tester/package.json +5 -0
  168. package/plugins/@vcmap-show-case/textfields-example/README.md +3 -0
  169. package/plugins/{example/mySuperComponent.vue → @vcmap-show-case/textfields-example/TextfieldsExample.vue} +1 -7
  170. package/plugins/{example → @vcmap-show-case/textfields-example}/index.js +58 -62
  171. package/plugins/@vcmap-show-case/textfields-example/package.json +5 -0
  172. package/plugins/@vcmap-show-case/window-tester/README.md +3 -0
  173. package/plugins/{test/windowManagerExample.vue → @vcmap-show-case/window-tester/WindowExample.vue} +36 -20
  174. package/plugins/{test → @vcmap-show-case/window-tester}/emptyComponent.vue +8 -3
  175. package/plugins/@vcmap-show-case/window-tester/index.js +62 -0
  176. package/plugins/{test → @vcmap-show-case/window-tester}/myCustomHeader.vue +0 -0
  177. package/plugins/@vcmap-show-case/window-tester/package.json +5 -0
  178. package/plugins/{test → @vcmap-show-case/window-tester}/toolbox-data.js +9 -9
  179. package/plugins/{test/vcsContent.vue → @vcmap-show-case/window-tester/windowExampleContent.vue} +1 -5
  180. package/plugins/@vcmap-show-case/wizard-example/README.md +3 -0
  181. package/plugins/{wizardExample → @vcmap-show-case/wizard-example}/index.js +12 -6
  182. package/plugins/@vcmap-show-case/wizard-example/package.json +5 -0
  183. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +95 -0
  184. package/plugins/package.json +2 -1
  185. package/src/actions/actionHelper.js +1 -3
  186. package/src/actions/stateRefAction.js +0 -10
  187. package/src/application/VcsApp.vue +42 -23
  188. package/src/application/VcsMap.vue +9 -0
  189. package/src/components/buttons/VcsActionButtonList.vue +1 -0
  190. package/src/components/form-inputs-controls/VcsCheckbox.vue +3 -1
  191. package/src/components/form-inputs-controls/VcsWizard.vue +17 -20
  192. package/src/components/form-inputs-controls/VcsWizardStep.vue +160 -0
  193. package/src/{icons → components/icons}/+all.js +0 -0
  194. package/src/{icons → components/icons}/2DAreaIcon.vue +0 -0
  195. package/src/{icons → components/icons}/2DDistanceIcon.vue +0 -0
  196. package/src/{icons → components/icons}/3DAreaIcon.vue +0 -0
  197. package/src/{icons → components/icons}/3DDistanceIcon.vue +0 -0
  198. package/src/{icons → components/icons}/3DHeightIcon.vue +0 -0
  199. package/src/{icons → components/icons}/AngleIcon.vue +0 -0
  200. package/src/{icons → components/icons}/AssociationsIcon.vue +0 -0
  201. package/src/{icons → components/icons}/AxisIcon.vue +0 -0
  202. package/src/{icons → components/icons}/BoundingBoxIcon.vue +0 -0
  203. package/src/{icons → components/icons}/CheckboxCheckedIcon.vue +0 -0
  204. package/src/{icons → components/icons}/CheckboxIcon.vue +0 -0
  205. package/src/{icons → components/icons}/CheckboxIndeterminateIcon.vue +0 -0
  206. package/src/{icons → components/icons}/CircleIcon.vue +0 -0
  207. package/src/{icons → components/icons}/ClippingHorizontalIcon.vue +0 -0
  208. package/src/{icons → components/icons}/ClippingIcon.vue +0 -0
  209. package/src/{icons → components/icons}/ClippingVerticalIcon.vue +0 -0
  210. package/src/{icons → components/icons}/ColorPickerIcon.vue +0 -0
  211. package/src/{icons → components/icons}/ColorSwatchIcon.vue +0 -0
  212. package/src/{icons → components/icons}/CommentIcon.vue +0 -0
  213. package/src/{icons → components/icons}/CompassIcon.vue +0 -0
  214. package/src/{icons → components/icons}/ComponentsIcon.vue +0 -0
  215. package/src/{icons → components/icons}/ConeIcon.vue +0 -0
  216. package/src/{icons → components/icons}/DimensionsHouseIcon.vue +0 -0
  217. package/src/{icons → components/icons}/EditIcon.vue +0 -0
  218. package/src/{icons → components/icons}/ElevationProfileIcon.vue +0 -0
  219. package/src/{icons → components/icons}/ExportAreaIcon.vue +0 -0
  220. package/src/{icons → components/icons}/ExportFlightIcon.vue +0 -0
  221. package/src/{icons → components/icons}/ExportIcon.vue +0 -0
  222. package/src/{icons → components/icons}/ExternalLinkIcon.vue +0 -0
  223. package/src/{icons → components/icons}/EyeIcon.vue +0 -0
  224. package/src/{icons → components/icons}/FastForwardIcon.vue +0 -0
  225. package/src/{icons → components/icons}/FilterIcon.vue +0 -0
  226. package/src/{icons → components/icons}/GlobalTerrainIcon.vue +0 -0
  227. package/src/{icons → components/icons}/GlobeNatureIcon.vue +0 -0
  228. package/src/{icons → components/icons}/GroundIcon.vue +0 -0
  229. package/src/{icons → components/icons}/HealthCareIndustriesIcon.vue +0 -0
  230. package/src/{icons → components/icons}/HelpIcon.vue +0 -0
  231. package/src/{icons → components/icons}/HideIcon.vue +0 -0
  232. package/src/{icons → components/icons}/HomePointIcon.vue +0 -0
  233. package/src/{icons → components/icons}/HospitalsIcon.vue +0 -0
  234. package/src/{icons → components/icons}/HouseIcon.vue +0 -0
  235. package/src/{icons → components/icons}/ImportIcon.vue +0 -0
  236. package/src/{icons → components/icons}/InfoIcon.vue +0 -0
  237. package/src/{icons → components/icons}/KebabIcon.vue +0 -0
  238. package/src/{icons → components/icons}/LabelIcon.vue +0 -0
  239. package/src/{icons → components/icons}/LayersIcon.vue +0 -0
  240. package/src/{icons → components/icons}/LegendIcon.vue +0 -0
  241. package/src/{icons → components/icons}/LineIcon.vue +0 -0
  242. package/src/{icons → components/icons}/LinkIcon.vue +0 -0
  243. package/src/{icons → components/icons}/LogoutIcon.vue +0 -0
  244. package/src/{icons → components/icons}/MapIcon.vue +0 -0
  245. package/src/{icons → components/icons}/MenuIcon.vue +0 -0
  246. package/src/{icons → components/icons}/MinusIcon.vue +0 -0
  247. package/src/{icons → components/icons}/ObjectAttributeIcon.vue +0 -0
  248. package/src/{icons → components/icons}/ObjectSelectIcon.vue +0 -0
  249. package/src/{icons → components/icons}/ObliqueViewIcon.vue +0 -0
  250. package/src/{icons → components/icons}/PdfIcon.vue +0 -0
  251. package/src/{icons → components/icons}/PedestrianIcon.vue +0 -0
  252. package/src/{icons → components/icons}/PenIcon.vue +0 -0
  253. package/src/{icons → components/icons}/PlayCircleIcon.vue +0 -0
  254. package/src/{icons → components/icons}/PlusIcon.vue +0 -0
  255. package/src/{icons → components/icons}/PoiIcon.vue +0 -0
  256. package/src/{icons → components/icons}/PointSelectIcon.vue +0 -0
  257. package/src/{icons → components/icons}/PolygonIcon.vue +0 -0
  258. package/src/{icons → components/icons}/PresentationModeIcon.vue +0 -0
  259. package/src/{icons → components/icons}/ProgressIcon.vue +0 -0
  260. package/src/{icons → components/icons}/QueryIcon.vue +0 -0
  261. package/src/{icons → components/icons}/RectangleIcon.vue +0 -0
  262. package/src/{icons → components/icons}/ReturnIcon.vue +0 -0
  263. package/src/{icons → components/icons}/RewindIcon.vue +0 -0
  264. package/src/{icons → components/icons}/RotateLeftIcon.vue +0 -0
  265. package/src/{icons → components/icons}/RotateRightIcon.vue +0 -0
  266. package/src/{icons → components/icons}/ScreenshotIcon.vue +0 -0
  267. package/src/{icons → components/icons}/SearchIcon.vue +0 -0
  268. package/src/{icons → components/icons}/ShadowIcon.vue +0 -0
  269. package/src/{icons → components/icons}/ShapesIcon.vue +0 -0
  270. package/src/{icons → components/icons}/ShareIcon.vue +0 -0
  271. package/src/{icons → components/icons}/SimpleCircleFilledIcon.vue +0 -0
  272. package/src/{icons → components/icons}/SimpleCircleHalfFilledIcon.vue +0 -0
  273. package/src/{icons → components/icons}/SimpleCircleOutlinedIcon.vue +0 -0
  274. package/src/{icons → components/icons}/SkipNextIcon.vue +0 -0
  275. package/src/{icons → components/icons}/SkipPreviousIcon.vue +0 -0
  276. package/src/{icons → components/icons}/SplitViewIcon.vue +0 -0
  277. package/src/{icons → components/icons}/TerrainBoxIcon.vue +0 -0
  278. package/src/{icons → components/icons}/TextStyleIcon.vue +0 -0
  279. package/src/{icons → components/icons}/ThreeDimensionsIcon.vue +0 -0
  280. package/src/{icons → components/icons}/ToolsIcon.vue +0 -0
  281. package/src/{icons → components/icons}/TouchIcon.vue +0 -0
  282. package/src/{icons → components/icons}/TrashCanIcon.vue +0 -0
  283. package/src/{icons → components/icons}/TriangleIcon.vue +0 -0
  284. package/src/{icons → components/icons}/TwoDimensionsIcon.vue +0 -0
  285. package/src/{icons → components/icons}/UploadIcon.vue +0 -0
  286. package/src/{icons → components/icons}/UserProfileIcon.vue +0 -0
  287. package/src/{icons → components/icons}/UserShareIcon.vue +0 -0
  288. package/src/{icons → components/icons}/VideoRecorderIcon.vue +0 -0
  289. package/src/{icons → components/icons}/ViewpointFlightIcon.vue +0 -0
  290. package/src/{icons → components/icons}/ViewpointIcon.vue +0 -0
  291. package/src/{icons → components/icons}/Viewshed360Icon.vue +0 -0
  292. package/src/{icons → components/icons}/ViewshedConeIcon.vue +0 -0
  293. package/src/{icons → components/icons}/ViewshedIcon.vue +0 -0
  294. package/src/{icons → components/icons}/WalkingIcon.vue +0 -0
  295. package/src/{icons → components/icons}/WallIcon.vue +0 -0
  296. package/src/{icons → components/icons}/WandIcon.vue +0 -0
  297. package/src/components/lists/VcsList.vue +21 -12
  298. package/src/components/lists/VcsTreeviewLeaf.vue +14 -2
  299. package/src/components/notification/VcsTooltip.vue +1 -1
  300. package/src/featureInfo/abstractFeatureInfoView.js +1 -1
  301. package/src/featureInfo/addressBalloonFeatureInfoView.js +1 -1
  302. package/src/featureInfo/balloonFeatureInfoView.js +1 -1
  303. package/src/featureInfo/balloonHelper.js +6 -6
  304. package/src/featureInfo/featureInfo.js +2 -2
  305. package/src/i18n/de.js +2 -6
  306. package/src/i18n/en.js +2 -6
  307. package/src/legend/legendHelper.js +4 -3
  308. package/src/legend/vcsLegend.vue +21 -2
  309. package/src/manager/window/WindowComponent.vue +42 -4
  310. package/src/manager/window/WindowComponentHeader.vue +1 -1
  311. package/src/manager/window/windowHelper.js +7 -11
  312. package/src/manager/window/windowManager.js +15 -11
  313. package/src/navigation/mapNavCompass.vue +13 -7
  314. package/src/navigation/mapNavigation.vue +66 -4
  315. package/src/navigation/orientationToolsButton.vue +1 -1
  316. package/src/navigation/overviewMap.js +26 -10
  317. package/src/navigation/vcsCompass.vue +4 -73
  318. package/src/setup.js +1 -1
  319. package/src/vuePlugins/vuetify.js +1 -1
  320. package/dist/assets/cesium/Workers/ArcType-c9b2b290.js +0 -25
  321. package/dist/assets/cesium/Workers/AttributeCompression-7b0f288d.js +0 -25
  322. package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-d0c22774.js +0 -25
  323. package/dist/assets/cesium/Workers/BoundingRectangle-201b1a81.js +0 -25
  324. package/dist/assets/cesium/Workers/BoxGeometry-4985457c.js +0 -25
  325. package/dist/assets/cesium/Workers/Color-cc8c18b3.js +0 -25
  326. package/dist/assets/cesium/Workers/ComponentDatatype-0200bf8c.js +0 -25
  327. package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-4345acdf.js +0 -25
  328. package/dist/assets/cesium/Workers/CorridorGeometryLibrary-850a6c35.js +0 -25
  329. package/dist/assets/cesium/Workers/CylinderGeometry-57a1051a.js +0 -25
  330. package/dist/assets/cesium/Workers/CylinderGeometryLibrary-62ce5a1f.js +0 -25
  331. package/dist/assets/cesium/Workers/EllipseGeometry-8627398f.js +0 -25
  332. package/dist/assets/cesium/Workers/EllipseGeometryLibrary-e5919563.js +0 -25
  333. package/dist/assets/cesium/Workers/EllipseOutlineGeometry-96fd4ae1.js +0 -25
  334. package/dist/assets/cesium/Workers/EllipsoidGeodesic-8bfefbff.js +0 -25
  335. package/dist/assets/cesium/Workers/EllipsoidGeometry-377329b9.js +0 -25
  336. package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-e6e16e49.js +0 -25
  337. package/dist/assets/cesium/Workers/EllipsoidRhumbLine-03528f73.js +0 -25
  338. package/dist/assets/cesium/Workers/EllipsoidTangentPlane-c080fd1b.js +0 -25
  339. package/dist/assets/cesium/Workers/EncodedCartesian3-ea0e408f.js +0 -25
  340. package/dist/assets/cesium/Workers/FrustumGeometry-a8b5d817.js +0 -25
  341. package/dist/assets/cesium/Workers/GeometryAttribute-8458a8fd.js +0 -25
  342. package/dist/assets/cesium/Workers/GeometryAttributes-ac0f8485.js +0 -25
  343. package/dist/assets/cesium/Workers/GeometryInstance-ee3aa3ba.js +0 -25
  344. package/dist/assets/cesium/Workers/GeometryOffsetAttribute-08ae0c50.js +0 -25
  345. package/dist/assets/cesium/Workers/GeometryPipeline-33ca229c.js +0 -25
  346. package/dist/assets/cesium/Workers/IndexDatatype-e713bfd2.js +0 -25
  347. package/dist/assets/cesium/Workers/IntersectionTests-eb4db8e0.js +0 -25
  348. package/dist/assets/cesium/Workers/Matrix2-eefef8eb.js +0 -25
  349. package/dist/assets/cesium/Workers/OrientedBoundingBox-5193f9a2.js +0 -25
  350. package/dist/assets/cesium/Workers/Plane-b0299683.js +0 -25
  351. package/dist/assets/cesium/Workers/PolygonGeometryLibrary-b61295f3.js +0 -25
  352. package/dist/assets/cesium/Workers/PolygonPipeline-eb527514.js +0 -25
  353. package/dist/assets/cesium/Workers/PolylinePipeline-0f23dd84.js +0 -25
  354. package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-2d903430.js +0 -25
  355. package/dist/assets/cesium/Workers/PrimitivePipeline-e2640413.js +0 -25
  356. package/dist/assets/cesium/Workers/RectangleGeometryLibrary-ae8bf8a5.js +0 -25
  357. package/dist/assets/cesium/Workers/RuntimeError-5baf5c66.js +0 -25
  358. package/dist/assets/cesium/Workers/TerrainEncoding-bc10ab54.js +0 -25
  359. package/dist/assets/cesium/Workers/Transforms-d2e5867e.js +0 -63
  360. package/dist/assets/cesium/Workers/VertexFormat-5ec0d9ff.js +0 -25
  361. package/dist/assets/cesium/Workers/WallGeometryLibrary-1a33e416.js +0 -25
  362. package/dist/assets/cesium/Workers/WebGLConstants-5b50ced1.js +0 -25
  363. package/dist/assets/cesium/Workers/WebMercatorProjection-cd2f30c2.js +0 -25
  364. package/dist/assets/cesium/Workers/_commonjsHelpers-bc29abbc.js +0 -25
  365. package/dist/assets/cesium/Workers/arrayRemoveDuplicates-f13aceb1.js +0 -25
  366. package/dist/assets/cesium/Workers/combine-7533016d.js +0 -25
  367. package/dist/assets/cesium/Workers/defaultValue-0c475b81.js +0 -25
  368. package/dist/assets/cesium/Workers/package.json +0 -1
  369. package/dist/assets/ui.08c48f.css +0 -1
  370. package/plugins/@vcmap/pluginExample/config.json +0 -6
  371. package/plugins/@vcmap/pluginExample/package.json +0 -7
  372. package/plugins/categoryTest/ItemEditor.vue +0 -13
  373. package/plugins/test/allIconsComponent.vue +0 -50
  374. package/plugins/test/index.js +0 -209
  375. package/plugins/wizardExample/wizardExample.vue +0 -77
  376. package/src/components/form-inputs-controls/VcsColorPicker.vue +0 -85
@@ -0,0 +1,1227 @@
1
+ define(['exports', './Transforms-40229881', './Matrix3-315394f6', './Check-666ab1a0', './defaultValue-0a909f67', './Matrix2-13178034', './AttributeCompression-b646d393', './ComponentDatatype-f7b11d02', './Math-2dbd6b93'], (function (exports, Transforms, Matrix3, Check, defaultValue, Matrix2, AttributeCompression, ComponentDatatype, Math$1) { 'use strict';
2
+
3
+ /**
4
+ * Determine whether or not other objects are visible or hidden behind the visible horizon defined by
5
+ * an {@link Ellipsoid} and a camera position. The ellipsoid is assumed to be located at the
6
+ * origin of the coordinate system. This class uses the algorithm described in the
7
+ * {@link https://cesium.com/blog/2013/04/25/Horizon-culling/|Horizon Culling} blog post.
8
+ *
9
+ * @alias EllipsoidalOccluder
10
+ *
11
+ * @param {Ellipsoid} ellipsoid The ellipsoid to use as an occluder.
12
+ * @param {Cartesian3} [cameraPosition] The coordinate of the viewer/camera. If this parameter is not
13
+ * specified, {@link EllipsoidalOccluder#cameraPosition} must be called before
14
+ * testing visibility.
15
+ *
16
+ * @constructor
17
+ *
18
+ * @example
19
+ * // Construct an ellipsoidal occluder with radii 1.0, 1.1, and 0.9.
20
+ * const cameraPosition = new Cesium.Cartesian3(5.0, 6.0, 7.0);
21
+ * const occluderEllipsoid = new Cesium.Ellipsoid(1.0, 1.1, 0.9);
22
+ * const occluder = new Cesium.EllipsoidalOccluder(occluderEllipsoid, cameraPosition);
23
+ *
24
+ * @private
25
+ */
26
+ function EllipsoidalOccluder(ellipsoid, cameraPosition) {
27
+ //>>includeStart('debug', pragmas.debug);
28
+ Check.Check.typeOf.object("ellipsoid", ellipsoid);
29
+ //>>includeEnd('debug');
30
+
31
+ this._ellipsoid = ellipsoid;
32
+ this._cameraPosition = new Matrix3.Cartesian3();
33
+ this._cameraPositionInScaledSpace = new Matrix3.Cartesian3();
34
+ this._distanceToLimbInScaledSpaceSquared = 0.0;
35
+
36
+ // cameraPosition fills in the above values
37
+ if (defaultValue.defined(cameraPosition)) {
38
+ this.cameraPosition = cameraPosition;
39
+ }
40
+ }
41
+
42
+ Object.defineProperties(EllipsoidalOccluder.prototype, {
43
+ /**
44
+ * Gets the occluding ellipsoid.
45
+ * @memberof EllipsoidalOccluder.prototype
46
+ * @type {Ellipsoid}
47
+ */
48
+ ellipsoid: {
49
+ get: function () {
50
+ return this._ellipsoid;
51
+ },
52
+ },
53
+ /**
54
+ * Gets or sets the position of the camera.
55
+ * @memberof EllipsoidalOccluder.prototype
56
+ * @type {Cartesian3}
57
+ */
58
+ cameraPosition: {
59
+ get: function () {
60
+ return this._cameraPosition;
61
+ },
62
+ set: function (cameraPosition) {
63
+ // See https://cesium.com/blog/2013/04/25/Horizon-culling/
64
+ const ellipsoid = this._ellipsoid;
65
+ const cv = ellipsoid.transformPositionToScaledSpace(
66
+ cameraPosition,
67
+ this._cameraPositionInScaledSpace
68
+ );
69
+ const vhMagnitudeSquared = Matrix3.Cartesian3.magnitudeSquared(cv) - 1.0;
70
+
71
+ Matrix3.Cartesian3.clone(cameraPosition, this._cameraPosition);
72
+ this._cameraPositionInScaledSpace = cv;
73
+ this._distanceToLimbInScaledSpaceSquared = vhMagnitudeSquared;
74
+ },
75
+ },
76
+ });
77
+
78
+ const scratchCartesian = new Matrix3.Cartesian3();
79
+
80
+ /**
81
+ * Determines whether or not a point, the <code>occludee</code>, is hidden from view by the occluder.
82
+ *
83
+ * @param {Cartesian3} occludee The point to test for visibility.
84
+ * @returns {Boolean} <code>true</code> if the occludee is visible; otherwise <code>false</code>.
85
+ *
86
+ * @example
87
+ * const cameraPosition = new Cesium.Cartesian3(0, 0, 2.5);
88
+ * const ellipsoid = new Cesium.Ellipsoid(1.0, 1.1, 0.9);
89
+ * const occluder = new Cesium.EllipsoidalOccluder(ellipsoid, cameraPosition);
90
+ * const point = new Cesium.Cartesian3(0, -3, -3);
91
+ * occluder.isPointVisible(point); //returns true
92
+ */
93
+ EllipsoidalOccluder.prototype.isPointVisible = function (occludee) {
94
+ const ellipsoid = this._ellipsoid;
95
+ const occludeeScaledSpacePosition = ellipsoid.transformPositionToScaledSpace(
96
+ occludee,
97
+ scratchCartesian
98
+ );
99
+ return isScaledSpacePointVisible(
100
+ occludeeScaledSpacePosition,
101
+ this._cameraPositionInScaledSpace,
102
+ this._distanceToLimbInScaledSpaceSquared
103
+ );
104
+ };
105
+
106
+ /**
107
+ * Determines whether or not a point expressed in the ellipsoid scaled space, is hidden from view by the
108
+ * occluder. To transform a Cartesian X, Y, Z position in the coordinate system aligned with the ellipsoid
109
+ * into the scaled space, call {@link Ellipsoid#transformPositionToScaledSpace}.
110
+ *
111
+ * @param {Cartesian3} occludeeScaledSpacePosition The point to test for visibility, represented in the scaled space.
112
+ * @returns {Boolean} <code>true</code> if the occludee is visible; otherwise <code>false</code>.
113
+ *
114
+ * @example
115
+ * const cameraPosition = new Cesium.Cartesian3(0, 0, 2.5);
116
+ * const ellipsoid = new Cesium.Ellipsoid(1.0, 1.1, 0.9);
117
+ * const occluder = new Cesium.EllipsoidalOccluder(ellipsoid, cameraPosition);
118
+ * const point = new Cesium.Cartesian3(0, -3, -3);
119
+ * const scaledSpacePoint = ellipsoid.transformPositionToScaledSpace(point);
120
+ * occluder.isScaledSpacePointVisible(scaledSpacePoint); //returns true
121
+ */
122
+ EllipsoidalOccluder.prototype.isScaledSpacePointVisible = function (
123
+ occludeeScaledSpacePosition
124
+ ) {
125
+ return isScaledSpacePointVisible(
126
+ occludeeScaledSpacePosition,
127
+ this._cameraPositionInScaledSpace,
128
+ this._distanceToLimbInScaledSpaceSquared
129
+ );
130
+ };
131
+
132
+ const scratchCameraPositionInScaledSpaceShrunk = new Matrix3.Cartesian3();
133
+
134
+ /**
135
+ * Similar to {@link EllipsoidalOccluder#isScaledSpacePointVisible} except tests against an
136
+ * ellipsoid that has been shrunk by the minimum height when the minimum height is below
137
+ * the ellipsoid. This is intended to be used with points generated by
138
+ * {@link EllipsoidalOccluder#computeHorizonCullingPointPossiblyUnderEllipsoid} or
139
+ * {@link EllipsoidalOccluder#computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid}.
140
+ *
141
+ * @param {Cartesian3} occludeeScaledSpacePosition The point to test for visibility, represented in the scaled space of the possibly-shrunk ellipsoid.
142
+ * @returns {Boolean} <code>true</code> if the occludee is visible; otherwise <code>false</code>.
143
+ */
144
+ EllipsoidalOccluder.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid = function (
145
+ occludeeScaledSpacePosition,
146
+ minimumHeight
147
+ ) {
148
+ const ellipsoid = this._ellipsoid;
149
+ let vhMagnitudeSquared;
150
+ let cv;
151
+
152
+ if (
153
+ defaultValue.defined(minimumHeight) &&
154
+ minimumHeight < 0.0 &&
155
+ ellipsoid.minimumRadius > -minimumHeight
156
+ ) {
157
+ // This code is similar to the cameraPosition setter, but unrolled for performance because it will be called a lot.
158
+ cv = scratchCameraPositionInScaledSpaceShrunk;
159
+ cv.x = this._cameraPosition.x / (ellipsoid.radii.x + minimumHeight);
160
+ cv.y = this._cameraPosition.y / (ellipsoid.radii.y + minimumHeight);
161
+ cv.z = this._cameraPosition.z / (ellipsoid.radii.z + minimumHeight);
162
+ vhMagnitudeSquared = cv.x * cv.x + cv.y * cv.y + cv.z * cv.z - 1.0;
163
+ } else {
164
+ cv = this._cameraPositionInScaledSpace;
165
+ vhMagnitudeSquared = this._distanceToLimbInScaledSpaceSquared;
166
+ }
167
+
168
+ return isScaledSpacePointVisible(
169
+ occludeeScaledSpacePosition,
170
+ cv,
171
+ vhMagnitudeSquared
172
+ );
173
+ };
174
+
175
+ /**
176
+ * Computes a point that can be used for horizon culling from a list of positions. If the point is below
177
+ * the horizon, all of the positions are guaranteed to be below the horizon as well. The returned point
178
+ * is expressed in the ellipsoid-scaled space and is suitable for use with
179
+ * {@link EllipsoidalOccluder#isScaledSpacePointVisible}.
180
+ *
181
+ * @param {Cartesian3} directionToPoint The direction that the computed point will lie along.
182
+ * A reasonable direction to use is the direction from the center of the ellipsoid to
183
+ * the center of the bounding sphere computed from the positions. The direction need not
184
+ * be normalized.
185
+ * @param {Cartesian3[]} positions The positions from which to compute the horizon culling point. The positions
186
+ * must be expressed in a reference frame centered at the ellipsoid and aligned with the
187
+ * ellipsoid's axes.
188
+ * @param {Cartesian3} [result] The instance on which to store the result instead of allocating a new instance.
189
+ * @returns {Cartesian3} The computed horizon culling point, expressed in the ellipsoid-scaled space.
190
+ */
191
+ EllipsoidalOccluder.prototype.computeHorizonCullingPoint = function (
192
+ directionToPoint,
193
+ positions,
194
+ result
195
+ ) {
196
+ return computeHorizonCullingPointFromPositions(
197
+ this._ellipsoid,
198
+ directionToPoint,
199
+ positions,
200
+ result
201
+ );
202
+ };
203
+
204
+ const scratchEllipsoidShrunk = Matrix3.Ellipsoid.clone(Matrix3.Ellipsoid.UNIT_SPHERE);
205
+
206
+ /**
207
+ * Similar to {@link EllipsoidalOccluder#computeHorizonCullingPoint} except computes the culling
208
+ * point relative to an ellipsoid that has been shrunk by the minimum height when the minimum height is below
209
+ * the ellipsoid. The returned point is expressed in the possibly-shrunk ellipsoid-scaled space and is suitable
210
+ * for use with {@link EllipsoidalOccluder#isScaledSpacePointVisiblePossiblyUnderEllipsoid}.
211
+ *
212
+ * @param {Cartesian3} directionToPoint The direction that the computed point will lie along.
213
+ * A reasonable direction to use is the direction from the center of the ellipsoid to
214
+ * the center of the bounding sphere computed from the positions. The direction need not
215
+ * be normalized.
216
+ * @param {Cartesian3[]} positions The positions from which to compute the horizon culling point. The positions
217
+ * must be expressed in a reference frame centered at the ellipsoid and aligned with the
218
+ * ellipsoid's axes.
219
+ * @param {Number} [minimumHeight] The minimum height of all positions. If this value is undefined, all positions are assumed to be above the ellipsoid.
220
+ * @param {Cartesian3} [result] The instance on which to store the result instead of allocating a new instance.
221
+ * @returns {Cartesian3} The computed horizon culling point, expressed in the possibly-shrunk ellipsoid-scaled space.
222
+ */
223
+ EllipsoidalOccluder.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid = function (
224
+ directionToPoint,
225
+ positions,
226
+ minimumHeight,
227
+ result
228
+ ) {
229
+ const possiblyShrunkEllipsoid = getPossiblyShrunkEllipsoid(
230
+ this._ellipsoid,
231
+ minimumHeight,
232
+ scratchEllipsoidShrunk
233
+ );
234
+ return computeHorizonCullingPointFromPositions(
235
+ possiblyShrunkEllipsoid,
236
+ directionToPoint,
237
+ positions,
238
+ result
239
+ );
240
+ };
241
+ /**
242
+ * Computes a point that can be used for horizon culling from a list of positions. If the point is below
243
+ * the horizon, all of the positions are guaranteed to be below the horizon as well. The returned point
244
+ * is expressed in the ellipsoid-scaled space and is suitable for use with
245
+ * {@link EllipsoidalOccluder#isScaledSpacePointVisible}.
246
+ *
247
+ * @param {Cartesian3} directionToPoint The direction that the computed point will lie along.
248
+ * A reasonable direction to use is the direction from the center of the ellipsoid to
249
+ * the center of the bounding sphere computed from the positions. The direction need not
250
+ * be normalized.
251
+ * @param {Number[]} vertices The vertices from which to compute the horizon culling point. The positions
252
+ * must be expressed in a reference frame centered at the ellipsoid and aligned with the
253
+ * ellipsoid's axes.
254
+ * @param {Number} [stride=3]
255
+ * @param {Cartesian3} [center=Cartesian3.ZERO]
256
+ * @param {Cartesian3} [result] The instance on which to store the result instead of allocating a new instance.
257
+ * @returns {Cartesian3} The computed horizon culling point, expressed in the ellipsoid-scaled space.
258
+ */
259
+ EllipsoidalOccluder.prototype.computeHorizonCullingPointFromVertices = function (
260
+ directionToPoint,
261
+ vertices,
262
+ stride,
263
+ center,
264
+ result
265
+ ) {
266
+ return computeHorizonCullingPointFromVertices(
267
+ this._ellipsoid,
268
+ directionToPoint,
269
+ vertices,
270
+ stride,
271
+ center,
272
+ result
273
+ );
274
+ };
275
+
276
+ /**
277
+ * Similar to {@link EllipsoidalOccluder#computeHorizonCullingPointFromVertices} except computes the culling
278
+ * point relative to an ellipsoid that has been shrunk by the minimum height when the minimum height is below
279
+ * the ellipsoid. The returned point is expressed in the possibly-shrunk ellipsoid-scaled space and is suitable
280
+ * for use with {@link EllipsoidalOccluder#isScaledSpacePointVisiblePossiblyUnderEllipsoid}.
281
+ *
282
+ * @param {Cartesian3} directionToPoint The direction that the computed point will lie along.
283
+ * A reasonable direction to use is the direction from the center of the ellipsoid to
284
+ * the center of the bounding sphere computed from the positions. The direction need not
285
+ * be normalized.
286
+ * @param {Number[]} vertices The vertices from which to compute the horizon culling point. The positions
287
+ * must be expressed in a reference frame centered at the ellipsoid and aligned with the
288
+ * ellipsoid's axes.
289
+ * @param {Number} [stride=3]
290
+ * @param {Cartesian3} [center=Cartesian3.ZERO]
291
+ * @param {Number} [minimumHeight] The minimum height of all vertices. If this value is undefined, all vertices are assumed to be above the ellipsoid.
292
+ * @param {Cartesian3} [result] The instance on which to store the result instead of allocating a new instance.
293
+ * @returns {Cartesian3} The computed horizon culling point, expressed in the possibly-shrunk ellipsoid-scaled space.
294
+ */
295
+ EllipsoidalOccluder.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid = function (
296
+ directionToPoint,
297
+ vertices,
298
+ stride,
299
+ center,
300
+ minimumHeight,
301
+ result
302
+ ) {
303
+ const possiblyShrunkEllipsoid = getPossiblyShrunkEllipsoid(
304
+ this._ellipsoid,
305
+ minimumHeight,
306
+ scratchEllipsoidShrunk
307
+ );
308
+ return computeHorizonCullingPointFromVertices(
309
+ possiblyShrunkEllipsoid,
310
+ directionToPoint,
311
+ vertices,
312
+ stride,
313
+ center,
314
+ result
315
+ );
316
+ };
317
+
318
+ const subsampleScratch = [];
319
+
320
+ /**
321
+ * Computes a point that can be used for horizon culling of a rectangle. If the point is below
322
+ * the horizon, the ellipsoid-conforming rectangle is guaranteed to be below the horizon as well.
323
+ * The returned point is expressed in the ellipsoid-scaled space and is suitable for use with
324
+ * {@link EllipsoidalOccluder#isScaledSpacePointVisible}.
325
+ *
326
+ * @param {Rectangle} rectangle The rectangle for which to compute the horizon culling point.
327
+ * @param {Ellipsoid} ellipsoid The ellipsoid on which the rectangle is defined. This may be different from
328
+ * the ellipsoid used by this instance for occlusion testing.
329
+ * @param {Cartesian3} [result] The instance on which to store the result instead of allocating a new instance.
330
+ * @returns {Cartesian3} The computed horizon culling point, expressed in the ellipsoid-scaled space.
331
+ */
332
+ EllipsoidalOccluder.prototype.computeHorizonCullingPointFromRectangle = function (
333
+ rectangle,
334
+ ellipsoid,
335
+ result
336
+ ) {
337
+ //>>includeStart('debug', pragmas.debug);
338
+ Check.Check.typeOf.object("rectangle", rectangle);
339
+ //>>includeEnd('debug');
340
+
341
+ const positions = Matrix2.Rectangle.subsample(
342
+ rectangle,
343
+ ellipsoid,
344
+ 0.0,
345
+ subsampleScratch
346
+ );
347
+ const bs = Transforms.BoundingSphere.fromPoints(positions);
348
+
349
+ // If the bounding sphere center is too close to the center of the occluder, it doesn't make
350
+ // sense to try to horizon cull it.
351
+ if (Matrix3.Cartesian3.magnitude(bs.center) < 0.1 * ellipsoid.minimumRadius) {
352
+ return undefined;
353
+ }
354
+
355
+ return this.computeHorizonCullingPoint(bs.center, positions, result);
356
+ };
357
+
358
+ const scratchEllipsoidShrunkRadii = new Matrix3.Cartesian3();
359
+
360
+ function getPossiblyShrunkEllipsoid(ellipsoid, minimumHeight, result) {
361
+ if (
362
+ defaultValue.defined(minimumHeight) &&
363
+ minimumHeight < 0.0 &&
364
+ ellipsoid.minimumRadius > -minimumHeight
365
+ ) {
366
+ const ellipsoidShrunkRadii = Matrix3.Cartesian3.fromElements(
367
+ ellipsoid.radii.x + minimumHeight,
368
+ ellipsoid.radii.y + minimumHeight,
369
+ ellipsoid.radii.z + minimumHeight,
370
+ scratchEllipsoidShrunkRadii
371
+ );
372
+ ellipsoid = Matrix3.Ellipsoid.fromCartesian3(ellipsoidShrunkRadii, result);
373
+ }
374
+ return ellipsoid;
375
+ }
376
+
377
+ function computeHorizonCullingPointFromPositions(
378
+ ellipsoid,
379
+ directionToPoint,
380
+ positions,
381
+ result
382
+ ) {
383
+ //>>includeStart('debug', pragmas.debug);
384
+ Check.Check.typeOf.object("directionToPoint", directionToPoint);
385
+ Check.Check.defined("positions", positions);
386
+ //>>includeEnd('debug');
387
+
388
+ if (!defaultValue.defined(result)) {
389
+ result = new Matrix3.Cartesian3();
390
+ }
391
+
392
+ const scaledSpaceDirectionToPoint = computeScaledSpaceDirectionToPoint(
393
+ ellipsoid,
394
+ directionToPoint
395
+ );
396
+ let resultMagnitude = 0.0;
397
+
398
+ for (let i = 0, len = positions.length; i < len; ++i) {
399
+ const position = positions[i];
400
+ const candidateMagnitude = computeMagnitude(
401
+ ellipsoid,
402
+ position,
403
+ scaledSpaceDirectionToPoint
404
+ );
405
+ if (candidateMagnitude < 0.0) {
406
+ // all points should face the same direction, but this one doesn't, so return undefined
407
+ return undefined;
408
+ }
409
+ resultMagnitude = Math.max(resultMagnitude, candidateMagnitude);
410
+ }
411
+
412
+ return magnitudeToPoint(scaledSpaceDirectionToPoint, resultMagnitude, result);
413
+ }
414
+
415
+ const positionScratch = new Matrix3.Cartesian3();
416
+
417
+ function computeHorizonCullingPointFromVertices(
418
+ ellipsoid,
419
+ directionToPoint,
420
+ vertices,
421
+ stride,
422
+ center,
423
+ result
424
+ ) {
425
+ //>>includeStart('debug', pragmas.debug);
426
+ Check.Check.typeOf.object("directionToPoint", directionToPoint);
427
+ Check.Check.defined("vertices", vertices);
428
+ Check.Check.typeOf.number("stride", stride);
429
+ //>>includeEnd('debug');
430
+
431
+ if (!defaultValue.defined(result)) {
432
+ result = new Matrix3.Cartesian3();
433
+ }
434
+
435
+ stride = defaultValue.defaultValue(stride, 3);
436
+ center = defaultValue.defaultValue(center, Matrix3.Cartesian3.ZERO);
437
+ const scaledSpaceDirectionToPoint = computeScaledSpaceDirectionToPoint(
438
+ ellipsoid,
439
+ directionToPoint
440
+ );
441
+ let resultMagnitude = 0.0;
442
+
443
+ for (let i = 0, len = vertices.length; i < len; i += stride) {
444
+ positionScratch.x = vertices[i] + center.x;
445
+ positionScratch.y = vertices[i + 1] + center.y;
446
+ positionScratch.z = vertices[i + 2] + center.z;
447
+
448
+ const candidateMagnitude = computeMagnitude(
449
+ ellipsoid,
450
+ positionScratch,
451
+ scaledSpaceDirectionToPoint
452
+ );
453
+ if (candidateMagnitude < 0.0) {
454
+ // all points should face the same direction, but this one doesn't, so return undefined
455
+ return undefined;
456
+ }
457
+ resultMagnitude = Math.max(resultMagnitude, candidateMagnitude);
458
+ }
459
+
460
+ return magnitudeToPoint(scaledSpaceDirectionToPoint, resultMagnitude, result);
461
+ }
462
+
463
+ function isScaledSpacePointVisible(
464
+ occludeeScaledSpacePosition,
465
+ cameraPositionInScaledSpace,
466
+ distanceToLimbInScaledSpaceSquared
467
+ ) {
468
+ // See https://cesium.com/blog/2013/04/25/Horizon-culling/
469
+ const cv = cameraPositionInScaledSpace;
470
+ const vhMagnitudeSquared = distanceToLimbInScaledSpaceSquared;
471
+ const vt = Matrix3.Cartesian3.subtract(
472
+ occludeeScaledSpacePosition,
473
+ cv,
474
+ scratchCartesian
475
+ );
476
+ const vtDotVc = -Matrix3.Cartesian3.dot(vt, cv);
477
+ // If vhMagnitudeSquared < 0 then we are below the surface of the ellipsoid and
478
+ // in this case, set the culling plane to be on V.
479
+ const isOccluded =
480
+ vhMagnitudeSquared < 0
481
+ ? vtDotVc > 0
482
+ : vtDotVc > vhMagnitudeSquared &&
483
+ (vtDotVc * vtDotVc) / Matrix3.Cartesian3.magnitudeSquared(vt) >
484
+ vhMagnitudeSquared;
485
+ return !isOccluded;
486
+ }
487
+
488
+ const scaledSpaceScratch = new Matrix3.Cartesian3();
489
+ const directionScratch = new Matrix3.Cartesian3();
490
+
491
+ function computeMagnitude(ellipsoid, position, scaledSpaceDirectionToPoint) {
492
+ const scaledSpacePosition = ellipsoid.transformPositionToScaledSpace(
493
+ position,
494
+ scaledSpaceScratch
495
+ );
496
+ let magnitudeSquared = Matrix3.Cartesian3.magnitudeSquared(scaledSpacePosition);
497
+ let magnitude = Math.sqrt(magnitudeSquared);
498
+ const direction = Matrix3.Cartesian3.divideByScalar(
499
+ scaledSpacePosition,
500
+ magnitude,
501
+ directionScratch
502
+ );
503
+
504
+ // For the purpose of this computation, points below the ellipsoid are consider to be on it instead.
505
+ magnitudeSquared = Math.max(1.0, magnitudeSquared);
506
+ magnitude = Math.max(1.0, magnitude);
507
+
508
+ const cosAlpha = Matrix3.Cartesian3.dot(direction, scaledSpaceDirectionToPoint);
509
+ const sinAlpha = Matrix3.Cartesian3.magnitude(
510
+ Matrix3.Cartesian3.cross(direction, scaledSpaceDirectionToPoint, direction)
511
+ );
512
+ const cosBeta = 1.0 / magnitude;
513
+ const sinBeta = Math.sqrt(magnitudeSquared - 1.0) * cosBeta;
514
+
515
+ return 1.0 / (cosAlpha * cosBeta - sinAlpha * sinBeta);
516
+ }
517
+
518
+ function magnitudeToPoint(
519
+ scaledSpaceDirectionToPoint,
520
+ resultMagnitude,
521
+ result
522
+ ) {
523
+ // The horizon culling point is undefined if there were no positions from which to compute it,
524
+ // the directionToPoint is pointing opposite all of the positions, or if we computed NaN or infinity.
525
+ if (
526
+ resultMagnitude <= 0.0 ||
527
+ resultMagnitude === 1.0 / 0.0 ||
528
+ resultMagnitude !== resultMagnitude
529
+ ) {
530
+ return undefined;
531
+ }
532
+
533
+ return Matrix3.Cartesian3.multiplyByScalar(
534
+ scaledSpaceDirectionToPoint,
535
+ resultMagnitude,
536
+ result
537
+ );
538
+ }
539
+
540
+ const directionToPointScratch = new Matrix3.Cartesian3();
541
+
542
+ function computeScaledSpaceDirectionToPoint(ellipsoid, directionToPoint) {
543
+ if (Matrix3.Cartesian3.equals(directionToPoint, Matrix3.Cartesian3.ZERO)) {
544
+ return directionToPoint;
545
+ }
546
+
547
+ ellipsoid.transformPositionToScaledSpace(
548
+ directionToPoint,
549
+ directionToPointScratch
550
+ );
551
+ return Matrix3.Cartesian3.normalize(directionToPointScratch, directionToPointScratch);
552
+ }
553
+
554
+ /**
555
+ * @private
556
+ */
557
+ const TerrainExaggeration = {};
558
+
559
+ /**
560
+ * Scales a height relative to an offset.
561
+ *
562
+ * @param {Number} height The height.
563
+ * @param {Number} scale A scalar used to exaggerate the terrain. If the value is 1.0 there will be no effect.
564
+ * @param {Number} relativeHeight The height relative to which terrain is exaggerated. If the value is 0.0 terrain will be exaggerated relative to the ellipsoid surface.
565
+ */
566
+ TerrainExaggeration.getHeight = function (height, scale, relativeHeight) {
567
+ return (height - relativeHeight) * scale + relativeHeight;
568
+ };
569
+
570
+ const scratchCartographic = new Matrix3.Cartesian3();
571
+
572
+ /**
573
+ * Scales a position by exaggeration.
574
+ */
575
+ TerrainExaggeration.getPosition = function (
576
+ position,
577
+ ellipsoid,
578
+ terrainExaggeration,
579
+ terrainExaggerationRelativeHeight,
580
+ result
581
+ ) {
582
+ const cartographic = ellipsoid.cartesianToCartographic(
583
+ position,
584
+ scratchCartographic
585
+ );
586
+ const newHeight = TerrainExaggeration.getHeight(
587
+ cartographic.height,
588
+ terrainExaggeration,
589
+ terrainExaggerationRelativeHeight
590
+ );
591
+ return Matrix3.Cartesian3.fromRadians(
592
+ cartographic.longitude,
593
+ cartographic.latitude,
594
+ newHeight,
595
+ ellipsoid,
596
+ result
597
+ );
598
+ };
599
+
600
+ var TerrainExaggeration$1 = TerrainExaggeration;
601
+
602
+ /**
603
+ * This enumerated type is used to determine how the vertices of the terrain mesh are compressed.
604
+ *
605
+ * @enum {Number}
606
+ *
607
+ * @private
608
+ */
609
+ const TerrainQuantization = {
610
+ /**
611
+ * The vertices are not compressed.
612
+ *
613
+ * @type {Number}
614
+ * @constant
615
+ */
616
+ NONE: 0,
617
+
618
+ /**
619
+ * The vertices are compressed to 12 bits.
620
+ *
621
+ * @type {Number}
622
+ * @constant
623
+ */
624
+ BITS12: 1,
625
+ };
626
+ var TerrainQuantization$1 = Object.freeze(TerrainQuantization);
627
+
628
+ const cartesian3Scratch = new Matrix3.Cartesian3();
629
+ const cartesian3DimScratch = new Matrix3.Cartesian3();
630
+ const cartesian2Scratch = new Matrix2.Cartesian2();
631
+ const matrix4Scratch = new Matrix2.Matrix4();
632
+ const matrix4Scratch2 = new Matrix2.Matrix4();
633
+
634
+ const SHIFT_LEFT_12 = Math.pow(2.0, 12.0);
635
+
636
+ /**
637
+ * Data used to quantize and pack the terrain mesh. The position can be unpacked for picking and all attributes
638
+ * are unpacked in the vertex shader.
639
+ *
640
+ * @alias TerrainEncoding
641
+ * @constructor
642
+ *
643
+ * @param {Cartesian3} center The center point of the vertices.
644
+ * @param {AxisAlignedBoundingBox} axisAlignedBoundingBox The bounds of the tile in the east-north-up coordinates at the tiles center.
645
+ * @param {Number} minimumHeight The minimum height.
646
+ * @param {Number} maximumHeight The maximum height.
647
+ * @param {Matrix4} fromENU The east-north-up to fixed frame matrix at the center of the terrain mesh.
648
+ * @param {Boolean} hasVertexNormals If the mesh has vertex normals.
649
+ * @param {Boolean} [hasWebMercatorT=false] true if the terrain data includes a Web Mercator texture coordinate; otherwise, false.
650
+ * @param {Boolean} [hasGeodeticSurfaceNormals=false] true if the terrain data includes geodetic surface normals; otherwise, false.
651
+ * @param {Number} [exaggeration=1.0] A scalar used to exaggerate terrain.
652
+ * @param {Number} [exaggerationRelativeHeight=0.0] The relative height from which terrain is exaggerated.
653
+ *
654
+ * @private
655
+ */
656
+ function TerrainEncoding(
657
+ center,
658
+ axisAlignedBoundingBox,
659
+ minimumHeight,
660
+ maximumHeight,
661
+ fromENU,
662
+ hasVertexNormals,
663
+ hasWebMercatorT,
664
+ hasGeodeticSurfaceNormals,
665
+ exaggeration,
666
+ exaggerationRelativeHeight
667
+ ) {
668
+ let quantization = TerrainQuantization$1.NONE;
669
+ let toENU;
670
+ let matrix;
671
+
672
+ if (
673
+ defaultValue.defined(axisAlignedBoundingBox) &&
674
+ defaultValue.defined(minimumHeight) &&
675
+ defaultValue.defined(maximumHeight) &&
676
+ defaultValue.defined(fromENU)
677
+ ) {
678
+ const minimum = axisAlignedBoundingBox.minimum;
679
+ const maximum = axisAlignedBoundingBox.maximum;
680
+
681
+ const dimensions = Matrix3.Cartesian3.subtract(
682
+ maximum,
683
+ minimum,
684
+ cartesian3DimScratch
685
+ );
686
+ const hDim = maximumHeight - minimumHeight;
687
+ const maxDim = Math.max(Matrix3.Cartesian3.maximumComponent(dimensions), hDim);
688
+
689
+ if (maxDim < SHIFT_LEFT_12 - 1.0) {
690
+ quantization = TerrainQuantization$1.BITS12;
691
+ } else {
692
+ quantization = TerrainQuantization$1.NONE;
693
+ }
694
+
695
+ toENU = Matrix2.Matrix4.inverseTransformation(fromENU, new Matrix2.Matrix4());
696
+
697
+ const translation = Matrix3.Cartesian3.negate(minimum, cartesian3Scratch);
698
+ Matrix2.Matrix4.multiply(
699
+ Matrix2.Matrix4.fromTranslation(translation, matrix4Scratch),
700
+ toENU,
701
+ toENU
702
+ );
703
+
704
+ const scale = cartesian3Scratch;
705
+ scale.x = 1.0 / dimensions.x;
706
+ scale.y = 1.0 / dimensions.y;
707
+ scale.z = 1.0 / dimensions.z;
708
+ Matrix2.Matrix4.multiply(Matrix2.Matrix4.fromScale(scale, matrix4Scratch), toENU, toENU);
709
+
710
+ matrix = Matrix2.Matrix4.clone(fromENU);
711
+ Matrix2.Matrix4.setTranslation(matrix, Matrix3.Cartesian3.ZERO, matrix);
712
+
713
+ fromENU = Matrix2.Matrix4.clone(fromENU, new Matrix2.Matrix4());
714
+
715
+ const translationMatrix = Matrix2.Matrix4.fromTranslation(minimum, matrix4Scratch);
716
+ const scaleMatrix = Matrix2.Matrix4.fromScale(dimensions, matrix4Scratch2);
717
+ const st = Matrix2.Matrix4.multiply(translationMatrix, scaleMatrix, matrix4Scratch);
718
+
719
+ Matrix2.Matrix4.multiply(fromENU, st, fromENU);
720
+ Matrix2.Matrix4.multiply(matrix, st, matrix);
721
+ }
722
+
723
+ /**
724
+ * How the vertices of the mesh were compressed.
725
+ * @type {TerrainQuantization}
726
+ */
727
+ this.quantization = quantization;
728
+
729
+ /**
730
+ * The minimum height of the tile including the skirts.
731
+ * @type {Number}
732
+ */
733
+ this.minimumHeight = minimumHeight;
734
+
735
+ /**
736
+ * The maximum height of the tile.
737
+ * @type {Number}
738
+ */
739
+ this.maximumHeight = maximumHeight;
740
+
741
+ /**
742
+ * The center of the tile.
743
+ * @type {Cartesian3}
744
+ */
745
+ this.center = Matrix3.Cartesian3.clone(center);
746
+
747
+ /**
748
+ * A matrix that takes a vertex from the tile, transforms it to east-north-up at the center and scales
749
+ * it so each component is in the [0, 1] range.
750
+ * @type {Matrix4}
751
+ */
752
+ this.toScaledENU = toENU;
753
+
754
+ /**
755
+ * A matrix that restores a vertex transformed with toScaledENU back to the earth fixed reference frame
756
+ * @type {Matrix4}
757
+ */
758
+ this.fromScaledENU = fromENU;
759
+
760
+ /**
761
+ * The matrix used to decompress the terrain vertices in the shader for RTE rendering.
762
+ * @type {Matrix4}
763
+ */
764
+ this.matrix = matrix;
765
+
766
+ /**
767
+ * The terrain mesh contains normals.
768
+ * @type {Boolean}
769
+ */
770
+ this.hasVertexNormals = hasVertexNormals;
771
+
772
+ /**
773
+ * The terrain mesh contains a vertical texture coordinate following the Web Mercator projection.
774
+ * @type {Boolean}
775
+ */
776
+ this.hasWebMercatorT = defaultValue.defaultValue(hasWebMercatorT, false);
777
+
778
+ /**
779
+ * The terrain mesh contains geodetic surface normals, used for terrain exaggeration.
780
+ * @type {Boolean}
781
+ */
782
+ this.hasGeodeticSurfaceNormals = defaultValue.defaultValue(
783
+ hasGeodeticSurfaceNormals,
784
+ false
785
+ );
786
+
787
+ /**
788
+ * A scalar used to exaggerate terrain.
789
+ * @type {Number}
790
+ */
791
+ this.exaggeration = defaultValue.defaultValue(exaggeration, 1.0);
792
+
793
+ /**
794
+ * The relative height from which terrain is exaggerated.
795
+ */
796
+ this.exaggerationRelativeHeight = defaultValue.defaultValue(
797
+ exaggerationRelativeHeight,
798
+ 0.0
799
+ );
800
+
801
+ /**
802
+ * The number of components in each vertex. This value can differ with different quantizations.
803
+ * @type {Number}
804
+ */
805
+ this.stride = 0;
806
+
807
+ this._offsetGeodeticSurfaceNormal = 0;
808
+ this._offsetVertexNormal = 0;
809
+
810
+ // Calculate the stride and offsets declared above
811
+ this._calculateStrideAndOffsets();
812
+ }
813
+
814
+ TerrainEncoding.prototype.encode = function (
815
+ vertexBuffer,
816
+ bufferIndex,
817
+ position,
818
+ uv,
819
+ height,
820
+ normalToPack,
821
+ webMercatorT,
822
+ geodeticSurfaceNormal
823
+ ) {
824
+ const u = uv.x;
825
+ const v = uv.y;
826
+
827
+ if (this.quantization === TerrainQuantization$1.BITS12) {
828
+ position = Matrix2.Matrix4.multiplyByPoint(
829
+ this.toScaledENU,
830
+ position,
831
+ cartesian3Scratch
832
+ );
833
+
834
+ position.x = Math$1.CesiumMath.clamp(position.x, 0.0, 1.0);
835
+ position.y = Math$1.CesiumMath.clamp(position.y, 0.0, 1.0);
836
+ position.z = Math$1.CesiumMath.clamp(position.z, 0.0, 1.0);
837
+
838
+ const hDim = this.maximumHeight - this.minimumHeight;
839
+ const h = Math$1.CesiumMath.clamp((height - this.minimumHeight) / hDim, 0.0, 1.0);
840
+
841
+ Matrix2.Cartesian2.fromElements(position.x, position.y, cartesian2Scratch);
842
+ const compressed0 = AttributeCompression.AttributeCompression.compressTextureCoordinates(
843
+ cartesian2Scratch
844
+ );
845
+
846
+ Matrix2.Cartesian2.fromElements(position.z, h, cartesian2Scratch);
847
+ const compressed1 = AttributeCompression.AttributeCompression.compressTextureCoordinates(
848
+ cartesian2Scratch
849
+ );
850
+
851
+ Matrix2.Cartesian2.fromElements(u, v, cartesian2Scratch);
852
+ const compressed2 = AttributeCompression.AttributeCompression.compressTextureCoordinates(
853
+ cartesian2Scratch
854
+ );
855
+
856
+ vertexBuffer[bufferIndex++] = compressed0;
857
+ vertexBuffer[bufferIndex++] = compressed1;
858
+ vertexBuffer[bufferIndex++] = compressed2;
859
+
860
+ if (this.hasWebMercatorT) {
861
+ Matrix2.Cartesian2.fromElements(webMercatorT, 0.0, cartesian2Scratch);
862
+ const compressed3 = AttributeCompression.AttributeCompression.compressTextureCoordinates(
863
+ cartesian2Scratch
864
+ );
865
+ vertexBuffer[bufferIndex++] = compressed3;
866
+ }
867
+ } else {
868
+ Matrix3.Cartesian3.subtract(position, this.center, cartesian3Scratch);
869
+
870
+ vertexBuffer[bufferIndex++] = cartesian3Scratch.x;
871
+ vertexBuffer[bufferIndex++] = cartesian3Scratch.y;
872
+ vertexBuffer[bufferIndex++] = cartesian3Scratch.z;
873
+ vertexBuffer[bufferIndex++] = height;
874
+ vertexBuffer[bufferIndex++] = u;
875
+ vertexBuffer[bufferIndex++] = v;
876
+
877
+ if (this.hasWebMercatorT) {
878
+ vertexBuffer[bufferIndex++] = webMercatorT;
879
+ }
880
+ }
881
+
882
+ if (this.hasVertexNormals) {
883
+ vertexBuffer[bufferIndex++] = AttributeCompression.AttributeCompression.octPackFloat(
884
+ normalToPack
885
+ );
886
+ }
887
+
888
+ if (this.hasGeodeticSurfaceNormals) {
889
+ vertexBuffer[bufferIndex++] = geodeticSurfaceNormal.x;
890
+ vertexBuffer[bufferIndex++] = geodeticSurfaceNormal.y;
891
+ vertexBuffer[bufferIndex++] = geodeticSurfaceNormal.z;
892
+ }
893
+
894
+ return bufferIndex;
895
+ };
896
+
897
+ const scratchPosition = new Matrix3.Cartesian3();
898
+ const scratchGeodeticSurfaceNormal = new Matrix3.Cartesian3();
899
+
900
+ TerrainEncoding.prototype.addGeodeticSurfaceNormals = function (
901
+ oldBuffer,
902
+ newBuffer,
903
+ ellipsoid
904
+ ) {
905
+ if (this.hasGeodeticSurfaceNormals) {
906
+ return;
907
+ }
908
+
909
+ const oldStride = this.stride;
910
+ const vertexCount = oldBuffer.length / oldStride;
911
+ this.hasGeodeticSurfaceNormals = true;
912
+ this._calculateStrideAndOffsets();
913
+ const newStride = this.stride;
914
+
915
+ for (let index = 0; index < vertexCount; index++) {
916
+ for (let offset = 0; offset < oldStride; offset++) {
917
+ const oldIndex = index * oldStride + offset;
918
+ const newIndex = index * newStride + offset;
919
+ newBuffer[newIndex] = oldBuffer[oldIndex];
920
+ }
921
+ const position = this.decodePosition(newBuffer, index, scratchPosition);
922
+ const geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
923
+ position,
924
+ scratchGeodeticSurfaceNormal
925
+ );
926
+
927
+ const bufferIndex = index * newStride + this._offsetGeodeticSurfaceNormal;
928
+ newBuffer[bufferIndex] = geodeticSurfaceNormal.x;
929
+ newBuffer[bufferIndex + 1] = geodeticSurfaceNormal.y;
930
+ newBuffer[bufferIndex + 2] = geodeticSurfaceNormal.z;
931
+ }
932
+ };
933
+
934
+ TerrainEncoding.prototype.removeGeodeticSurfaceNormals = function (
935
+ oldBuffer,
936
+ newBuffer
937
+ ) {
938
+ if (!this.hasGeodeticSurfaceNormals) {
939
+ return;
940
+ }
941
+
942
+ const oldStride = this.stride;
943
+ const vertexCount = oldBuffer.length / oldStride;
944
+ this.hasGeodeticSurfaceNormals = false;
945
+ this._calculateStrideAndOffsets();
946
+ const newStride = this.stride;
947
+
948
+ for (let index = 0; index < vertexCount; index++) {
949
+ for (let offset = 0; offset < newStride; offset++) {
950
+ const oldIndex = index * oldStride + offset;
951
+ const newIndex = index * newStride + offset;
952
+ newBuffer[newIndex] = oldBuffer[oldIndex];
953
+ }
954
+ }
955
+ };
956
+
957
+ TerrainEncoding.prototype.decodePosition = function (buffer, index, result) {
958
+ if (!defaultValue.defined(result)) {
959
+ result = new Matrix3.Cartesian3();
960
+ }
961
+
962
+ index *= this.stride;
963
+
964
+ if (this.quantization === TerrainQuantization$1.BITS12) {
965
+ const xy = AttributeCompression.AttributeCompression.decompressTextureCoordinates(
966
+ buffer[index],
967
+ cartesian2Scratch
968
+ );
969
+ result.x = xy.x;
970
+ result.y = xy.y;
971
+
972
+ const zh = AttributeCompression.AttributeCompression.decompressTextureCoordinates(
973
+ buffer[index + 1],
974
+ cartesian2Scratch
975
+ );
976
+ result.z = zh.x;
977
+
978
+ return Matrix2.Matrix4.multiplyByPoint(this.fromScaledENU, result, result);
979
+ }
980
+
981
+ result.x = buffer[index];
982
+ result.y = buffer[index + 1];
983
+ result.z = buffer[index + 2];
984
+ return Matrix3.Cartesian3.add(result, this.center, result);
985
+ };
986
+
987
+ TerrainEncoding.prototype.getExaggeratedPosition = function (
988
+ buffer,
989
+ index,
990
+ result
991
+ ) {
992
+ result = this.decodePosition(buffer, index, result);
993
+
994
+ const exaggeration = this.exaggeration;
995
+ const exaggerationRelativeHeight = this.exaggerationRelativeHeight;
996
+ const hasExaggeration = exaggeration !== 1.0;
997
+ if (hasExaggeration && this.hasGeodeticSurfaceNormals) {
998
+ const geodeticSurfaceNormal = this.decodeGeodeticSurfaceNormal(
999
+ buffer,
1000
+ index,
1001
+ scratchGeodeticSurfaceNormal
1002
+ );
1003
+ const rawHeight = this.decodeHeight(buffer, index);
1004
+ const heightDifference =
1005
+ TerrainExaggeration$1.getHeight(
1006
+ rawHeight,
1007
+ exaggeration,
1008
+ exaggerationRelativeHeight
1009
+ ) - rawHeight;
1010
+
1011
+ // some math is unrolled for better performance
1012
+ result.x += geodeticSurfaceNormal.x * heightDifference;
1013
+ result.y += geodeticSurfaceNormal.y * heightDifference;
1014
+ result.z += geodeticSurfaceNormal.z * heightDifference;
1015
+ }
1016
+
1017
+ return result;
1018
+ };
1019
+
1020
+ TerrainEncoding.prototype.decodeTextureCoordinates = function (
1021
+ buffer,
1022
+ index,
1023
+ result
1024
+ ) {
1025
+ if (!defaultValue.defined(result)) {
1026
+ result = new Matrix2.Cartesian2();
1027
+ }
1028
+
1029
+ index *= this.stride;
1030
+
1031
+ if (this.quantization === TerrainQuantization$1.BITS12) {
1032
+ return AttributeCompression.AttributeCompression.decompressTextureCoordinates(
1033
+ buffer[index + 2],
1034
+ result
1035
+ );
1036
+ }
1037
+
1038
+ return Matrix2.Cartesian2.fromElements(buffer[index + 4], buffer[index + 5], result);
1039
+ };
1040
+
1041
+ TerrainEncoding.prototype.decodeHeight = function (buffer, index) {
1042
+ index *= this.stride;
1043
+
1044
+ if (this.quantization === TerrainQuantization$1.BITS12) {
1045
+ const zh = AttributeCompression.AttributeCompression.decompressTextureCoordinates(
1046
+ buffer[index + 1],
1047
+ cartesian2Scratch
1048
+ );
1049
+ return (
1050
+ zh.y * (this.maximumHeight - this.minimumHeight) + this.minimumHeight
1051
+ );
1052
+ }
1053
+
1054
+ return buffer[index + 3];
1055
+ };
1056
+
1057
+ TerrainEncoding.prototype.decodeWebMercatorT = function (buffer, index) {
1058
+ index *= this.stride;
1059
+
1060
+ if (this.quantization === TerrainQuantization$1.BITS12) {
1061
+ return AttributeCompression.AttributeCompression.decompressTextureCoordinates(
1062
+ buffer[index + 3],
1063
+ cartesian2Scratch
1064
+ ).x;
1065
+ }
1066
+
1067
+ return buffer[index + 6];
1068
+ };
1069
+
1070
+ TerrainEncoding.prototype.getOctEncodedNormal = function (
1071
+ buffer,
1072
+ index,
1073
+ result
1074
+ ) {
1075
+ index = index * this.stride + this._offsetVertexNormal;
1076
+
1077
+ const temp = buffer[index] / 256.0;
1078
+ const x = Math.floor(temp);
1079
+ const y = (temp - x) * 256.0;
1080
+
1081
+ return Matrix2.Cartesian2.fromElements(x, y, result);
1082
+ };
1083
+
1084
+ TerrainEncoding.prototype.decodeGeodeticSurfaceNormal = function (
1085
+ buffer,
1086
+ index,
1087
+ result
1088
+ ) {
1089
+ index = index * this.stride + this._offsetGeodeticSurfaceNormal;
1090
+
1091
+ result.x = buffer[index];
1092
+ result.y = buffer[index + 1];
1093
+ result.z = buffer[index + 2];
1094
+ return result;
1095
+ };
1096
+
1097
+ TerrainEncoding.prototype._calculateStrideAndOffsets = function () {
1098
+ let vertexStride = 0;
1099
+
1100
+ switch (this.quantization) {
1101
+ case TerrainQuantization$1.BITS12:
1102
+ vertexStride += 3;
1103
+ break;
1104
+ default:
1105
+ vertexStride += 6;
1106
+ }
1107
+ if (this.hasWebMercatorT) {
1108
+ vertexStride += 1;
1109
+ }
1110
+ if (this.hasVertexNormals) {
1111
+ this._offsetVertexNormal = vertexStride;
1112
+ vertexStride += 1;
1113
+ }
1114
+ if (this.hasGeodeticSurfaceNormals) {
1115
+ this._offsetGeodeticSurfaceNormal = vertexStride;
1116
+ vertexStride += 3;
1117
+ }
1118
+
1119
+ this.stride = vertexStride;
1120
+ };
1121
+
1122
+ const attributesIndicesNone = {
1123
+ position3DAndHeight: 0,
1124
+ textureCoordAndEncodedNormals: 1,
1125
+ geodeticSurfaceNormal: 2,
1126
+ };
1127
+ const attributesIndicesBits12 = {
1128
+ compressed0: 0,
1129
+ compressed1: 1,
1130
+ geodeticSurfaceNormal: 2,
1131
+ };
1132
+
1133
+ TerrainEncoding.prototype.getAttributes = function (buffer) {
1134
+ const datatype = ComponentDatatype.ComponentDatatype.FLOAT;
1135
+ const sizeInBytes = ComponentDatatype.ComponentDatatype.getSizeInBytes(datatype);
1136
+ const strideInBytes = this.stride * sizeInBytes;
1137
+ let offsetInBytes = 0;
1138
+
1139
+ const attributes = [];
1140
+ function addAttribute(index, componentsPerAttribute) {
1141
+ attributes.push({
1142
+ index: index,
1143
+ vertexBuffer: buffer,
1144
+ componentDatatype: datatype,
1145
+ componentsPerAttribute: componentsPerAttribute,
1146
+ offsetInBytes: offsetInBytes,
1147
+ strideInBytes: strideInBytes,
1148
+ });
1149
+ offsetInBytes += componentsPerAttribute * sizeInBytes;
1150
+ }
1151
+
1152
+ if (this.quantization === TerrainQuantization$1.NONE) {
1153
+ addAttribute(attributesIndicesNone.position3DAndHeight, 4);
1154
+
1155
+ let componentsTexCoordAndNormals = 2;
1156
+ componentsTexCoordAndNormals += this.hasWebMercatorT ? 1 : 0;
1157
+ componentsTexCoordAndNormals += this.hasVertexNormals ? 1 : 0;
1158
+ addAttribute(
1159
+ attributesIndicesNone.textureCoordAndEncodedNormals,
1160
+ componentsTexCoordAndNormals
1161
+ );
1162
+
1163
+ if (this.hasGeodeticSurfaceNormals) {
1164
+ addAttribute(attributesIndicesNone.geodeticSurfaceNormal, 3);
1165
+ }
1166
+ } else {
1167
+ // When there is no webMercatorT or vertex normals, the attribute only needs 3 components: x/y, z/h, u/v.
1168
+ // WebMercatorT and vertex normals each take up one component, so if only one of them is present the first
1169
+ // attribute gets a 4th component. If both are present, we need an additional attribute that has 1 component.
1170
+ const usingAttribute0Component4 =
1171
+ this.hasWebMercatorT || this.hasVertexNormals;
1172
+ const usingAttribute1Component1 =
1173
+ this.hasWebMercatorT && this.hasVertexNormals;
1174
+ addAttribute(
1175
+ attributesIndicesBits12.compressed0,
1176
+ usingAttribute0Component4 ? 4 : 3
1177
+ );
1178
+
1179
+ if (usingAttribute1Component1) {
1180
+ addAttribute(attributesIndicesBits12.compressed1, 1);
1181
+ }
1182
+
1183
+ if (this.hasGeodeticSurfaceNormals) {
1184
+ addAttribute(attributesIndicesBits12.geodeticSurfaceNormal, 3);
1185
+ }
1186
+ }
1187
+
1188
+ return attributes;
1189
+ };
1190
+
1191
+ TerrainEncoding.prototype.getAttributeLocations = function () {
1192
+ if (this.quantization === TerrainQuantization$1.NONE) {
1193
+ return attributesIndicesNone;
1194
+ }
1195
+ return attributesIndicesBits12;
1196
+ };
1197
+
1198
+ TerrainEncoding.clone = function (encoding, result) {
1199
+ if (!defaultValue.defined(encoding)) {
1200
+ return undefined;
1201
+ }
1202
+ if (!defaultValue.defined(result)) {
1203
+ result = new TerrainEncoding();
1204
+ }
1205
+
1206
+ result.quantization = encoding.quantization;
1207
+ result.minimumHeight = encoding.minimumHeight;
1208
+ result.maximumHeight = encoding.maximumHeight;
1209
+ result.center = Matrix3.Cartesian3.clone(encoding.center);
1210
+ result.toScaledENU = Matrix2.Matrix4.clone(encoding.toScaledENU);
1211
+ result.fromScaledENU = Matrix2.Matrix4.clone(encoding.fromScaledENU);
1212
+ result.matrix = Matrix2.Matrix4.clone(encoding.matrix);
1213
+ result.hasVertexNormals = encoding.hasVertexNormals;
1214
+ result.hasWebMercatorT = encoding.hasWebMercatorT;
1215
+ result.hasGeodeticSurfaceNormals = encoding.hasGeodeticSurfaceNormals;
1216
+ result.exaggeration = encoding.exaggeration;
1217
+ result.exaggerationRelativeHeight = encoding.exaggerationRelativeHeight;
1218
+
1219
+ result._calculateStrideAndOffsets();
1220
+
1221
+ return result;
1222
+ };
1223
+
1224
+ exports.EllipsoidalOccluder = EllipsoidalOccluder;
1225
+ exports.TerrainEncoding = TerrainEncoding;
1226
+
1227
+ }));