@vcmap/ui 6.0.0-rc.1 → 6.0.0-rc.10

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 (485) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +63 -20
  3. package/build/buildTypes.js +9 -5
  4. package/build/bundle.js +1 -1
  5. package/build/info/conf.json +1 -1
  6. package/build/info/publish.js +25 -31
  7. package/build/lintTypes.js +5 -0
  8. package/config/aerowest.config.json +12 -2
  9. package/config/base.config.json +22 -17
  10. package/config/dev.config.json +164 -4
  11. package/config/projects.config.json +3 -1
  12. package/config/solar.config.json +65 -0
  13. package/config/splashscreen.config.json +45 -0
  14. package/config/theming.config.json +68 -0
  15. package/config/www.config.json +39 -23
  16. package/dist/.htaccess +7 -0
  17. package/dist/assets/@mdi/font/README.md +25 -0
  18. package/dist/assets/@mdi/font/css/materialdesignicons.min-680621ca.css +3 -0
  19. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  20. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  21. package/dist/assets/cesium/Assets/approximateTerrainHeights.json +1 -1
  22. package/dist/assets/cesium/ThirdParty/Workers/z-worker-pako.js +1 -1
  23. package/dist/assets/cesium/Workers/{chunk-JB2LWGH4.js → chunk-2LOWCAMW.js} +14 -14
  24. package/dist/assets/cesium/Workers/{chunk-Z24VKNDO.js → chunk-2PTKXHJB.js} +12 -12
  25. package/dist/assets/cesium/Workers/{chunk-AHKEZ2OE.js → chunk-3HQMMUPU.js} +1 -1
  26. package/dist/assets/cesium/Workers/{chunk-V3NGATMV.js → chunk-3IFRSGEY.js} +11 -13
  27. package/dist/assets/cesium/Workers/{chunk-66QLLS45.js → chunk-44QAAS4P.js} +11 -9
  28. package/dist/assets/cesium/Workers/{chunk-TFC6TZ3S.js → chunk-56EDBCGT.js} +33 -22
  29. package/dist/assets/cesium/Workers/{chunk-3W63OHNJ.js → chunk-57H6I3SV.js} +5 -5
  30. package/dist/assets/cesium/Workers/{chunk-PFQBCKBM.js → chunk-6SQMLVGV.js} +5206 -3483
  31. package/dist/assets/cesium/Workers/{chunk-OZJDGN5F.js → chunk-7YIOHQWH.js} +16 -16
  32. package/dist/assets/cesium/Workers/{chunk-XTY7B2N6.js → chunk-7ZZ5LMZY.js} +17 -16
  33. package/dist/assets/cesium/Workers/{chunk-HARLBUOL.js → chunk-BVKITG4N.js} +11 -8
  34. package/dist/assets/cesium/Workers/{chunk-AFFLIKOH.js → chunk-C3EQ27WF.js} +7 -7
  35. package/dist/assets/cesium/Workers/{chunk-RW6LU2CJ.js → chunk-C4WPMOKT.js} +6 -5
  36. package/dist/assets/cesium/Workers/{chunk-OYFCF4PL.js → chunk-EDLRS3AW.js} +6 -6
  37. package/dist/assets/cesium/Workers/{chunk-C3SXRKRW.js → chunk-EJVGYGLF.js} +7 -7
  38. package/dist/assets/cesium/Workers/{chunk-PCJWUS4M.js → chunk-FFLMY4TE.js} +830 -14
  39. package/dist/assets/cesium/Workers/{chunk-MPAZH4BF.js → chunk-GBT7MJ6X.js} +1 -1
  40. package/dist/assets/cesium/Workers/{chunk-ZA25DG4Y.js → chunk-HJMNR3GC.js} +11 -11
  41. package/dist/assets/cesium/Workers/{chunk-JS3AW5BK.js → chunk-HP5XLODI.js} +6 -6
  42. package/dist/assets/cesium/Workers/{chunk-34YUDLRP.js → chunk-IBRIWOCM.js} +13 -13
  43. package/dist/assets/cesium/Workers/{chunk-XY7MGBKC.js → chunk-IZGUQO6Q.js} +14 -16
  44. package/dist/assets/cesium/Workers/{chunk-KTJSNCK4.js → chunk-IZJ42N4W.js} +230 -20
  45. package/dist/assets/cesium/Workers/{chunk-QMEMZIJI.js → chunk-JBSKHTNX.js} +4 -4
  46. package/dist/assets/cesium/Workers/{chunk-QIKODV5G.js → chunk-JISPSEF3.js} +4 -4
  47. package/dist/assets/cesium/Workers/{chunk-K36FEYS7.js → chunk-JSQJDZI4.js} +16 -12
  48. package/dist/assets/cesium/Workers/{chunk-X4SU25DT.js → chunk-JXVLNVXC.js} +10 -12
  49. package/dist/assets/cesium/Workers/chunk-KHZNBFOH.js +963 -0
  50. package/dist/assets/cesium/Workers/{chunk-KD4Y7CZL.js → chunk-L5GODJAR.js} +15 -17
  51. package/dist/assets/cesium/Workers/{chunk-O5AMBQ36.js → chunk-LJ2JQHJT.js} +13 -8
  52. package/dist/assets/cesium/Workers/{chunk-ABADGKYE.js → chunk-LLAF3CPH.js} +2 -2
  53. package/dist/assets/cesium/Workers/{chunk-CHHNOC2C.js → chunk-M24KHENR.js} +95 -155
  54. package/dist/assets/cesium/Workers/{chunk-2R5O53JW.js → chunk-NDDI2LWR.js} +6 -6
  55. package/dist/assets/cesium/Workers/{chunk-QT3MPEMI.js → chunk-NGZJIN5Z.js} +4 -4
  56. package/dist/assets/cesium/Workers/{chunk-ZFOBYDGF.js → chunk-O72GZTSE.js} +2 -2
  57. package/dist/assets/cesium/Workers/{chunk-IPA4EACJ.js → chunk-OPP2SKMA.js} +12 -12
  58. package/dist/assets/cesium/Workers/{chunk-4MFFIWUA.js → chunk-P6TRGU3S.js} +2 -2
  59. package/dist/assets/cesium/Workers/{chunk-GLZBE3ML.js → chunk-QN6TBED4.js} +13 -13
  60. package/dist/assets/cesium/Workers/{chunk-MYZB7C4T.js → chunk-QQOZO7KO.js} +10 -10
  61. package/dist/assets/cesium/Workers/{chunk-HQF437NJ.js → chunk-RJM36CNY.js} +6 -6
  62. package/dist/assets/cesium/Workers/{chunk-CTELOFLA.js → chunk-RTJKHZWU.js} +6 -6
  63. package/dist/assets/cesium/Workers/{chunk-J3JY6I2C.js → chunk-TI3TRKIC.js} +425 -489
  64. package/dist/assets/cesium/Workers/{chunk-OAVNIRB4.js → chunk-TK5IIG2F.js} +5 -7
  65. package/dist/assets/cesium/Workers/{chunk-WXTV4ATB.js → chunk-U5HSOKPQ.js} +1 -1
  66. package/dist/assets/cesium/Workers/{chunk-N3JIFFX2.js → chunk-WGDFYAGC.js} +5 -6
  67. package/dist/assets/cesium/Workers/{chunk-EW2GWJYB.js → chunk-X7IQYYHF.js} +2 -2
  68. package/dist/assets/cesium/Workers/{chunk-LLUNNUJV.js → chunk-XIUSRWL6.js} +9 -5
  69. package/dist/assets/cesium/Workers/{chunk-CCFQRR6D.js → chunk-XWOUPGUF.js} +1 -1
  70. package/dist/assets/cesium/Workers/{chunk-6BTKZDRG.js → chunk-YCDZX5LS.js} +3 -5
  71. package/dist/assets/cesium/Workers/{chunk-RP2A7BR5.js → chunk-YK3QIKY7.js} +12 -14
  72. package/dist/assets/cesium/Workers/{chunk-227AJNOA.js → chunk-YSIJTJ7N.js} +5 -5
  73. package/dist/assets/cesium/Workers/{chunk-A4JVFBQ3.js → chunk-Z2QP3CXW.js} +2 -2
  74. package/dist/assets/cesium/Workers/{chunk-VLGOATD6.js → chunk-ZVUUPJEM.js} +22 -22
  75. package/dist/assets/cesium/Workers/combineGeometry.js +22 -23
  76. package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -17
  77. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -15
  78. package/dist/assets/cesium/Workers/createCircleGeometry.js +29 -26
  79. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -18
  80. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +35 -36
  81. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -30
  82. package/dist/assets/cesium/Workers/createCorridorGeometry.js +29 -30
  83. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +27 -28
  84. package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -19
  85. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +17 -19
  86. package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -25
  87. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -18
  88. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -18
  89. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -17
  90. package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -17
  91. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +18 -18
  92. package/dist/assets/cesium/Workers/createGeometry.js +52 -33
  93. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +28 -29
  94. package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -15
  95. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -14
  96. package/dist/assets/cesium/Workers/createPolygonGeometry.js +451 -176
  97. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +29 -30
  98. package/dist/assets/cesium/Workers/createPolylineGeometry.js +24 -25
  99. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +31 -33
  100. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +27 -29
  101. package/dist/assets/cesium/Workers/createRectangleGeometry.js +30 -31
  102. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +21 -24
  103. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +22 -23
  104. package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -18
  105. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -17
  106. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
  107. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +14 -16
  108. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -23
  109. package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
  110. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -21
  111. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +14 -16
  112. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -25
  113. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +29 -26
  114. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -21
  115. package/dist/assets/cesium/Workers/createWallGeometry.js +23 -24
  116. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +22 -23
  117. package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
  118. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +35 -19
  119. package/dist/assets/cesium/Workers/decodeI3S.js +600 -92
  120. package/dist/assets/cesium/Workers/transcodeKTX2.js +58 -93
  121. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  122. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +21 -22
  123. package/dist/assets/{cesium.6b12b4.js → cesium-9ea5ba6e.js} +73315 -68035
  124. package/dist/assets/cesium.js +1 -1
  125. package/dist/assets/{core.074b78.js → core-9b003470.js} +7135 -5664
  126. package/dist/assets/core.js +1 -1
  127. package/dist/assets/{ol.8b2e3a.js → ol-8373d6ac.js} +43066 -44325
  128. package/dist/assets/ol.js +1 -1
  129. package/dist/assets/ui-163311a7.css +1 -0
  130. package/dist/assets/{ui.715986.js → ui-163311a7.js} +14696 -13170
  131. package/dist/assets/ui.js +1 -1
  132. package/dist/assets/vue-0f6dd813.js +6083 -0
  133. package/dist/assets/vue.js +1 -1
  134. package/dist/assets/{vuetify.28d881.css → vuetify-e2c4b35c.css} +2 -2
  135. package/dist/assets/{vuetify.28d881.js → vuetify-e2c4b35c.js} +8699 -8824
  136. package/dist/assets/vuetify.js +1 -1
  137. package/dist/index.html +11 -10
  138. package/index.d.ts +36 -20
  139. package/index.html +5 -5
  140. package/index.js +20 -10
  141. package/lib/olLib.js +90 -23
  142. package/package.json +25 -23
  143. package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
  144. package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
  145. package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
  146. package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
  147. package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
  148. package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
  149. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  150. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +73 -34
  151. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  152. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  153. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +50 -96
  154. package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +14 -11
  155. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  156. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  157. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  158. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  159. package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
  160. package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
  161. package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
  162. package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
  163. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  164. package/plugins/@vcmap-show-case/vector-properties-example/src/GeometrySettings.vue +420 -0
  165. package/plugins/@vcmap-show-case/vector-properties-example/src/LayoutHandler.vue +97 -0
  166. package/plugins/@vcmap-show-case/vector-properties-example/src/TerrainSettings.vue +90 -0
  167. package/plugins/@vcmap-show-case/vector-properties-example/src/VectorPropertiesExample.vue +86 -70
  168. package/plugins/@vcmap-show-case/vector-properties-example/src/index.js +34 -1
  169. package/plugins/@vcmap-show-case/vector-properties-example/src/lib.js +294 -0
  170. package/plugins/@vcmap-show-case/wizard-example/src/WizardExample.vue +40 -54
  171. package/plugins/package.json +23 -21
  172. package/public/assets/@mdi/font/README.md +25 -0
  173. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  174. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  175. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  176. package/src/actions/StyleSelector.vue +37 -21
  177. package/src/actions/StyleSelector.vue.d.ts +5 -5
  178. package/src/actions/actionHelper.d.ts +4 -11
  179. package/src/actions/actionHelper.js +35 -27
  180. package/src/actions/flightActions.js +44 -23
  181. package/src/actions/listActions.d.ts +5 -12
  182. package/src/actions/listActions.js +6 -22
  183. package/src/actions/stateRefAction.js +2 -2
  184. package/src/application/VcsApp.vue +196 -85
  185. package/src/application/VcsApp.vue.d.ts +309 -4
  186. package/src/application/VcsAppWrapper.vue +1 -1
  187. package/src/application/VcsAttributions.vue +4 -15
  188. package/src/application/VcsAttributionsFooter.vue +28 -18
  189. package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
  190. package/src/application/VcsContainer.vue +27 -10
  191. package/src/application/VcsContainer.vue.d.ts +248 -0
  192. package/src/application/VcsMainMap.vue +8 -8
  193. package/src/application/VcsMainMap.vue.d.ts +2 -2
  194. package/src/application/VcsMap.vue +1 -0
  195. package/src/application/VcsNavbar.vue +15 -3
  196. package/src/application/VcsNavbar.vue.d.ts +2 -1
  197. package/src/application/VcsPositionDisplay.vue +10 -25
  198. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  199. package/src/application/VcsSettings.vue +11 -18
  200. package/src/application/VcsSplashScreen.vue +43 -55
  201. package/src/application/VcsSplashScreen.vue.d.ts +4 -6
  202. package/src/application/VcsTextPage.vue +13 -44
  203. package/src/application/VcsTextPage.vue.d.ts +4 -8
  204. package/src/application/VcsTextPageFooter.vue +26 -41
  205. package/src/application/attributionsHelper.d.ts +20 -22
  206. package/src/application/attributionsHelper.js +14 -10
  207. package/src/callback/vcsCallback.d.ts +2 -2
  208. package/src/callback/vcsCallback.js +1 -1
  209. package/src/components/buttons/VcsActionButtonList.vue +66 -7
  210. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  211. package/src/components/buttons/VcsButton.vue +8 -10
  212. package/src/components/buttons/VcsButton.vue.d.ts +4 -4
  213. package/src/components/buttons/VcsFormButton.vue +9 -9
  214. package/src/components/buttons/VcsFormButton.vue.d.ts +3 -3
  215. package/src/components/buttons/VcsToolButton.vue +9 -7
  216. package/src/components/buttons/VcsToolButton.vue.d.ts +5 -5
  217. package/src/components/composables.d.ts +14 -2
  218. package/src/components/composables.js +106 -4
  219. package/src/components/extent/VcsExtent.vue +11 -7
  220. package/src/components/extent/VcsExtent.vue.d.ts +1 -0
  221. package/src/components/extent/VcsExtentEditor.vue +2 -1
  222. package/src/components/flight/VcsFlightAnchorsComponent.vue +64 -36
  223. package/src/components/flight/VcsFlightComponent.vue +25 -30
  224. package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
  225. package/src/components/flight/VcsFlightEditor.vue +1 -0
  226. package/src/components/flight/VcsFlightPlayer.vue +47 -19
  227. package/src/components/form-inputs-controls/VcsCheckbox.vue +32 -13
  228. package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +10 -0
  229. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +14 -17
  230. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
  231. package/src/components/form-inputs-controls/VcsCoordinate.vue +17 -5
  232. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  233. package/src/components/form-inputs-controls/VcsDatePicker.vue +53 -59
  234. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +2 -64
  235. package/src/components/form-inputs-controls/VcsFileInput.vue +18 -19
  236. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  237. package/src/components/form-inputs-controls/VcsLabel.vue +65 -3
  238. package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +32 -1
  239. package/src/components/form-inputs-controls/VcsRadio.vue +26 -10
  240. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +2 -0
  241. package/src/components/form-inputs-controls/VcsSelect.vue +47 -47
  242. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +9 -6
  243. package/src/components/form-inputs-controls/VcsSlider.vue +53 -15
  244. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +26 -2
  245. package/src/components/form-inputs-controls/VcsTextArea.vue +56 -40
  246. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  247. package/src/components/form-inputs-controls/VcsTextField.vue +46 -16
  248. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +12 -1
  249. package/src/components/form-inputs-controls/VcsWizard.vue +89 -112
  250. package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +3 -13
  251. package/src/components/form-inputs-controls/VcsWizardStep.vue +78 -58
  252. package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +24 -11
  253. package/src/components/form-inputs-controls/vcsTextField.scss +21 -13
  254. package/src/components/form-output/VcsFormattedNumber.vue +46 -14
  255. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +27 -0
  256. package/src/components/form-output/VcsMarkdown.vue +56 -0
  257. package/src/{application/VcsCustomScreen.vue.d.ts → components/form-output/VcsMarkdown.vue.d.ts} +7 -5
  258. package/src/components/form-output/markdownHelper.d.ts +30 -0
  259. package/src/components/form-output/markdownHelper.js +398 -0
  260. package/src/components/import/VcsFileDrop.vue +9 -6
  261. package/src/components/import/VcsImportComponent.vue +12 -8
  262. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  263. package/src/components/lists/VcsActionList.vue +50 -34
  264. package/src/components/lists/VcsActionList.vue.d.ts +3 -1
  265. package/src/components/lists/VcsList.vue +105 -192
  266. package/src/components/lists/VcsList.vue.d.ts +18 -66
  267. package/src/components/lists/VcsListItemComponent.vue +216 -0
  268. package/src/components/lists/VcsListItemComponent.vue.d.ts +83 -0
  269. package/src/components/lists/VcsTreeview.vue +119 -26
  270. package/src/components/lists/VcsTreeview.vue.d.ts +26 -3
  271. package/src/components/lists/VcsTreeviewSearchbar.vue +17 -6
  272. package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
  273. package/src/components/lists/VcsTreeviewTitle.vue +40 -0
  274. package/src/components/modelHelper.d.ts +21 -8
  275. package/src/components/modelHelper.js +50 -8
  276. package/src/components/notification/VcsBadge.vue +2 -2
  277. package/src/components/notification/VcsHelp.vue +6 -7
  278. package/src/components/notification/VcsHelp.vue.d.ts +0 -8
  279. package/src/components/notification/VcsHelpTooltip.vue +48 -0
  280. package/src/components/notification/VcsHelpTooltip.vue.d.ts +25 -0
  281. package/src/components/plugins/AbstractConfigEditor.vue +2 -23
  282. package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
  283. package/src/components/section/VcsExpansionPanel.vue +111 -0
  284. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  285. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +13 -7
  286. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +2 -3
  287. package/src/components/style/MenuWrapper.vue +25 -27
  288. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  289. package/src/components/style/VcsFeatureStyleComponent.vue +1 -0
  290. package/src/components/style/VcsFillMenu.vue +10 -16
  291. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  292. package/src/components/style/VcsFillSelector.vue +14 -16
  293. package/src/components/style/VcsImageMenu.vue +9 -25
  294. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  295. package/src/components/style/VcsImageSelector.vue +115 -172
  296. package/src/components/style/VcsImageSelector.vue.d.ts +16 -15
  297. package/src/components/style/VcsStrokeMenu.vue +9 -15
  298. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  299. package/src/components/style/VcsStrokeSelector.vue +17 -21
  300. package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
  301. package/src/components/style/VcsTextMenu.vue +12 -14
  302. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  303. package/src/components/style/VcsTextSelector.vue +80 -96
  304. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  305. package/src/components/style/VcsVectorStyleComponent.vue +9 -20
  306. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  307. package/src/components/style/composables.d.ts +0 -14
  308. package/src/components/style/composables.js +0 -49
  309. package/src/components/tables/VcsDataTable.vue +43 -33
  310. package/src/components/tables/VcsDataTable.vue.d.ts +2 -1
  311. package/src/components/tables/VcsTable.vue +46 -62
  312. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  313. package/src/components/tables/VcsTableCell.vue +72 -0
  314. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  315. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +87 -51
  316. package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +9 -7
  317. package/src/components/vector-properties/VcsFeatureTransforms.vue +45 -6
  318. package/src/components/vector-properties/VcsFeatureTransforms.vue.d.ts +2 -1
  319. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +541 -596
  320. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +222 -24
  321. package/src/components/viewpoint/VcsViewpointComponent.vue +36 -20
  322. package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
  323. package/src/components/viewpoint/VcsViewpointEditor.vue +3 -1
  324. package/src/contentTree/LayerTree.vue +10 -28
  325. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  326. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  327. package/src/contentTree/contentTreeCollection.js +45 -11
  328. package/src/contentTree/contentTreeItem.d.ts +4 -4
  329. package/src/contentTree/contentTreeItem.js +8 -8
  330. package/src/contentTree/layerContentTreeItem.d.ts +8 -5
  331. package/src/contentTree/layerContentTreeItem.js +48 -34
  332. package/src/contentTree/layerGroupContentTreeItem.d.ts +7 -1
  333. package/src/contentTree/layerGroupContentTreeItem.js +22 -3
  334. package/src/contentTree/obliqueCollectionContentTreeItem.js +6 -1
  335. package/src/featureInfo/AddressBalloonComponent.vue +1 -1
  336. package/src/featureInfo/BalloonComponent.vue +33 -26
  337. package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
  338. package/src/featureInfo/IframeComponent.vue +6 -1
  339. package/src/featureInfo/MarkdownBalloonComponent.vue +5 -3
  340. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  341. package/src/featureInfo/abstractFeatureInfoView.d.ts +19 -4
  342. package/src/featureInfo/abstractFeatureInfoView.js +38 -13
  343. package/src/featureInfo/balloonHelper.js +1 -1
  344. package/src/featureInfo/featureInfo.d.ts +7 -7
  345. package/src/featureInfo/featureInfo.js +59 -41
  346. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  347. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  348. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  349. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  350. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  351. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  352. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  353. package/src/i18n/de.d.ts +59 -32
  354. package/src/i18n/de.js +28 -5
  355. package/src/i18n/en.d.ts +59 -32
  356. package/src/i18n/en.js +25 -2
  357. package/src/i18n/i18nCollection.d.ts +9 -15
  358. package/src/i18n/i18nCollection.js +3 -3
  359. package/src/init.d.ts +5 -38
  360. package/src/init.js +19 -18
  361. package/src/legend/StyleLegendItem.vue +4 -9
  362. package/src/legend/VcsLegend.vue +33 -55
  363. package/src/legend/VcsLegend.vue.d.ts +1 -0
  364. package/src/manager/buttonManager.js +4 -4
  365. package/src/manager/collectionManager/CollectionComponent.vue +18 -42
  366. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  367. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  368. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  369. package/src/manager/collectionManager/CollectionComponentList.vue +11 -9
  370. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +6 -4
  371. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  372. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  373. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  374. package/src/manager/collectionManager/categoryManager.d.ts +1 -1
  375. package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
  376. package/src/manager/collectionManager/collectionComponentClass.js +16 -15
  377. package/src/manager/collectionManager/collectionManager.d.ts +1 -1
  378. package/src/manager/collectionManager/collectionManager.js +10 -10
  379. package/src/manager/collectionManager/editorCollectionComponentClass.js +11 -8
  380. package/src/manager/contextMenu/ContextMenuComponent.vue +1 -1
  381. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  382. package/src/manager/navbarManager.js +2 -2
  383. package/src/manager/panel/PanelComponent.vue +2 -9
  384. package/src/manager/panel/PanelManagerComponent.vue +9 -5
  385. package/src/manager/panel/panelHelper.js +3 -3
  386. package/src/manager/panel/panelManager.d.ts +9 -1
  387. package/src/manager/panel/panelManager.js +18 -6
  388. package/src/manager/toolbox/GroupToolboxComponent.vue +13 -7
  389. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  390. package/src/manager/toolbox/SelectToolboxComponent.vue +13 -8
  391. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  392. package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +28 -8
  393. package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
  394. package/src/manager/toolbox/toolboxManager.js +10 -10
  395. package/src/manager/window/WindowComponent.vue +13 -9
  396. package/src/manager/window/WindowComponentHeader.vue +33 -9
  397. package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
  398. package/src/manager/window/WindowManager.vue +6 -3
  399. package/src/manager/window/windowManager.d.ts +71 -15
  400. package/src/manager/window/windowManager.js +32 -11
  401. package/src/navigation/MapNavigation.vue +52 -9
  402. package/src/navigation/ObliqueRotation.vue +2 -2
  403. package/src/navigation/OrientationToolsButton.vue +37 -26
  404. package/src/navigation/OrientationToolsButton.vue.d.ts +5 -1
  405. package/src/navigation/TiltSlider.vue +82 -88
  406. package/src/navigation/TiltSlider.vue.d.ts +10 -7
  407. package/src/navigation/VcsCompass.vue +17 -11
  408. package/src/navigation/VcsCompass.vue.d.ts +2 -0
  409. package/src/navigation/VcsZoomButton.vue +1 -1
  410. package/src/navigation/locatorHelper.js +4 -22
  411. package/src/navigation/overviewMap.js +5 -2
  412. package/src/notifier/NotifierComponent.vue +19 -16
  413. package/src/obliqueFallbackWarnings.d.ts +5 -0
  414. package/src/obliqueFallbackWarnings.js +54 -0
  415. package/src/search/ResultItem.vue +18 -6
  416. package/src/search/ResultsComponent.vue +32 -21
  417. package/src/search/ResultsComponent.vue.d.ts +2 -1
  418. package/src/search/SearchComponent.vue +14 -16
  419. package/src/search/SearchComponent.vue.d.ts +1 -0
  420. package/src/search/search.js +2 -2
  421. package/src/siteConfig.js +9 -9
  422. package/src/state.js +4 -4
  423. package/src/styles/_typography.scss +1 -2
  424. package/src/styles/main.scss +0 -4
  425. package/src/styles/vcsList.scss +1 -1
  426. package/src/uiConfig.d.ts +323 -7
  427. package/src/uiConfig.js +31 -17
  428. package/src/vcsUiApp.d.ts +90 -80
  429. package/src/vcsUiApp.js +61 -41
  430. package/src/vuePlugins/i18n.js +8 -0
  431. package/src/vuePlugins/vuetify.d.ts +88 -60
  432. package/src/vuePlugins/vuetify.js +134 -20
  433. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  434. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  435. package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +0 -3273
  436. package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +0 -73
  437. package/dist/assets/index-ca7EmZ3d.js +0 -1
  438. package/dist/assets/ui.715986.css +0 -1
  439. package/dist/assets/vue.0f2c53.js +0 -6096
  440. package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
  441. package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
  442. package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
  443. package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
  444. package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
  445. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  446. package/src/application/VcsCustomScreen.vue +0 -45
  447. package/src/application/markdownHelper.d.ts +0 -12
  448. package/src/application/markdownHelper.js +0 -85
  449. package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
  450. package/src/components/notification/VcsTooltip.vue +0 -156
  451. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  452. package/src/components/vector-properties/composables.d.ts +0 -33
  453. package/src/components/vector-properties/composables.js +0 -100
  454. package/src/featureInfo/MarkdownComponent.vue +0 -16
  455. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  456. package/src/styles/_theming.scss +0 -73
  457. package/src/styles/settings.scss +0 -6
  458. package/src/styles/shades.scss +0 -4
  459. package/src/styles/variables.scss +0 -140
  460. package/src/styles/vcsFont.scss +0 -2
  461. package/src/styles/vcsGrid.scss +0 -3
  462. /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  463. /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  464. /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  465. /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  466. /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  467. /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  468. /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  469. /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  470. /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  471. /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  472. /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  473. /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  474. /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  475. /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  476. /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  477. /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  478. /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  479. /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  480. /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  481. /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  482. /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  483. /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  484. /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
  485. /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license
3
3
  * Cesium - https://github.com/CesiumGS/cesium
4
- * Version 1.109.3
4
+ * Version 1.121.2
5
5
  *
6
6
  * Copyright 2011-2022 Cesium Contributors
7
7
  *
@@ -25,31 +25,54 @@
25
25
 
26
26
  import {
27
27
  require_draco_decoder_nodejs
28
- } from "./chunk-CHHNOC2C.js";
28
+ } from "./chunk-M24KHENR.js";
29
+ import {
30
+ Color_default
31
+ } from "./chunk-HP5XLODI.js";
29
32
  import {
30
33
  createTaskProcessorWorker_default
31
- } from "./chunk-A4JVFBQ3.js";
34
+ } from "./chunk-Z2QP3CXW.js";
32
35
  import {
33
36
  WebMercatorProjection_default
34
- } from "./chunk-HQF437NJ.js";
37
+ } from "./chunk-RJM36CNY.js";
35
38
  import {
36
39
  Cartesian3_default,
37
40
  Cartographic_default,
38
41
  Ellipsoid_default,
39
42
  Matrix3_default
40
- } from "./chunk-PCJWUS4M.js";
43
+ } from "./chunk-FFLMY4TE.js";
41
44
  import {
42
45
  Math_default
43
- } from "./chunk-N3JIFFX2.js";
44
- import "./chunk-WXTV4ATB.js";
45
- import "./chunk-4MFFIWUA.js";
46
+ } from "./chunk-WGDFYAGC.js";
47
+ import {
48
+ defaultValue_default
49
+ } from "./chunk-U5HSOKPQ.js";
50
+ import {
51
+ Check_default
52
+ } from "./chunk-P6TRGU3S.js";
46
53
  import {
47
54
  __toESM,
48
55
  defined_default
49
- } from "./chunk-6BTKZDRG.js";
56
+ } from "./chunk-YCDZX5LS.js";
50
57
 
51
58
  // packages/engine/Source/Workers/decodeI3S.js
52
59
  var import_draco_decoder_nodejs = __toESM(require_draco_decoder_nodejs(), 1);
60
+
61
+ // packages/engine/Source/Core/srgbToLinear.js
62
+ function srgbToLinear(value) {
63
+ Check_default.defined("value", value);
64
+ if (value <= 0.04045) {
65
+ return value * 0.07739938080495357;
66
+ }
67
+ return Math.pow(
68
+ // eslint-disable-next-line no-loss-of-precision
69
+ (value + 0.055) * 0.9478672985781991,
70
+ 2.4
71
+ );
72
+ }
73
+ var srgbToLinear_default = srgbToLinear;
74
+
75
+ // packages/engine/Source/Workers/decodeI3S.js
53
76
  var draco;
54
77
  function bilinearInterpolate(tx, ty, h00, h10, h01, h11) {
55
78
  const a = h00 * (1 - tx) + h10 * tx;
@@ -171,7 +194,317 @@ function cropUVs(vertexCount, uv0s, uvRegions) {
171
194
  uv0s[vertexIndex * 2 + 1] += minV;
172
195
  }
173
196
  }
174
- function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colors) {
197
+ function generateIndexArray(vertexCount, indices, colors, splitGeometryByColorTransparency) {
198
+ const indexArray = new Uint32Array(vertexCount);
199
+ const vertexIndexFn = defined_default(indices) ? (vertexIndex) => indices[vertexIndex] : (vertexIndex) => vertexIndex;
200
+ let transparentVertexOffset = 0;
201
+ if (splitGeometryByColorTransparency && defined_default(colors)) {
202
+ const isVertexTransparentFn = (vertexIndex) => colors[vertexIndexFn(vertexIndex) * 4 + 3] < 255;
203
+ for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex += 3) {
204
+ if (!isVertexTransparentFn(vertexIndex) && !isVertexTransparentFn(vertexIndex + 1) && !isVertexTransparentFn(vertexIndex + 2)) {
205
+ indexArray[transparentVertexOffset++] = vertexIndexFn(vertexIndex);
206
+ indexArray[transparentVertexOffset++] = vertexIndexFn(vertexIndex + 1);
207
+ indexArray[transparentVertexOffset++] = vertexIndexFn(vertexIndex + 2);
208
+ }
209
+ }
210
+ if (transparentVertexOffset > 0) {
211
+ let offset = transparentVertexOffset;
212
+ for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex += 3) {
213
+ if (isVertexTransparentFn(vertexIndex) || isVertexTransparentFn(vertexIndex + 1) || isVertexTransparentFn(vertexIndex + 2)) {
214
+ indexArray[offset++] = vertexIndexFn(vertexIndex);
215
+ indexArray[offset++] = vertexIndexFn(vertexIndex + 1);
216
+ indexArray[offset++] = vertexIndexFn(vertexIndex + 2);
217
+ }
218
+ }
219
+ } else {
220
+ for (let vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex) {
221
+ indexArray[vertexIndex] = vertexIndexFn(vertexIndex);
222
+ }
223
+ }
224
+ } else {
225
+ transparentVertexOffset = vertexCount;
226
+ for (let vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex) {
227
+ indexArray[vertexIndex] = vertexIndexFn(vertexIndex);
228
+ }
229
+ }
230
+ return {
231
+ indexArray,
232
+ transparentVertexOffset
233
+ };
234
+ }
235
+ function getFeatureHash(symbologyData, outlinesHash, featureIndex) {
236
+ const featureHash = outlinesHash[featureIndex];
237
+ if (defined_default(featureHash)) {
238
+ return featureHash;
239
+ }
240
+ const newFeatureHash = outlinesHash[featureIndex] = {
241
+ positions: {},
242
+ indices: {},
243
+ edges: {}
244
+ };
245
+ const featureSymbology = defaultValue_default(
246
+ symbologyData[featureIndex],
247
+ symbologyData.default
248
+ );
249
+ newFeatureHash.hasOutline = defined_default(featureSymbology?.edges);
250
+ return newFeatureHash;
251
+ }
252
+ function addVertexToHash(indexHash, positionHash, vertexIndex, positions) {
253
+ if (!defined_default(indexHash[vertexIndex])) {
254
+ const startPositionIndex = vertexIndex * 3;
255
+ let coordinateHash = positionHash;
256
+ for (let index = 0; index < 3; index++) {
257
+ const coordinate = positions[startPositionIndex + index];
258
+ if (!defined_default(coordinateHash[coordinate])) {
259
+ coordinateHash[coordinate] = {};
260
+ }
261
+ coordinateHash = coordinateHash[coordinate];
262
+ }
263
+ if (!defined_default(coordinateHash.index)) {
264
+ coordinateHash.index = vertexIndex;
265
+ }
266
+ indexHash[vertexIndex] = coordinateHash.index;
267
+ }
268
+ }
269
+ function addEdgeToHash(edgeHash, vertexAIndex, vertexBIndex, vertexAIndexUnique, vertexBIndexUnique, normalIndex) {
270
+ let startVertexIndex;
271
+ let endVertexIndex;
272
+ if (vertexAIndexUnique < vertexBIndexUnique) {
273
+ startVertexIndex = vertexAIndexUnique;
274
+ endVertexIndex = vertexBIndexUnique;
275
+ } else {
276
+ startVertexIndex = vertexBIndexUnique;
277
+ endVertexIndex = vertexAIndexUnique;
278
+ }
279
+ let edgeStart = edgeHash[startVertexIndex];
280
+ if (!defined_default(edgeStart)) {
281
+ edgeStart = edgeHash[startVertexIndex] = {};
282
+ }
283
+ let edgeEnd = edgeStart[endVertexIndex];
284
+ if (!defined_default(edgeEnd)) {
285
+ edgeEnd = edgeStart[endVertexIndex] = {
286
+ normalsIndex: [],
287
+ outlines: []
288
+ };
289
+ }
290
+ edgeEnd.normalsIndex.push(normalIndex);
291
+ if (edgeEnd.outlines.length === 0 || vertexAIndex !== vertexAIndexUnique || vertexBIndex !== vertexBIndexUnique) {
292
+ edgeEnd.outlines.push(vertexAIndex, vertexBIndex);
293
+ }
294
+ }
295
+ function generateOutlinesHash(symbologyData, featureIndexArray, indexArray, positions) {
296
+ const outlinesHash = [];
297
+ for (let i = 0; i < indexArray.length; i += 3) {
298
+ const featureIndex = defined_default(featureIndexArray) ? featureIndexArray[indexArray[i]] : "default";
299
+ const featureHash = getFeatureHash(
300
+ symbologyData,
301
+ outlinesHash,
302
+ featureIndex
303
+ );
304
+ if (!featureHash.hasOutline) {
305
+ continue;
306
+ }
307
+ const indexHash = featureHash.indices;
308
+ const positionHash = featureHash.positions;
309
+ for (let vertex = 0; vertex < 3; vertex++) {
310
+ const vertexIndex = indexArray[i + vertex];
311
+ addVertexToHash(indexHash, positionHash, vertexIndex, positions);
312
+ }
313
+ const edgeHash = featureHash.edges;
314
+ for (let vertex = 0; vertex < 3; vertex++) {
315
+ const vertexIndex = indexArray[i + vertex];
316
+ const nextVertexIndex = indexArray[i + (vertex + 1) % 3];
317
+ const uniqueVertexIndex = indexHash[vertexIndex];
318
+ const uniqueNextVertexIndex = indexHash[nextVertexIndex];
319
+ addEdgeToHash(
320
+ edgeHash,
321
+ vertexIndex,
322
+ nextVertexIndex,
323
+ uniqueVertexIndex,
324
+ uniqueNextVertexIndex,
325
+ i
326
+ );
327
+ }
328
+ }
329
+ return outlinesHash;
330
+ }
331
+ var calculateFaceNormalA = new Cartesian3_default();
332
+ var calculateFaceNormalB = new Cartesian3_default();
333
+ var calculateFaceNormalC = new Cartesian3_default();
334
+ function calculateFaceNormal(normals, vertexAIndex, indexArray, positions) {
335
+ const positionAIndex = indexArray[vertexAIndex] * 3;
336
+ const positionBIndex = indexArray[vertexAIndex + 1] * 3;
337
+ const positionCIndex = indexArray[vertexAIndex + 2] * 3;
338
+ Cartesian3_default.fromArray(positions, positionAIndex, calculateFaceNormalA);
339
+ Cartesian3_default.fromArray(positions, positionBIndex, calculateFaceNormalB);
340
+ Cartesian3_default.fromArray(positions, positionCIndex, calculateFaceNormalC);
341
+ Cartesian3_default.subtract(
342
+ calculateFaceNormalB,
343
+ calculateFaceNormalA,
344
+ calculateFaceNormalB
345
+ );
346
+ Cartesian3_default.subtract(
347
+ calculateFaceNormalC,
348
+ calculateFaceNormalA,
349
+ calculateFaceNormalC
350
+ );
351
+ Cartesian3_default.cross(
352
+ calculateFaceNormalB,
353
+ calculateFaceNormalC,
354
+ calculateFaceNormalA
355
+ );
356
+ const magnitude = Cartesian3_default.magnitude(calculateFaceNormalA);
357
+ if (magnitude !== 0) {
358
+ Cartesian3_default.divideByScalar(
359
+ calculateFaceNormalA,
360
+ magnitude,
361
+ calculateFaceNormalA
362
+ );
363
+ }
364
+ const normalAIndex = vertexAIndex * 3;
365
+ const normalBIndex = (vertexAIndex + 1) * 3;
366
+ const normalCIndex = (vertexAIndex + 2) * 3;
367
+ Cartesian3_default.pack(calculateFaceNormalA, normals, normalAIndex);
368
+ Cartesian3_default.pack(calculateFaceNormalA, normals, normalBIndex);
369
+ Cartesian3_default.pack(calculateFaceNormalA, normals, normalCIndex);
370
+ }
371
+ var isEdgeSmoothA = new Cartesian3_default();
372
+ var isEdgeSmoothB = new Cartesian3_default();
373
+ function isEdgeSmooth(normals, normalAIndex, normalBIndex) {
374
+ Cartesian3_default.fromArray(normals, normalAIndex, isEdgeSmoothA);
375
+ Cartesian3_default.fromArray(normals, normalBIndex, isEdgeSmoothB);
376
+ const cosine = Cartesian3_default.dot(isEdgeSmoothA, isEdgeSmoothB);
377
+ const sine = Cartesian3_default.magnitude(
378
+ Cartesian3_default.cross(isEdgeSmoothA, isEdgeSmoothB, isEdgeSmoothA)
379
+ );
380
+ return Math.atan2(sine, cosine) < 0.25;
381
+ }
382
+ function addOutlinesForEdge(outlines, edgeData, indexArray, positions, normals) {
383
+ if (edgeData.normalsIndex.length > 1) {
384
+ const normalsByIndex = positions.length === normals.length;
385
+ for (let indexA = 0; indexA < edgeData.normalsIndex.length; indexA++) {
386
+ const vertexAIndex = edgeData.normalsIndex[indexA];
387
+ if (!defined_default(normals[vertexAIndex * 3])) {
388
+ calculateFaceNormal(normals, vertexAIndex, indexArray, positions);
389
+ }
390
+ if (indexA === 0) {
391
+ continue;
392
+ }
393
+ for (let indexB = 0; indexB < indexA; indexB++) {
394
+ const vertexBIndex = edgeData.normalsIndex[indexB];
395
+ const normalAIndex = normalsByIndex ? indexArray[vertexAIndex] * 3 : vertexAIndex * 3;
396
+ const normalBIndex = normalsByIndex ? indexArray[vertexBIndex] * 3 : vertexBIndex * 3;
397
+ if (isEdgeSmooth(normals, normalAIndex, normalBIndex)) {
398
+ return;
399
+ }
400
+ }
401
+ }
402
+ }
403
+ outlines.push(...edgeData.outlines);
404
+ }
405
+ function addOutlinesForFeature(outlines, edgeHash, indexArray, positions, normals) {
406
+ const edgeStartKeys = Object.keys(edgeHash);
407
+ for (let startIndex = 0; startIndex < edgeStartKeys.length; startIndex++) {
408
+ const edgeEnds = edgeHash[edgeStartKeys[startIndex]];
409
+ const edgeEndKeys = Object.keys(edgeEnds);
410
+ for (let endIndex = 0; endIndex < edgeEndKeys.length; endIndex++) {
411
+ const edgeData = edgeEnds[edgeEndKeys[endIndex]];
412
+ addOutlinesForEdge(outlines, edgeData, indexArray, positions, normals);
413
+ }
414
+ }
415
+ }
416
+ function generateOutlinesFromHash(outlinesHash, indexArray, positions, normals) {
417
+ const outlines = [];
418
+ const features = Object.keys(outlinesHash);
419
+ for (let featureIndex = 0; featureIndex < features.length; featureIndex++) {
420
+ const edgeHash = outlinesHash[features[featureIndex]].edges;
421
+ addOutlinesForFeature(outlines, edgeHash, indexArray, positions, normals);
422
+ }
423
+ return outlines;
424
+ }
425
+ function generateOutlinesIndexArray(symbologyData, featureIndexArray, indexArray, positions, normals) {
426
+ if (!defined_default(symbologyData) || Object.keys(symbologyData).length === 0) {
427
+ return void 0;
428
+ }
429
+ const outlinesHash = generateOutlinesHash(
430
+ symbologyData,
431
+ featureIndexArray,
432
+ indexArray,
433
+ positions
434
+ );
435
+ if (!defined_default(normals) || indexArray.length * 3 !== normals.length) {
436
+ normals = [];
437
+ }
438
+ const outlines = generateOutlinesFromHash(
439
+ outlinesHash,
440
+ indexArray,
441
+ positions,
442
+ normals
443
+ );
444
+ const outlinesIndexArray = outlines.length > 0 ? new Uint32Array(outlines) : void 0;
445
+ return outlinesIndexArray;
446
+ }
447
+ function convertColorsArray(colors) {
448
+ const colorsArray = new Float32Array(colors.length);
449
+ for (let index = 0; index < colors.length; index += 4) {
450
+ colorsArray[index] = srgbToLinear_default(Color_default.byteToFloat(colors[index]));
451
+ colorsArray[index + 1] = srgbToLinear_default(Color_default.byteToFloat(colors[index + 1]));
452
+ colorsArray[index + 2] = srgbToLinear_default(Color_default.byteToFloat(colors[index + 2]));
453
+ colorsArray[index + 3] = Color_default.byteToFloat(colors[index + 3]);
454
+ }
455
+ return colorsArray;
456
+ }
457
+ function generateNormals(vertexCount, indices, positions, normals, uv0s, colors, featureIndex) {
458
+ const result = {
459
+ normals: void 0,
460
+ positions: void 0,
461
+ uv0s: void 0,
462
+ colors: void 0,
463
+ featureIndex: void 0,
464
+ vertexCount: void 0
465
+ };
466
+ if (vertexCount === 0 || !defined_default(positions) || positions.length === 0 || defined_default(normals)) {
467
+ return result;
468
+ }
469
+ if (defined_default(indices)) {
470
+ result.vertexCount = indices.length;
471
+ result.positions = new Float32Array(indices.length * 3);
472
+ result.uv0s = defined_default(uv0s) ? new Float32Array(indices.length * 2) : void 0;
473
+ result.colors = defined_default(colors) ? new Uint8Array(indices.length * 4) : void 0;
474
+ result.featureIndex = defined_default(featureIndex) ? new Array(indices.length) : void 0;
475
+ for (let i = 0; i < indices.length; i++) {
476
+ const index = indices[i];
477
+ result.positions[i * 3] = positions[index * 3];
478
+ result.positions[i * 3 + 1] = positions[index * 3 + 1];
479
+ result.positions[i * 3 + 2] = positions[index * 3 + 2];
480
+ if (defined_default(result.uv0s)) {
481
+ result.uv0s[i * 2] = uv0s[index * 2];
482
+ result.uv0s[i * 2 + 1] = uv0s[index * 2 + 1];
483
+ }
484
+ if (defined_default(result.colors)) {
485
+ result.colors[i * 4] = colors[index * 4];
486
+ result.colors[i * 4 + 1] = colors[index * 4 + 1];
487
+ result.colors[i * 4 + 2] = colors[index * 4 + 2];
488
+ result.colors[i * 4 + 3] = colors[index * 4 + 3];
489
+ }
490
+ if (defined_default(result.featureIndex)) {
491
+ result.featureIndex[i] = featureIndex[index];
492
+ }
493
+ }
494
+ vertexCount = indices.length;
495
+ positions = result.positions;
496
+ }
497
+ indices = new Array(vertexCount);
498
+ for (let i = 0; i < vertexCount; i++) {
499
+ indices[i] = i;
500
+ }
501
+ result.normals = new Float32Array(indices.length * 3);
502
+ for (let i = 0; i < indices.length; i += 3) {
503
+ calculateFaceNormal(result.normals, i, indices, positions);
504
+ }
505
+ return result;
506
+ }
507
+ function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colors, featureIndex, parameters) {
175
508
  if (vertexCount === 0 || !defined_default(positions) || positions.length === 0) {
176
509
  return {
177
510
  buffers: [],
@@ -188,22 +521,45 @@ function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colo
188
521
  const meshes = [];
189
522
  const nodes = [];
190
523
  const nodesInScene = [];
524
+ const rootExtensions = {};
525
+ const extensionsUsed = [];
191
526
  if (defined_default(indices)) {
192
527
  vertexCount = indices.length;
193
528
  }
194
- const indexArray = new Uint32Array(vertexCount);
195
- if (defined_default(indices)) {
196
- for (let vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex) {
197
- indexArray[vertexIndex] = indices[vertexIndex];
198
- }
199
- } else {
200
- for (let newVertexIndex = 0; newVertexIndex < vertexCount; ++newVertexIndex) {
201
- indexArray[newVertexIndex] = newVertexIndex;
202
- }
203
- }
529
+ const { indexArray, transparentVertexOffset } = generateIndexArray(
530
+ vertexCount,
531
+ indices,
532
+ colors,
533
+ parameters.splitGeometryByColorTransparency
534
+ );
204
535
  const indicesBlob = new Blob([indexArray], { type: "application/binary" });
205
536
  const indicesURL = URL.createObjectURL(indicesBlob);
206
537
  const endIndex = vertexCount;
538
+ const featureIndexArray = parameters.enableFeatures && defined_default(featureIndex) ? new Float32Array(featureIndex.length) : void 0;
539
+ let featureCount = 0;
540
+ if (defined_default(featureIndexArray)) {
541
+ for (let index = 0; index < featureIndex.length; ++index) {
542
+ featureIndexArray[index] = featureIndex[index];
543
+ const countByIndex = featureIndex[index] + 1;
544
+ if (featureCount < countByIndex) {
545
+ featureCount = countByIndex;
546
+ }
547
+ }
548
+ }
549
+ let outlinesIndicesURL;
550
+ const outlinesIndexArray = generateOutlinesIndexArray(
551
+ parameters.symbologyData,
552
+ featureIndex,
553
+ indexArray,
554
+ positions,
555
+ normals
556
+ );
557
+ if (defined_default(outlinesIndexArray)) {
558
+ const outlinesIndicesBlob = new Blob([outlinesIndexArray], {
559
+ type: "application/binary"
560
+ });
561
+ outlinesIndicesURL = URL.createObjectURL(outlinesIndicesBlob);
562
+ }
207
563
  const meshPositions = positions.subarray(0, endIndex * 3);
208
564
  const positionsBlob = new Blob([meshPositions], {
209
565
  type: "application/binary"
@@ -237,7 +593,7 @@ function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colo
237
593
  const uv0Blob = new Blob([meshUv0s], { type: "application/binary" });
238
594
  uv0URL = URL.createObjectURL(uv0Blob);
239
595
  }
240
- const meshColorsInBytes = defined_default(colors) ? colors.subarray(0, endIndex * 4) : void 0;
596
+ const meshColorsInBytes = defined_default(colors) ? convertColorsArray(colors.subarray(0, endIndex * 4)) : void 0;
241
597
  let colorsURL;
242
598
  if (defined_default(meshColorsInBytes)) {
243
599
  const colorsBlob = new Blob([meshColorsInBytes], {
@@ -245,127 +601,254 @@ function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colo
245
601
  });
246
602
  colorsURL = URL.createObjectURL(colorsBlob);
247
603
  }
248
- const posIndex = 0;
249
- let normalIndex = 0;
250
- let uv0Index = 0;
251
- let colorIndex = 0;
252
- let indicesIndex = 0;
253
- let currentIndex = posIndex;
604
+ const meshFeatureId0 = defined_default(featureIndexArray) ? featureIndexArray.subarray(0, endIndex) : void 0;
605
+ let featureId0URL;
606
+ if (defined_default(meshFeatureId0)) {
607
+ const featureId0Blob = new Blob([meshFeatureId0], {
608
+ type: "application/binary"
609
+ });
610
+ featureId0URL = URL.createObjectURL(featureId0Blob);
611
+ }
612
+ const meshPropertyTable0 = defined_default(featureIndexArray) ? new Float32Array(featureCount) : void 0;
613
+ let propertyTable0URL;
614
+ if (defined_default(meshPropertyTable0)) {
615
+ for (let index = 0; index < meshPropertyTable0.length; ++index) {
616
+ meshPropertyTable0[index] = index;
617
+ }
618
+ const propertyTable0Blob = new Blob([meshPropertyTable0], {
619
+ type: "application/binary"
620
+ });
621
+ propertyTable0URL = URL.createObjectURL(propertyTable0Blob);
622
+ }
254
623
  const attributes = {};
255
- attributes.POSITION = posIndex;
624
+ const extensions = {};
625
+ attributes.POSITION = accessors.length;
256
626
  buffers.push({
257
627
  uri: positionsURL,
258
628
  byteLength: meshPositions.byteLength
259
629
  });
260
630
  bufferViews.push({
261
- buffer: posIndex,
631
+ buffer: buffers.length - 1,
262
632
  byteOffset: 0,
263
633
  byteLength: meshPositions.byteLength,
264
634
  target: 34962
265
635
  });
266
636
  accessors.push({
267
- bufferView: posIndex,
637
+ bufferView: bufferViews.length - 1,
268
638
  byteOffset: 0,
269
639
  componentType: 5126,
270
- count: vertexCount,
640
+ count: meshPositions.length / 3,
271
641
  type: "VEC3",
272
642
  max: [minX, minY, minZ],
273
643
  min: [maxX, maxY, maxZ]
274
644
  });
275
645
  if (defined_default(normalsURL)) {
276
- ++currentIndex;
277
- normalIndex = currentIndex;
278
- attributes.NORMAL = normalIndex;
646
+ attributes.NORMAL = accessors.length;
279
647
  buffers.push({
280
648
  uri: normalsURL,
281
649
  byteLength: meshNormals.byteLength
282
650
  });
283
651
  bufferViews.push({
284
- buffer: normalIndex,
652
+ buffer: buffers.length - 1,
285
653
  byteOffset: 0,
286
654
  byteLength: meshNormals.byteLength,
287
655
  target: 34962
288
656
  });
289
657
  accessors.push({
290
- bufferView: normalIndex,
658
+ bufferView: bufferViews.length - 1,
291
659
  byteOffset: 0,
292
660
  componentType: 5126,
293
- count: vertexCount,
661
+ count: meshNormals.length / 3,
294
662
  type: "VEC3"
295
663
  });
296
664
  }
297
665
  if (defined_default(uv0URL)) {
298
- ++currentIndex;
299
- uv0Index = currentIndex;
300
- attributes.TEXCOORD_0 = uv0Index;
666
+ attributes.TEXCOORD_0 = accessors.length;
301
667
  buffers.push({
302
668
  uri: uv0URL,
303
669
  byteLength: meshUv0s.byteLength
304
670
  });
305
671
  bufferViews.push({
306
- buffer: uv0Index,
672
+ buffer: buffers.length - 1,
307
673
  byteOffset: 0,
308
674
  byteLength: meshUv0s.byteLength,
309
675
  target: 34962
310
676
  });
311
677
  accessors.push({
312
- bufferView: uv0Index,
678
+ bufferView: bufferViews.length - 1,
313
679
  byteOffset: 0,
314
680
  componentType: 5126,
315
- count: vertexCount,
681
+ count: meshUv0s.length / 2,
316
682
  type: "VEC2"
317
683
  });
318
684
  }
319
685
  if (defined_default(colorsURL)) {
320
- ++currentIndex;
321
- colorIndex = currentIndex;
322
- attributes.COLOR_0 = colorIndex;
686
+ attributes.COLOR_0 = accessors.length;
323
687
  buffers.push({
324
688
  uri: colorsURL,
325
689
  byteLength: meshColorsInBytes.byteLength
326
690
  });
327
691
  bufferViews.push({
328
- buffer: colorIndex,
692
+ buffer: buffers.length - 1,
329
693
  byteOffset: 0,
330
694
  byteLength: meshColorsInBytes.byteLength,
331
695
  target: 34962
332
696
  });
333
697
  accessors.push({
334
- bufferView: colorIndex,
698
+ bufferView: bufferViews.length - 1,
335
699
  byteOffset: 0,
336
- componentType: 5121,
337
- normalized: true,
338
- count: vertexCount,
700
+ componentType: 5126,
701
+ count: meshColorsInBytes.length / 4,
339
702
  type: "VEC4"
340
703
  });
341
704
  }
342
- ++currentIndex;
343
- indicesIndex = currentIndex;
705
+ if (defined_default(featureId0URL)) {
706
+ attributes._FEATURE_ID_0 = accessors.length;
707
+ buffers.push({
708
+ uri: featureId0URL,
709
+ byteLength: meshFeatureId0.byteLength
710
+ });
711
+ bufferViews.push({
712
+ buffer: buffers.length - 1,
713
+ byteOffset: 0,
714
+ byteLength: meshFeatureId0.byteLength,
715
+ target: 34963
716
+ });
717
+ accessors.push({
718
+ bufferView: bufferViews.length - 1,
719
+ byteOffset: 0,
720
+ componentType: 5126,
721
+ count: meshFeatureId0.length,
722
+ type: "SCALAR"
723
+ });
724
+ extensions.EXT_mesh_features = {
725
+ featureIds: [
726
+ {
727
+ attribute: 0,
728
+ propertyTable: 0,
729
+ featureCount
730
+ }
731
+ ]
732
+ };
733
+ extensionsUsed.push("EXT_mesh_features");
734
+ }
735
+ if (defined_default(propertyTable0URL)) {
736
+ buffers.push({
737
+ uri: propertyTable0URL,
738
+ byteLength: meshPropertyTable0.byteLength
739
+ });
740
+ bufferViews.push({
741
+ buffer: buffers.length - 1,
742
+ byteOffset: 0,
743
+ byteLength: meshPropertyTable0.byteLength,
744
+ target: 34963
745
+ });
746
+ rootExtensions.EXT_structural_metadata = {
747
+ schema: {
748
+ id: "i3s-metadata-schema-001",
749
+ name: "I3S metadata schema 001",
750
+ description: "The schema for I3S metadata",
751
+ version: "1.0",
752
+ classes: {
753
+ feature: {
754
+ name: "feature",
755
+ description: "Feature metadata",
756
+ properties: {
757
+ index: {
758
+ description: "The feature index",
759
+ type: "SCALAR",
760
+ componentType: "FLOAT32",
761
+ required: true
762
+ }
763
+ }
764
+ }
765
+ }
766
+ },
767
+ propertyTables: [
768
+ {
769
+ name: "feature-indices-mapping",
770
+ class: "feature",
771
+ count: featureCount,
772
+ properties: {
773
+ index: {
774
+ values: bufferViews.length - 1
775
+ }
776
+ }
777
+ }
778
+ ]
779
+ };
780
+ extensionsUsed.push("EXT_structural_metadata");
781
+ }
782
+ if (defined_default(outlinesIndicesURL)) {
783
+ buffers.push({
784
+ uri: outlinesIndicesURL,
785
+ byteLength: outlinesIndexArray.byteLength
786
+ });
787
+ bufferViews.push({
788
+ buffer: buffers.length - 1,
789
+ byteOffset: 0,
790
+ byteLength: outlinesIndexArray.byteLength,
791
+ target: 34963
792
+ });
793
+ accessors.push({
794
+ bufferView: bufferViews.length - 1,
795
+ byteOffset: 0,
796
+ componentType: 5125,
797
+ count: outlinesIndexArray.length,
798
+ type: "SCALAR"
799
+ });
800
+ extensions.CESIUM_primitive_outline = {
801
+ indices: accessors.length - 1
802
+ };
803
+ extensionsUsed.push("CESIUM_primitive_outline");
804
+ }
344
805
  buffers.push({
345
806
  uri: indicesURL,
346
807
  byteLength: indexArray.byteLength
347
808
  });
348
809
  bufferViews.push({
349
- buffer: indicesIndex,
810
+ buffer: buffers.length - 1,
350
811
  byteOffset: 0,
351
812
  byteLength: indexArray.byteLength,
352
813
  target: 34963
353
814
  });
354
- accessors.push({
355
- bufferView: indicesIndex,
356
- byteOffset: 0,
357
- componentType: 5125,
358
- count: vertexCount,
359
- type: "SCALAR"
360
- });
361
- meshes.push({
362
- primitives: [
363
- {
364
- attributes,
365
- indices: indicesIndex,
366
- material: 0
815
+ const meshPrimitives = [];
816
+ if (transparentVertexOffset > 0) {
817
+ accessors.push({
818
+ bufferView: bufferViews.length - 1,
819
+ byteOffset: 0,
820
+ componentType: 5125,
821
+ count: transparentVertexOffset,
822
+ type: "SCALAR"
823
+ });
824
+ meshPrimitives.push({
825
+ attributes,
826
+ indices: accessors.length - 1,
827
+ material: meshPrimitives.length,
828
+ extensions
829
+ });
830
+ }
831
+ if (transparentVertexOffset < vertexCount) {
832
+ accessors.push({
833
+ bufferView: bufferViews.length - 1,
834
+ byteOffset: 4 * transparentVertexOffset,
835
+ // skip 4 bytes for each opaque vertex
836
+ componentType: 5125,
837
+ count: vertexCount - transparentVertexOffset,
838
+ type: "SCALAR"
839
+ });
840
+ meshPrimitives.push({
841
+ attributes,
842
+ indices: accessors.length - 1,
843
+ material: meshPrimitives.length,
844
+ extensions,
845
+ extra: {
846
+ isTransparent: true
367
847
  }
368
- ]
848
+ });
849
+ }
850
+ meshes.push({
851
+ primitives: meshPrimitives
369
852
  });
370
853
  nodesInScene.push(0);
371
854
  nodes.push({ mesh: 0 });
@@ -375,7 +858,9 @@ function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colo
375
858
  accessors,
376
859
  meshes,
377
860
  nodes,
378
- nodesInScene
861
+ nodesInScene,
862
+ rootExtensions,
863
+ extensionsUsed
379
864
  };
380
865
  }
381
866
  function decode(data, schema, bufferInfo, featureData) {
@@ -774,39 +1259,62 @@ function decodeAndCreateGltf(parameters) {
774
1259
  geometryData["uv-region"]
775
1260
  );
776
1261
  }
777
- const meshData = generateGltfBuffer(
778
- geometryData.vertexCount,
779
- geometryData.indices,
780
- geometryData.positions,
781
- geometryData.normals,
782
- geometryData.uv0s,
783
- geometryData.colors
784
- );
785
- const customAttributes = {};
1262
+ let featureIndex;
786
1263
  if (defined_default(geometryData["feature-index"])) {
787
- customAttributes.positions = geometryData.positions;
788
- customAttributes.indices = geometryData.indices;
789
- customAttributes.featureIndex = geometryData["feature-index"];
790
- customAttributes.cartesianCenter = parameters.cartesianCenter;
791
- customAttributes.parentRotation = parameters.parentRotation;
1264
+ featureIndex = geometryData["feature-index"];
792
1265
  } else if (defined_default(geometryData["faceRange"])) {
793
- customAttributes.positions = geometryData.positions;
794
- customAttributes.indices = geometryData.indices;
795
- customAttributes.sourceURL = parameters.url;
796
- customAttributes.cartesianCenter = parameters.cartesianCenter;
797
- customAttributes.parentRotation = parameters.parentRotation;
798
- customAttributes.featureIndex = new Array(geometryData.positions.length);
1266
+ featureIndex = new Array(geometryData.vertexCount);
799
1267
  for (let range = 0; range < geometryData["faceRange"].length - 1; range += 2) {
800
1268
  const curIndex = range / 2;
801
1269
  const rangeStart = geometryData["faceRange"][range];
802
1270
  const rangeEnd = geometryData["faceRange"][range + 1];
803
1271
  for (let i = rangeStart; i <= rangeEnd; i++) {
804
- customAttributes.featureIndex[i * 3] = curIndex;
805
- customAttributes.featureIndex[i * 3 + 1] = curIndex;
806
- customAttributes.featureIndex[i * 3 + 2] = curIndex;
1272
+ featureIndex[i * 3] = curIndex;
1273
+ featureIndex[i * 3 + 1] = curIndex;
1274
+ featureIndex[i * 3 + 2] = curIndex;
1275
+ }
1276
+ }
1277
+ }
1278
+ if (parameters.calculateNormals) {
1279
+ const data = generateNormals(
1280
+ geometryData.vertexCount,
1281
+ geometryData.indices,
1282
+ geometryData.positions,
1283
+ geometryData.normals,
1284
+ geometryData.uv0s,
1285
+ geometryData.colors,
1286
+ featureIndex
1287
+ );
1288
+ if (defined_default(data.normals)) {
1289
+ geometryData.normals = data.normals;
1290
+ if (defined_default(data.vertexCount)) {
1291
+ geometryData.vertexCount = data.vertexCount;
1292
+ geometryData.indices = data.indices;
1293
+ geometryData.positions = data.positions;
1294
+ geometryData.uv0s = data.uv0s;
1295
+ geometryData.colors = data.colors;
1296
+ featureIndex = data.featureIndex;
807
1297
  }
808
1298
  }
809
1299
  }
1300
+ const meshData = generateGltfBuffer(
1301
+ geometryData.vertexCount,
1302
+ geometryData.indices,
1303
+ geometryData.positions,
1304
+ geometryData.normals,
1305
+ geometryData.uv0s,
1306
+ geometryData.colors,
1307
+ featureIndex,
1308
+ parameters
1309
+ );
1310
+ const customAttributes = {
1311
+ positions: geometryData.positions,
1312
+ indices: geometryData.indices,
1313
+ featureIndex,
1314
+ sourceURL: parameters.url,
1315
+ cartesianCenter: parameters.cartesianCenter,
1316
+ parentRotation: parameters.parentRotation
1317
+ };
810
1318
  meshData._customAttributes = customAttributes;
811
1319
  const results = {
812
1320
  meshData