@vcmap/ui 5.0.0-rc.29 → 5.0.0-rc.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/buildHelpers.js +4 -3
- package/config/base.config.json +5 -4
- package/config/dev.config.json +8 -0
- package/config/graphFeatureInfo.config.json +1 -1
- package/config/projects.config.json +2 -2
- package/dist/assets/cesium/ThirdParty/Workers/basis_transcoder.js +1 -1
- package/dist/assets/cesium/Workers/chunk-227AJNOA.js +59 -0
- package/dist/assets/cesium/Workers/chunk-2R5O53JW.js +157 -0
- package/dist/assets/cesium/Workers/chunk-34YUDLRP.js +781 -0
- package/dist/assets/cesium/Workers/chunk-3W63OHNJ.js +100 -0
- package/dist/assets/cesium/Workers/chunk-4MFFIWUA.js +163 -0
- package/dist/assets/cesium/Workers/chunk-66QLLS45.js +218 -0
- package/dist/assets/cesium/Workers/chunk-6BTKZDRG.js +77 -0
- package/dist/assets/cesium/Workers/chunk-A4JVFBQ3.js +101 -0
- package/dist/assets/cesium/Workers/chunk-ABADGKYE.js +58 -0
- package/dist/assets/cesium/Workers/chunk-AFFLIKOH.js +353 -0
- package/dist/assets/cesium/Workers/chunk-AHKEZ2OE.js +629 -0
- package/dist/assets/cesium/Workers/chunk-C3SXRKRW.js +476 -0
- package/dist/assets/cesium/Workers/chunk-CCFQRR6D.js +55 -0
- package/dist/assets/cesium/Workers/chunk-CHHNOC2C.js +1860 -0
- package/dist/assets/cesium/Workers/chunk-CTELOFLA.js +196 -0
- package/dist/assets/cesium/Workers/chunk-DUHWWBQQ.js +3273 -0
- package/dist/assets/cesium/Workers/chunk-EW2GWJYB.js +44 -0
- package/dist/assets/cesium/Workers/chunk-GLZBE3ML.js +421 -0
- package/dist/assets/cesium/Workers/chunk-HARLBUOL.js +236 -0
- package/dist/assets/cesium/Workers/chunk-HQF437NJ.js +117 -0
- package/dist/assets/cesium/Workers/chunk-IPA4EACJ.js +368 -0
- package/dist/assets/cesium/Workers/chunk-J3JY6I2C.js +1009 -0
- package/dist/assets/cesium/Workers/chunk-JB2LWGH4.js +390 -0
- package/dist/assets/cesium/Workers/chunk-JS3AW5BK.js +634 -0
- package/dist/assets/cesium/Workers/chunk-K36FEYS7.js +452 -0
- package/dist/assets/cesium/Workers/chunk-KD4Y7CZL.js +400 -0
- package/dist/assets/cesium/Workers/chunk-KTJSNCK4.js +842 -0
- package/dist/assets/cesium/Workers/chunk-LLUNNUJV.js +258 -0
- package/dist/assets/cesium/Workers/{package.js → chunk-MPAZH4BF.js} +13 -2
- package/dist/assets/cesium/Workers/chunk-MYZB7C4T.js +1258 -0
- package/dist/assets/cesium/Workers/chunk-N3JIFFX2.js +501 -0
- package/dist/assets/cesium/Workers/chunk-O5AMBQ36.js +430 -0
- package/dist/assets/cesium/Workers/chunk-OAVNIRB4.js +124 -0
- package/dist/assets/cesium/Workers/chunk-OYFCF4PL.js +171 -0
- package/dist/assets/cesium/Workers/chunk-OZJDGN5F.js +1477 -0
- package/dist/assets/cesium/Workers/chunk-PCJWUS4M.js +2041 -0
- package/dist/assets/cesium/Workers/chunk-PFQBCKBM.js +8644 -0
- package/dist/assets/cesium/Workers/chunk-QIKODV5G.js +305 -0
- package/dist/assets/cesium/Workers/chunk-QJ3DFBH3.js +73 -0
- package/dist/assets/cesium/Workers/chunk-QMEMZIJI.js +138 -0
- package/dist/assets/cesium/Workers/chunk-QT3MPEMI.js +102 -0
- package/dist/assets/cesium/Workers/chunk-RP2A7BR5.js +289 -0
- package/dist/assets/cesium/Workers/chunk-RW6LU2CJ.js +138 -0
- package/dist/assets/cesium/Workers/chunk-TFC6TZ3S.js +757 -0
- package/dist/assets/cesium/Workers/chunk-V3NGATMV.js +693 -0
- package/dist/assets/cesium/Workers/chunk-VLGOATD6.js +1075 -0
- package/dist/assets/cesium/Workers/chunk-WXTV4ATB.js +39 -0
- package/dist/assets/cesium/Workers/chunk-X4SU25DT.js +302 -0
- package/dist/assets/cesium/Workers/chunk-XTY7B2N6.js +2716 -0
- package/dist/assets/cesium/Workers/chunk-XY7MGBKC.js +513 -0
- package/dist/assets/cesium/Workers/chunk-Z24VKNDO.js +834 -0
- package/dist/assets/cesium/Workers/chunk-ZA25DG4Y.js +684 -0
- package/dist/assets/cesium/Workers/chunk-ZFOBYDGF.js +73 -0
- package/dist/assets/cesium/Workers/combineGeometry.js +65 -15
- package/dist/assets/cesium/Workers/createBoxGeometry.js +55 -10
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +231 -310
- package/dist/assets/cesium/Workers/createCircleGeometry.js +185 -202
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +141 -155
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +477 -557
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +218 -230
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +1162 -1307
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +533 -569
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +57 -10
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +224 -258
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +68 -12
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +61 -12
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +56 -10
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +58 -13
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +55 -10
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +226 -243
- package/dist/assets/cesium/Workers/createGeometry.js +143 -48
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1484 -2011
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +216 -243
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +121 -113
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +1041 -1327
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +516 -657
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +471 -547
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +352 -384
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +271 -295
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +1128 -1331
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +445 -500
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +381 -440
- package/dist/assets/cesium/Workers/createSphereGeometry.js +112 -118
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +112 -121
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +32 -127
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +462 -505
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +377 -436
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +110 -77
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +369 -391
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +252 -244
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +543 -615
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +2244 -2677
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +682 -926
- package/dist/assets/cesium/Workers/createWallGeometry.js +459 -593
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +324 -419
- package/dist/assets/cesium/Workers/decodeDraco.js +327 -347
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +2530 -3567
- package/dist/assets/cesium/Workers/decodeI3S.js +765 -970
- package/dist/assets/cesium/Workers/transcodeKTX2.js +3353 -1464
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +3 -4
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +748 -953
- package/dist/assets/{cesium.16590b.js → cesium.77d0f7.js} +8915 -13165
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.74da2a.js → core.720589.js} +3421 -3365
- package/dist/assets/core.js +1 -1
- package/dist/assets/index-dd539204.js +1 -0
- package/dist/assets/{ol.50a512.js → ol.e48649.js} +4 -4
- package/dist/assets/ol.js +1 -1
- package/dist/assets/{ui.d3054c.css → ui.50452a.css} +2 -2
- package/dist/assets/{ui.d3054c.js → ui.50452a.js} +5312 -4776
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.946bd8.js → vuetify.f0a769.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +27 -23
- package/index.html +23 -22
- package/index.js +6 -0
- package/package.json +5 -5
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +37 -1
- package/plugins/@vcmap-show-case/form-inputs-example/index.js +3 -0
- package/plugins/@vcmap-show-case/form-inputs-example/validation.js +11 -0
- package/plugins/@vcmap-show-case/plugin-editors/PluginEditors.vue +119 -0
- package/plugins/@vcmap-show-case/plugin-editors/index.js +41 -0
- package/plugins/@vcmap-show-case/plugin-editors/package.json +5 -0
- package/plugins/{@vcmap → @vcmap-show-case}/project-selector/ProjectSelectorComponent.vue +1 -1
- package/plugins/{@vcmap → @vcmap-show-case}/project-selector/config.json +2 -2
- package/plugins/{@vcmap → @vcmap-show-case}/project-selector/package.json +1 -1
- package/plugins/{@vcmap → @vcmap-show-case}/simple-graph/package.json +1 -1
- package/plugins/@vcmap-show-case/style-input-example/styleExample.vue +0 -1
- package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +1 -1
- package/plugins/{@vcmap → @vcmap-show-case}/theme-changer/ThemeChangerComponent.vue +1 -1
- package/plugins/{@vcmap → @vcmap-show-case}/theme-changer/config.json +2 -2
- package/plugins/{@vcmap → @vcmap-show-case}/theme-changer/package.json +1 -1
- package/plugins/@vcmap-show-case/vector-properties-example/index.js +40 -0
- package/plugins/@vcmap-show-case/vector-properties-example/package.json +5 -0
- package/plugins/@vcmap-show-case/vector-properties-example/vectorPropertiesExample.vue +128 -0
- package/plugins/package.json +6 -2
- package/src/application/VcsAttributions.vue +27 -20
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue +290 -0
- package/src/components/form-inputs-controls/VcsSlider.vue +1 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +9 -3
- package/src/components/icons/2DAreaIcon.vue +2 -17
- package/src/components/icons/2DDistanceIcon.vue +0 -3
- package/src/components/icons/3DAreaIcon.vue +2 -17
- package/src/components/icons/3DDistanceIcon.vue +0 -3
- package/src/components/icons/3DHeightIcon.vue +0 -3
- package/src/components/icons/AngleIcon.vue +0 -1
- package/src/components/icons/AssociationsIcon.vue +1 -3
- package/src/components/icons/AxisIcon.vue +0 -4
- package/src/components/icons/BoundingBoxIcon.vue +1 -4
- package/src/components/icons/CheckboxIcon.vue +0 -2
- package/src/components/icons/CheckboxIndeterminateIcon.vue +1 -5
- package/src/components/icons/CircleIcon.vue +1 -6
- package/src/components/icons/ClippingHorizontalIcon.vue +0 -1
- package/src/components/icons/ClippingIcon.vue +0 -1
- package/src/components/icons/ClippingVerticalIcon.vue +0 -1
- package/src/components/icons/ColorPickerIcon.vue +0 -1
- package/src/components/icons/ColorSwatchIcon.vue +0 -2
- package/src/components/icons/CommentIcon.vue +0 -1
- package/src/components/icons/CompassIcon.vue +0 -2
- package/src/components/icons/ComponentsIcon.vue +0 -1
- package/src/components/icons/ConeIcon.vue +1 -4
- package/src/components/icons/DimensionsHouseIcon.vue +0 -2
- package/src/components/icons/EditIcon.vue +0 -1
- package/src/components/icons/EditVerticesIcon.vue +0 -4
- package/src/components/icons/ElevationProfileIcon.vue +1 -13
- package/src/components/icons/ExportAreaIcon.vue +0 -1
- package/src/components/icons/ExportFlightIcon.vue +0 -1
- package/src/components/icons/ExportIcon.vue +12 -8
- package/src/components/icons/ExternalLinkIcon.vue +0 -2
- package/src/components/icons/FastForwardIcon.vue +0 -1
- package/src/components/icons/FilterIcon.vue +0 -1
- package/src/components/icons/GlobeNatureIcon.vue +0 -3
- package/src/components/icons/GroundIcon.vue +0 -1
- package/src/components/icons/HealthCareIndustriesIcon.vue +1 -11
- package/src/components/icons/HideIcon.vue +0 -1
- package/src/components/icons/HomePointIcon.vue +0 -1
- package/src/components/icons/HospitalsIcon.vue +1 -20
- package/src/components/icons/HouseIcon.vue +3 -13
- package/src/components/icons/ImportIcon.vue +6 -14
- package/src/components/icons/InfoIcon.vue +0 -2
- package/src/components/icons/KebabIcon.vue +1 -9
- package/src/components/icons/LabelIcon.vue +0 -2
- package/src/components/icons/LayersIcon.vue +1 -9
- package/src/components/icons/LegendIcon.vue +0 -1
- package/src/components/icons/LineIcon.vue +0 -2
- package/src/components/icons/LinkIcon.vue +0 -1
- package/src/components/icons/LogoutIcon.vue +0 -1
- package/src/components/icons/MapIcon.vue +0 -2
- package/src/components/icons/MenuIcon.vue +1 -5
- package/src/components/icons/MinusIcon.vue +0 -2
- package/src/components/icons/ObjectSelectIcon.vue +0 -2
- package/src/components/icons/ObliqueViewIcon.vue +0 -1
- package/src/components/icons/PdfIcon.vue +0 -1
- package/src/components/icons/PedestrianIcon.vue +0 -1
- package/src/components/icons/PenIcon.vue +0 -1
- package/src/components/icons/PlayCircleIcon.vue +1 -8
- package/src/components/icons/PlusIcon.vue +0 -2
- package/src/components/icons/PoiIcon.vue +0 -1
- package/src/components/icons/PointIcon.vue +2 -6
- package/src/components/icons/PointSelectIcon.vue +0 -1
- package/src/components/icons/PresentationModeIcon.vue +0 -1
- package/src/components/icons/ProgressIcon.vue +1 -1
- package/src/components/icons/QueryIcon.vue +0 -1
- package/src/components/icons/RectangleIcon.vue +1 -6
- package/src/components/icons/ReturnIcon.vue +0 -1
- package/src/components/icons/RewindIcon.vue +0 -1
- package/src/components/icons/RotateLeftIcon.vue +0 -1
- package/src/components/icons/RotateRightIcon.vue +0 -1
- package/src/components/icons/ScreenshotIcon.vue +1 -6
- package/src/components/icons/SearchIcon.vue +0 -1
- package/src/components/icons/ShadowIcon.vue +0 -2
- package/src/components/icons/ShapesIcon.vue +1 -4
- package/src/components/icons/ShareIcon.vue +0 -1
- package/src/components/icons/SimpleCircleFilledIcon.vue +0 -1
- package/src/components/icons/SimpleCircleHalfFilledIcon.vue +0 -1
- package/src/components/icons/SimpleCircleOutlinedIcon.vue +1 -7
- package/src/components/icons/SkipPreviousIcon.vue +1 -6
- package/src/components/icons/SplitViewIcon.vue +0 -1
- package/src/components/icons/TextStyleIcon.vue +0 -3
- package/src/components/icons/ThreeDimensionsIcon.vue +0 -1
- package/src/components/icons/ToolsIcon.vue +0 -1
- package/src/components/icons/TouchIcon.vue +0 -1
- package/src/components/icons/TriangleIcon.vue +0 -3
- package/src/components/icons/TwoDimensionsIcon.vue +0 -2
- package/src/components/icons/UploadIcon.vue +0 -1
- package/src/components/icons/UserProfileIcon.vue +0 -1
- package/src/components/icons/UserShareIcon.vue +0 -1
- package/src/components/icons/ViewpointFlightIcon.vue +0 -1
- package/src/components/icons/ViewpointIcon.vue +0 -1
- package/src/components/icons/Viewshed360Icon.vue +0 -1
- package/src/components/icons/ViewshedConeIcon.vue +0 -1
- package/src/components/icons/ViewshedIcon.vue +0 -1
- package/src/components/icons/WalkingIcon.vue +0 -1
- package/src/components/icons/WallIcon.vue +1 -4
- package/src/components/icons/WandIcon.vue +22 -70
- package/src/components/lists/VcsList.vue +18 -12
- package/src/components/plugins/AbstractConfigEditor.vue +84 -0
- package/src/components/style/VcsImageSelector.vue +6 -5
- package/src/components/style/VcsTextSelector.vue +1 -1
- package/src/components/tables/VcsDataTable.vue +1 -1
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +780 -0
- package/src/components/vector-properties/composables.js +93 -0
- package/src/contentTree/contentTreeCollection.js +30 -9
- package/src/i18n/de.js +41 -7
- package/src/i18n/en.js +39 -5
- package/src/i18n/i18nCollection.js +19 -65
- package/src/manager/buttonManager.js +4 -0
- package/src/manager/collectionManager/collectionComponent.js +1 -1
- package/src/manager/contextMenu/contextMenuManager.js +2 -0
- package/src/pluginHelper.js +57 -17
- package/src/vcsUiApp.js +25 -30
- package/src/vuePlugins/i18n.js +0 -8
- package/dist/assets/cesium/ThirdParty/Workers/draco_decoder_nodejs.js +0 -117
- package/dist/assets/cesium/Workers/ArcType-2d9abbbc.js +0 -37
- package/dist/assets/cesium/Workers/AttributeCompression-f9f6c717.js +0 -716
- package/dist/assets/cesium/Workers/AxisAlignedBoundingBox-4140c51f.js +0 -258
- package/dist/assets/cesium/Workers/BoundingRectangle-c714b156.js +0 -369
- package/dist/assets/cesium/Workers/BoxGeometry-6f3da43d.js +0 -884
- package/dist/assets/cesium/Workers/Check-6ede7e26.js +0 -290
- package/dist/assets/cesium/Workers/Color-8a565ff2.js +0 -2262
- package/dist/assets/cesium/Workers/ComponentDatatype-cf1fa08e.js +0 -341
- package/dist/assets/cesium/Workers/CoplanarPolygonGeometryLibrary-4b4d4096.js +0 -132
- package/dist/assets/cesium/Workers/CorridorGeometryLibrary-7b94502b.js +0 -498
- package/dist/assets/cesium/Workers/CylinderGeometry-ca070b87.js +0 -467
- package/dist/assets/cesium/Workers/CylinderGeometryLibrary-7bf291b4.js +0 -63
- package/dist/assets/cesium/Workers/EllipseGeometry-122e51fa.js +0 -1304
- package/dist/assets/cesium/Workers/EllipseGeometryLibrary-4d326efc.js +0 -366
- package/dist/assets/cesium/Workers/EllipseOutlineGeometry-16cc2bd7.js +0 -443
- package/dist/assets/cesium/Workers/EllipsoidGeodesic-5b3623dc.js +0 -520
- package/dist/assets/cesium/Workers/EllipsoidGeometry-cb148ca2.js +0 -637
- package/dist/assets/cesium/Workers/EllipsoidOutlineGeometry-0fa10c79.js +0 -454
- package/dist/assets/cesium/Workers/EllipsoidRhumbLine-ef872433.js +0 -741
- package/dist/assets/cesium/Workers/EllipsoidTangentPlane-6dd1b7af.js +0 -373
- package/dist/assets/cesium/Workers/EncodedCartesian3-57415c8a.js +0 -171
- package/dist/assets/cesium/Workers/FrustumGeometry-ee73037c.js +0 -2540
- package/dist/assets/cesium/Workers/GeometryAttribute-ff5b4fb1.js +0 -619
- package/dist/assets/cesium/Workers/GeometryAttributes-ad136444.js +0 -91
- package/dist/assets/cesium/Workers/GeometryInstance-34d9e21e.js +0 -121
- package/dist/assets/cesium/Workers/GeometryOffsetAttribute-9ad0019c.js +0 -16
- package/dist/assets/cesium/Workers/GeometryPipeline-1f8fbf05.js +0 -3690
- package/dist/assets/cesium/Workers/IndexDatatype-2643aa47.js +0 -200
- package/dist/assets/cesium/Workers/IntersectionTests-70d39ba9.js +0 -1836
- package/dist/assets/cesium/Workers/Math-0a2ac845.js +0 -1340
- package/dist/assets/cesium/Workers/Matrix2-e1298525.js +0 -7086
- package/dist/assets/cesium/Workers/Matrix3-41c58dde.js +0 -4283
- package/dist/assets/cesium/Workers/OrientedBoundingBox-159cf1d6.js +0 -1259
- package/dist/assets/cesium/Workers/Plane-4c3d403b.js +0 -309
- package/dist/assets/cesium/Workers/PolygonGeometryLibrary-076a5d25.js +0 -1074
- package/dist/assets/cesium/Workers/PolygonPipeline-b9f2810a.js +0 -1344
- package/dist/assets/cesium/Workers/PolylinePipeline-639192e0.js +0 -573
- package/dist/assets/cesium/Workers/PolylineVolumeGeometryLibrary-b73549fb.js +0 -781
- package/dist/assets/cesium/Workers/PrimitivePipeline-10ede1b6.js +0 -966
- package/dist/assets/cesium/Workers/RectangleGeometryLibrary-c35a7356.js +0 -280
- package/dist/assets/cesium/Workers/RuntimeError-ef395448.js +0 -68
- package/dist/assets/cesium/Workers/TerrainEncoding-668d242f.js +0 -1227
- package/dist/assets/cesium/Workers/Transforms-a2a85221.js +0 -14712
- package/dist/assets/cesium/Workers/VertexFormat-030f11ff.js +0 -312
- package/dist/assets/cesium/Workers/WallGeometryLibrary-1938bf0d.js +0 -211
- package/dist/assets/cesium/Workers/WebGLConstants-0b1ce7ba.js +0 -620
- package/dist/assets/cesium/Workers/WebMercatorProjection-13ed1a6e.js +0 -151
- package/dist/assets/cesium/Workers/arrayRemoveDuplicates-d2061e85.js +0 -129
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +0 -1363
- package/dist/assets/cesium/Workers/combine-d9581036.js +0 -82
- package/dist/assets/cesium/Workers/defaultValue-fe22d8c0.js +0 -51
- package/dist/assets/index-cb070eff.js +0 -1
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +0 -76
- package/plugins/@vcmap/create-link/index.js +0 -95
- package/plugins/@vcmap/create-link/package.json +0 -6
- package/plugins/@vcmap/search-nominatim/LICENSE.md +0 -13
- package/plugins/@vcmap/search-nominatim/README.md +0 -3
- package/plugins/@vcmap/search-nominatim/config.json +0 -3
- package/plugins/@vcmap/search-nominatim/index.js +0 -29
- package/plugins/@vcmap/search-nominatim/nominatim.js +0 -175
- package/plugins/@vcmap/search-nominatim/package.json +0 -9
- /package/dist/assets/{vue.30740e.js → vue.5d696e.js} +0 -0
- /package/dist/assets/{vuetify.946bd8.css → vuetify.f0a769.css} +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/project-selector/ModulesListComponent.vue +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/project-selector/README.md +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/project-selector/de.json +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/project-selector/en.json +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/project-selector/index.js +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/simple-graph/README.md +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/simple-graph/SimpleGraphComponent.vue +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/simple-graph/index.js +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/simple-graph/simpleGraphView.js +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/theme-changer/README.md +0 -0
- /package/plugins/{@vcmap → @vcmap-show-case}/theme-changer/index.js +0 -0
@@ -1,1040 +1,835 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Cesium - https://github.com/CesiumGS/cesium
|
4
|
+
* Version 1.109.3
|
5
|
+
*
|
6
|
+
* Copyright 2011-2022 Cesium Contributors
|
7
|
+
*
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
* you may not use this file except in compliance with the License.
|
10
|
+
* You may obtain a copy of the License at
|
11
|
+
*
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
*
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
* See the License for the specific language governing permissions and
|
18
|
+
* limitations under the License.
|
19
|
+
*
|
20
|
+
* Columbus View (Pat. Pend.)
|
21
|
+
*
|
22
|
+
* Portions licensed separately.
|
23
|
+
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
|
24
|
+
*/
|
25
|
+
|
26
|
+
import {
|
27
|
+
require_draco_decoder_nodejs
|
28
|
+
} from "./chunk-CHHNOC2C.js";
|
29
|
+
import {
|
30
|
+
createTaskProcessorWorker_default
|
31
|
+
} from "./chunk-A4JVFBQ3.js";
|
32
|
+
import {
|
33
|
+
WebMercatorProjection_default
|
34
|
+
} from "./chunk-HQF437NJ.js";
|
35
|
+
import {
|
36
|
+
Cartesian3_default,
|
37
|
+
Cartographic_default,
|
38
|
+
Ellipsoid_default,
|
39
|
+
Matrix3_default
|
40
|
+
} from "./chunk-PCJWUS4M.js";
|
41
|
+
import {
|
42
|
+
Math_default
|
43
|
+
} from "./chunk-N3JIFFX2.js";
|
44
|
+
import "./chunk-WXTV4ATB.js";
|
45
|
+
import "./chunk-4MFFIWUA.js";
|
46
|
+
import {
|
47
|
+
__toESM,
|
48
|
+
defined_default
|
49
|
+
} from "./chunk-6BTKZDRG.js";
|
50
|
+
|
51
|
+
// packages/engine/Source/Workers/decodeI3S.js
|
52
|
+
var import_draco_decoder_nodejs = __toESM(require_draco_decoder_nodejs(), 1);
|
53
|
+
var draco;
|
54
|
+
function bilinearInterpolate(tx, ty, h00, h10, h01, h11) {
|
55
|
+
const a = h00 * (1 - tx) + h10 * tx;
|
56
|
+
const b = h01 * (1 - tx) + h11 * tx;
|
57
|
+
return a * (1 - ty) + b * ty;
|
58
|
+
}
|
59
|
+
function sampleMap(u, v, width, data) {
|
60
|
+
const address = u + v * width;
|
61
|
+
return data[address];
|
62
|
+
}
|
63
|
+
function sampleGeoid(sampleX, sampleY, geoidData) {
|
64
|
+
const extent = geoidData.nativeExtent;
|
65
|
+
let x = (sampleX - extent.west) / (extent.east - extent.west) * (geoidData.width - 1);
|
66
|
+
let y = (sampleY - extent.south) / (extent.north - extent.south) * (geoidData.height - 1);
|
67
|
+
const xi = Math.floor(x);
|
68
|
+
let yi = Math.floor(y);
|
69
|
+
x -= xi;
|
70
|
+
y -= yi;
|
71
|
+
const xNext = xi < geoidData.width ? xi + 1 : xi;
|
72
|
+
let yNext = yi < geoidData.height ? yi + 1 : yi;
|
73
|
+
yi = geoidData.height - 1 - yi;
|
74
|
+
yNext = geoidData.height - 1 - yNext;
|
75
|
+
const h00 = sampleMap(xi, yi, geoidData.width, geoidData.buffer);
|
76
|
+
const h10 = sampleMap(xNext, yi, geoidData.width, geoidData.buffer);
|
77
|
+
const h01 = sampleMap(xi, yNext, geoidData.width, geoidData.buffer);
|
78
|
+
const h11 = sampleMap(xNext, yNext, geoidData.width, geoidData.buffer);
|
79
|
+
let finalHeight = bilinearInterpolate(x, y, h00, h10, h01, h11);
|
80
|
+
finalHeight = finalHeight * geoidData.scale + geoidData.offset;
|
81
|
+
return finalHeight;
|
82
|
+
}
|
83
|
+
function sampleGeoidFromList(lon, lat, geoidDataList) {
|
84
|
+
for (let i = 0; i < geoidDataList.length; i++) {
|
85
|
+
const localExtent = geoidDataList[i].nativeExtent;
|
86
|
+
let localPt = new Cartesian3_default();
|
87
|
+
if (geoidDataList[i].projectionType === "WebMercator") {
|
88
|
+
const radii = geoidDataList[i].projection._ellipsoid._radii;
|
89
|
+
const webMercatorProj = new WebMercatorProjection_default(
|
90
|
+
new Ellipsoid_default(radii.x, radii.y, radii.z)
|
91
|
+
);
|
92
|
+
localPt = webMercatorProj.project(new Cartographic_default(lon, lat, 0));
|
93
|
+
} else {
|
94
|
+
localPt.x = lon;
|
95
|
+
localPt.y = lat;
|
72
96
|
}
|
73
|
-
|
74
|
-
|
75
|
-
}
|
76
|
-
|
77
|
-
function orthometricToEllipsoidal(
|
78
|
-
vertexCount,
|
79
|
-
position,
|
80
|
-
scale_x,
|
81
|
-
scale_y,
|
82
|
-
center,
|
83
|
-
geoidDataList,
|
84
|
-
fast
|
85
|
-
) {
|
86
|
-
if (fast) {
|
87
|
-
// Geometry is already relative to the tile origin which has already been shifted to account for geoid height
|
88
|
-
// Nothing to do here
|
89
|
-
return;
|
97
|
+
if (localPt.x > localExtent.west && localPt.x < localExtent.east && localPt.y > localExtent.south && localPt.y < localExtent.north) {
|
98
|
+
return sampleGeoid(localPt.x, localPt.y, geoidDataList[i]);
|
90
99
|
}
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
100
|
+
}
|
101
|
+
return 0;
|
102
|
+
}
|
103
|
+
function orthometricToEllipsoidal(vertexCount, position, scale_x, scale_y, center, geoidDataList, fast) {
|
104
|
+
if (fast) {
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
const centerHeight = sampleGeoidFromList(
|
108
|
+
center.longitude,
|
109
|
+
center.latitude,
|
110
|
+
geoidDataList
|
111
|
+
);
|
112
|
+
for (let i = 0; i < vertexCount; ++i) {
|
113
|
+
const height = sampleGeoidFromList(
|
114
|
+
center.longitude + Math_default.toRadians(scale_x * position[i * 3]),
|
115
|
+
center.latitude + Math_default.toRadians(scale_y * position[i * 3 + 1]),
|
96
116
|
geoidDataList
|
97
117
|
);
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
118
|
+
position[i * 3 + 2] += height - centerHeight;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
function transformToLocal(vertexCount, positions, normals, cartographicCenter, cartesianCenter, parentRotation, ellipsoidRadiiSquare, scale_x, scale_y) {
|
122
|
+
if (vertexCount === 0 || !defined_default(positions) || positions.length === 0) {
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
const ellipsoid = new Ellipsoid_default(
|
126
|
+
Math.sqrt(ellipsoidRadiiSquare.x),
|
127
|
+
Math.sqrt(ellipsoidRadiiSquare.y),
|
128
|
+
Math.sqrt(ellipsoidRadiiSquare.z)
|
129
|
+
);
|
130
|
+
for (let i = 0; i < vertexCount; ++i) {
|
131
|
+
const indexOffset = i * 3;
|
132
|
+
const indexOffset1 = indexOffset + 1;
|
133
|
+
const indexOffset2 = indexOffset + 2;
|
134
|
+
const cartographic = new Cartographic_default();
|
135
|
+
cartographic.longitude = cartographicCenter.longitude + Math_default.toRadians(scale_x * positions[indexOffset]);
|
136
|
+
cartographic.latitude = cartographicCenter.latitude + Math_default.toRadians(scale_y * positions[indexOffset1]);
|
137
|
+
cartographic.height = cartographicCenter.height + positions[indexOffset2];
|
138
|
+
const position = {};
|
139
|
+
ellipsoid.cartographicToCartesian(cartographic, position);
|
140
|
+
position.x -= cartesianCenter.x;
|
141
|
+
position.y -= cartesianCenter.y;
|
142
|
+
position.z -= cartesianCenter.z;
|
143
|
+
const rotatedPosition = {};
|
144
|
+
Matrix3_default.multiplyByVector(parentRotation, position, rotatedPosition);
|
145
|
+
positions[indexOffset] = rotatedPosition.x;
|
146
|
+
positions[indexOffset1] = rotatedPosition.y;
|
147
|
+
positions[indexOffset2] = rotatedPosition.z;
|
148
|
+
if (defined_default(normals)) {
|
149
|
+
const normal = new Cartesian3_default(
|
150
|
+
normals[indexOffset],
|
151
|
+
normals[indexOffset1],
|
152
|
+
normals[indexOffset2]
|
104
153
|
);
|
105
|
-
|
154
|
+
const rotatedNormal = {};
|
155
|
+
Matrix3_default.multiplyByVector(parentRotation, normal, rotatedNormal);
|
156
|
+
normals[indexOffset] = rotatedNormal.x;
|
157
|
+
normals[indexOffset1] = rotatedNormal.y;
|
158
|
+
normals[indexOffset2] = rotatedNormal.z;
|
106
159
|
}
|
107
160
|
}
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
) {
|
120
|
-
if (vertexCount === 0 || !defaultValue.defined(positions) || positions.length === 0) {
|
121
|
-
return;
|
122
|
-
}
|
123
|
-
|
124
|
-
const ellipsoid = new Matrix3.Ellipsoid(
|
125
|
-
Math.sqrt(ellipsoidRadiiSquare.x),
|
126
|
-
Math.sqrt(ellipsoidRadiiSquare.y),
|
127
|
-
Math.sqrt(ellipsoidRadiiSquare.z)
|
128
|
-
);
|
129
|
-
for (let i = 0; i < vertexCount; ++i) {
|
130
|
-
const indexOffset = i * 3;
|
131
|
-
const indexOffset1 = indexOffset + 1;
|
132
|
-
const indexOffset2 = indexOffset + 2;
|
133
|
-
|
134
|
-
const cartographic = new Matrix3.Cartographic();
|
135
|
-
cartographic.longitude =
|
136
|
-
cartographicCenter.longitude +
|
137
|
-
Math$1.CesiumMath.toRadians(scale_x * positions[indexOffset]);
|
138
|
-
|
139
|
-
cartographic.latitude =
|
140
|
-
cartographicCenter.latitude +
|
141
|
-
Math$1.CesiumMath.toRadians(scale_y * positions[indexOffset1]);
|
142
|
-
cartographic.height = cartographicCenter.height + positions[indexOffset2];
|
143
|
-
|
144
|
-
const position = {};
|
145
|
-
ellipsoid.cartographicToCartesian(cartographic, position);
|
146
|
-
|
147
|
-
position.x -= cartesianCenter.x;
|
148
|
-
position.y -= cartesianCenter.y;
|
149
|
-
position.z -= cartesianCenter.z;
|
150
|
-
|
151
|
-
const rotatedPosition = {};
|
152
|
-
Matrix3.Matrix3.multiplyByVector(parentRotation, position, rotatedPosition);
|
153
|
-
|
154
|
-
positions[indexOffset] = rotatedPosition.x;
|
155
|
-
positions[indexOffset1] = rotatedPosition.y;
|
156
|
-
positions[indexOffset2] = rotatedPosition.z;
|
157
|
-
|
158
|
-
if (defaultValue.defined(normals)) {
|
159
|
-
const normal = new Matrix3.Cartesian3(
|
160
|
-
normals[indexOffset],
|
161
|
-
normals[indexOffset1],
|
162
|
-
normals[indexOffset2]
|
163
|
-
);
|
164
|
-
|
165
|
-
const rotatedNormal = {};
|
166
|
-
Matrix3.Matrix3.multiplyByVector(parentRotation, normal, rotatedNormal);
|
167
|
-
|
168
|
-
// TODO: check if normals are Z-UP or Y-UP and flip y and z
|
169
|
-
normals[indexOffset] = rotatedNormal.x;
|
170
|
-
normals[indexOffset1] = rotatedNormal.y;
|
171
|
-
normals[indexOffset2] = rotatedNormal.z;
|
172
|
-
}
|
173
|
-
}
|
161
|
+
}
|
162
|
+
function cropUVs(vertexCount, uv0s, uvRegions) {
|
163
|
+
for (let vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex) {
|
164
|
+
const minU = uvRegions[vertexIndex * 4] / 65535;
|
165
|
+
const minV = uvRegions[vertexIndex * 4 + 1] / 65535;
|
166
|
+
const scaleU = (uvRegions[vertexIndex * 4 + 2] - uvRegions[vertexIndex * 4]) / 65535;
|
167
|
+
const scaleV = (uvRegions[vertexIndex * 4 + 3] - uvRegions[vertexIndex * 4 + 1]) / 65535;
|
168
|
+
uv0s[vertexIndex * 2] *= scaleU;
|
169
|
+
uv0s[vertexIndex * 2] += minU;
|
170
|
+
uv0s[vertexIndex * 2 + 1] *= scaleV;
|
171
|
+
uv0s[vertexIndex * 2 + 1] += minV;
|
174
172
|
}
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
uv0s[vertexIndex * 2] *= scaleU;
|
187
|
-
uv0s[vertexIndex * 2] += minU;
|
188
|
-
|
189
|
-
uv0s[vertexIndex * 2 + 1] *= scaleV;
|
190
|
-
uv0s[vertexIndex * 2 + 1] += minV;
|
191
|
-
}
|
173
|
+
}
|
174
|
+
function generateGltfBuffer(vertexCount, indices, positions, normals, uv0s, colors) {
|
175
|
+
if (vertexCount === 0 || !defined_default(positions) || positions.length === 0) {
|
176
|
+
return {
|
177
|
+
buffers: [],
|
178
|
+
bufferViews: [],
|
179
|
+
accessors: [],
|
180
|
+
meshes: [],
|
181
|
+
nodes: [],
|
182
|
+
nodesInScene: []
|
183
|
+
};
|
192
184
|
}
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
accessors: [],
|
207
|
-
meshes: [],
|
208
|
-
nodes: [],
|
209
|
-
nodesInScene: [],
|
210
|
-
};
|
185
|
+
const buffers = [];
|
186
|
+
const bufferViews = [];
|
187
|
+
const accessors = [];
|
188
|
+
const meshes = [];
|
189
|
+
const nodes = [];
|
190
|
+
const nodesInScene = [];
|
191
|
+
if (defined_default(indices)) {
|
192
|
+
vertexCount = indices.length;
|
193
|
+
}
|
194
|
+
const indexArray = new Uint32Array(vertexCount);
|
195
|
+
if (defined_default(indices)) {
|
196
|
+
for (let vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex) {
|
197
|
+
indexArray[vertexIndex] = indices[vertexIndex];
|
211
198
|
}
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
const accessors = [];
|
216
|
-
const meshes = [];
|
217
|
-
const nodes = [];
|
218
|
-
const nodesInScene = [];
|
219
|
-
|
220
|
-
// If we provide indices, then the vertex count is the length
|
221
|
-
// of that array, otherwise we assume non-indexed triangle
|
222
|
-
if (defaultValue.defined(indices)) {
|
223
|
-
vertexCount = indices.length;
|
199
|
+
} else {
|
200
|
+
for (let newVertexIndex = 0; newVertexIndex < vertexCount; ++newVertexIndex) {
|
201
|
+
indexArray[newVertexIndex] = newVertexIndex;
|
224
202
|
}
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
const positionsBlob = new Blob([meshPositions], {
|
254
|
-
type: "application/binary",
|
203
|
+
}
|
204
|
+
const indicesBlob = new Blob([indexArray], { type: "application/binary" });
|
205
|
+
const indicesURL = URL.createObjectURL(indicesBlob);
|
206
|
+
const endIndex = vertexCount;
|
207
|
+
const meshPositions = positions.subarray(0, endIndex * 3);
|
208
|
+
const positionsBlob = new Blob([meshPositions], {
|
209
|
+
type: "application/binary"
|
210
|
+
});
|
211
|
+
const positionsURL = URL.createObjectURL(positionsBlob);
|
212
|
+
let minX = Number.POSITIVE_INFINITY;
|
213
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
214
|
+
let minY = Number.POSITIVE_INFINITY;
|
215
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
216
|
+
let minZ = Number.POSITIVE_INFINITY;
|
217
|
+
let maxZ = Number.NEGATIVE_INFINITY;
|
218
|
+
for (let i = 0; i < meshPositions.length / 3; i++) {
|
219
|
+
minX = Math.min(minX, meshPositions[i * 3 + 0]);
|
220
|
+
maxX = Math.max(maxX, meshPositions[i * 3 + 0]);
|
221
|
+
minY = Math.min(minY, meshPositions[i * 3 + 1]);
|
222
|
+
maxY = Math.max(maxY, meshPositions[i * 3 + 1]);
|
223
|
+
minZ = Math.min(minZ, meshPositions[i * 3 + 2]);
|
224
|
+
maxZ = Math.max(maxZ, meshPositions[i * 3 + 2]);
|
225
|
+
}
|
226
|
+
const meshNormals = normals ? normals.subarray(0, endIndex * 3) : void 0;
|
227
|
+
let normalsURL;
|
228
|
+
if (defined_default(meshNormals)) {
|
229
|
+
const normalsBlob = new Blob([meshNormals], {
|
230
|
+
type: "application/binary"
|
255
231
|
});
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
const posIndex = 0;
|
305
|
-
let normalIndex = 0;
|
306
|
-
let uv0Index = 0;
|
307
|
-
let colorIndex = 0;
|
308
|
-
let indicesIndex = 0;
|
309
|
-
|
310
|
-
let currentIndex = posIndex;
|
311
|
-
|
312
|
-
const attributes = {};
|
313
|
-
|
314
|
-
// POSITIONS
|
315
|
-
attributes.POSITION = posIndex;
|
232
|
+
normalsURL = URL.createObjectURL(normalsBlob);
|
233
|
+
}
|
234
|
+
const meshUv0s = uv0s ? uv0s.subarray(0, endIndex * 2) : void 0;
|
235
|
+
let uv0URL;
|
236
|
+
if (defined_default(meshUv0s)) {
|
237
|
+
const uv0Blob = new Blob([meshUv0s], { type: "application/binary" });
|
238
|
+
uv0URL = URL.createObjectURL(uv0Blob);
|
239
|
+
}
|
240
|
+
const meshColorsInBytes = defined_default(colors) ? colors.subarray(0, endIndex * 4) : void 0;
|
241
|
+
let colorsURL;
|
242
|
+
if (defined_default(meshColorsInBytes)) {
|
243
|
+
const colorsBlob = new Blob([meshColorsInBytes], {
|
244
|
+
type: "application/binary"
|
245
|
+
});
|
246
|
+
colorsURL = URL.createObjectURL(colorsBlob);
|
247
|
+
}
|
248
|
+
const posIndex = 0;
|
249
|
+
let normalIndex = 0;
|
250
|
+
let uv0Index = 0;
|
251
|
+
let colorIndex = 0;
|
252
|
+
let indicesIndex = 0;
|
253
|
+
let currentIndex = posIndex;
|
254
|
+
const attributes = {};
|
255
|
+
attributes.POSITION = posIndex;
|
256
|
+
buffers.push({
|
257
|
+
uri: positionsURL,
|
258
|
+
byteLength: meshPositions.byteLength
|
259
|
+
});
|
260
|
+
bufferViews.push({
|
261
|
+
buffer: posIndex,
|
262
|
+
byteOffset: 0,
|
263
|
+
byteLength: meshPositions.byteLength,
|
264
|
+
target: 34962
|
265
|
+
});
|
266
|
+
accessors.push({
|
267
|
+
bufferView: posIndex,
|
268
|
+
byteOffset: 0,
|
269
|
+
componentType: 5126,
|
270
|
+
count: vertexCount,
|
271
|
+
type: "VEC3",
|
272
|
+
max: [minX, minY, minZ],
|
273
|
+
min: [maxX, maxY, maxZ]
|
274
|
+
});
|
275
|
+
if (defined_default(normalsURL)) {
|
276
|
+
++currentIndex;
|
277
|
+
normalIndex = currentIndex;
|
278
|
+
attributes.NORMAL = normalIndex;
|
316
279
|
buffers.push({
|
317
|
-
uri:
|
318
|
-
byteLength:
|
280
|
+
uri: normalsURL,
|
281
|
+
byteLength: meshNormals.byteLength
|
319
282
|
});
|
320
283
|
bufferViews.push({
|
321
|
-
buffer:
|
284
|
+
buffer: normalIndex,
|
322
285
|
byteOffset: 0,
|
323
|
-
byteLength:
|
324
|
-
target: 34962
|
286
|
+
byteLength: meshNormals.byteLength,
|
287
|
+
target: 34962
|
325
288
|
});
|
326
289
|
accessors.push({
|
327
|
-
bufferView:
|
290
|
+
bufferView: normalIndex,
|
328
291
|
byteOffset: 0,
|
329
292
|
componentType: 5126,
|
330
293
|
count: vertexCount,
|
331
|
-
type: "VEC3"
|
332
|
-
max: [minX, minY, minZ],
|
333
|
-
min: [maxX, maxY, maxZ],
|
294
|
+
type: "VEC3"
|
334
295
|
});
|
335
|
-
|
336
|
-
|
337
|
-
if (defaultValue.defined(normalsURL)) {
|
338
|
-
++currentIndex;
|
339
|
-
normalIndex = currentIndex;
|
340
|
-
attributes.NORMAL = normalIndex;
|
341
|
-
buffers.push({
|
342
|
-
uri: normalsURL,
|
343
|
-
byteLength: meshNormals.byteLength,
|
344
|
-
});
|
345
|
-
bufferViews.push({
|
346
|
-
buffer: normalIndex,
|
347
|
-
byteOffset: 0,
|
348
|
-
byteLength: meshNormals.byteLength,
|
349
|
-
target: 34962,
|
350
|
-
});
|
351
|
-
accessors.push({
|
352
|
-
bufferView: normalIndex,
|
353
|
-
byteOffset: 0,
|
354
|
-
componentType: 5126,
|
355
|
-
count: vertexCount,
|
356
|
-
type: "VEC3",
|
357
|
-
});
|
358
|
-
}
|
359
|
-
|
360
|
-
// UV0
|
361
|
-
if (defaultValue.defined(uv0URL)) {
|
362
|
-
++currentIndex;
|
363
|
-
uv0Index = currentIndex;
|
364
|
-
attributes.TEXCOORD_0 = uv0Index;
|
365
|
-
buffers.push({
|
366
|
-
uri: uv0URL,
|
367
|
-
byteLength: meshUv0s.byteLength,
|
368
|
-
});
|
369
|
-
bufferViews.push({
|
370
|
-
buffer: uv0Index,
|
371
|
-
byteOffset: 0,
|
372
|
-
byteLength: meshUv0s.byteLength,
|
373
|
-
target: 34962,
|
374
|
-
});
|
375
|
-
accessors.push({
|
376
|
-
bufferView: uv0Index,
|
377
|
-
byteOffset: 0,
|
378
|
-
componentType: 5126,
|
379
|
-
count: vertexCount,
|
380
|
-
type: "VEC2",
|
381
|
-
});
|
382
|
-
}
|
383
|
-
|
384
|
-
// COLORS
|
385
|
-
if (defaultValue.defined(colorsURL)) {
|
386
|
-
++currentIndex;
|
387
|
-
colorIndex = currentIndex;
|
388
|
-
attributes.COLOR_0 = colorIndex;
|
389
|
-
buffers.push({
|
390
|
-
uri: colorsURL,
|
391
|
-
byteLength: meshColorsInBytes.byteLength,
|
392
|
-
});
|
393
|
-
bufferViews.push({
|
394
|
-
buffer: colorIndex,
|
395
|
-
byteOffset: 0,
|
396
|
-
byteLength: meshColorsInBytes.byteLength,
|
397
|
-
target: 34962,
|
398
|
-
});
|
399
|
-
accessors.push({
|
400
|
-
bufferView: colorIndex,
|
401
|
-
byteOffset: 0,
|
402
|
-
componentType: 5121,
|
403
|
-
normalized: true,
|
404
|
-
count: vertexCount,
|
405
|
-
type: "VEC4",
|
406
|
-
});
|
407
|
-
}
|
408
|
-
|
409
|
-
// INDICES
|
296
|
+
}
|
297
|
+
if (defined_default(uv0URL)) {
|
410
298
|
++currentIndex;
|
411
|
-
|
299
|
+
uv0Index = currentIndex;
|
300
|
+
attributes.TEXCOORD_0 = uv0Index;
|
412
301
|
buffers.push({
|
413
|
-
uri:
|
414
|
-
byteLength:
|
302
|
+
uri: uv0URL,
|
303
|
+
byteLength: meshUv0s.byteLength
|
415
304
|
});
|
416
305
|
bufferViews.push({
|
417
|
-
buffer:
|
306
|
+
buffer: uv0Index,
|
418
307
|
byteOffset: 0,
|
419
|
-
byteLength:
|
420
|
-
target:
|
308
|
+
byteLength: meshUv0s.byteLength,
|
309
|
+
target: 34962
|
421
310
|
});
|
422
311
|
accessors.push({
|
423
|
-
bufferView:
|
312
|
+
bufferView: uv0Index,
|
424
313
|
byteOffset: 0,
|
425
|
-
componentType:
|
314
|
+
componentType: 5126,
|
426
315
|
count: vertexCount,
|
427
|
-
type: "
|
316
|
+
type: "VEC2"
|
428
317
|
});
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
318
|
+
}
|
319
|
+
if (defined_default(colorsURL)) {
|
320
|
+
++currentIndex;
|
321
|
+
colorIndex = currentIndex;
|
322
|
+
attributes.COLOR_0 = colorIndex;
|
323
|
+
buffers.push({
|
324
|
+
uri: colorsURL,
|
325
|
+
byteLength: meshColorsInBytes.byteLength
|
326
|
+
});
|
327
|
+
bufferViews.push({
|
328
|
+
buffer: colorIndex,
|
329
|
+
byteOffset: 0,
|
330
|
+
byteLength: meshColorsInBytes.byteLength,
|
331
|
+
target: 34962
|
332
|
+
});
|
333
|
+
accessors.push({
|
334
|
+
bufferView: colorIndex,
|
335
|
+
byteOffset: 0,
|
336
|
+
componentType: 5121,
|
337
|
+
normalized: true,
|
338
|
+
count: vertexCount,
|
339
|
+
type: "VEC4"
|
439
340
|
});
|
440
|
-
nodesInScene.push(0);
|
441
|
-
nodes.push({ mesh: 0 });
|
442
|
-
|
443
|
-
return {
|
444
|
-
buffers: buffers,
|
445
|
-
bufferViews: bufferViews,
|
446
|
-
accessors: accessors,
|
447
|
-
meshes: meshes,
|
448
|
-
nodes: nodes,
|
449
|
-
nodesInScene: nodesInScene,
|
450
|
-
};
|
451
341
|
}
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
342
|
+
++currentIndex;
|
343
|
+
indicesIndex = currentIndex;
|
344
|
+
buffers.push({
|
345
|
+
uri: indicesURL,
|
346
|
+
byteLength: indexArray.byteLength
|
347
|
+
});
|
348
|
+
bufferViews.push({
|
349
|
+
buffer: indicesIndex,
|
350
|
+
byteOffset: 0,
|
351
|
+
byteLength: indexArray.byteLength,
|
352
|
+
target: 34963
|
353
|
+
});
|
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
|
367
|
+
}
|
368
|
+
]
|
369
|
+
});
|
370
|
+
nodesInScene.push(0);
|
371
|
+
nodes.push({ mesh: 0 });
|
372
|
+
return {
|
373
|
+
buffers,
|
374
|
+
bufferViews,
|
375
|
+
accessors,
|
376
|
+
meshes,
|
377
|
+
nodes,
|
378
|
+
nodesInScene
|
379
|
+
};
|
380
|
+
}
|
381
|
+
function decode(data, schema, bufferInfo, featureData) {
|
382
|
+
const magicNumber = new Uint8Array(data, 0, 5);
|
383
|
+
if (magicNumber[0] === "D".charCodeAt() && magicNumber[1] === "R".charCodeAt() && magicNumber[2] === "A".charCodeAt() && magicNumber[3] === "C".charCodeAt() && magicNumber[4] === "O".charCodeAt()) {
|
384
|
+
return decodeDracoEncodedGeometry(data, bufferInfo);
|
465
385
|
}
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
386
|
+
return decodeBinaryGeometry(data, schema, bufferInfo, featureData);
|
387
|
+
}
|
388
|
+
function decodeDracoEncodedGeometry(data) {
|
389
|
+
const dracoDecoderModule = draco;
|
390
|
+
const buffer = new dracoDecoderModule.DecoderBuffer();
|
391
|
+
const byteArray = new Uint8Array(data);
|
392
|
+
buffer.Init(byteArray, byteArray.length);
|
393
|
+
const dracoDecoder = new dracoDecoderModule.Decoder();
|
394
|
+
const geometryType = dracoDecoder.GetEncodedGeometryType(buffer);
|
395
|
+
const metadataQuerier = new dracoDecoderModule.MetadataQuerier();
|
396
|
+
let dracoGeometry;
|
397
|
+
let status;
|
398
|
+
if (geometryType === dracoDecoderModule.TRIANGULAR_MESH) {
|
399
|
+
dracoGeometry = new dracoDecoderModule.Mesh();
|
400
|
+
status = dracoDecoder.DecodeBufferToMesh(buffer, dracoGeometry);
|
401
|
+
}
|
402
|
+
const decodedGeometry = {
|
403
|
+
vertexCount: [0],
|
404
|
+
featureCount: 0
|
405
|
+
};
|
406
|
+
if (defined_default(status) && status.ok() && dracoGeometry.ptr !== 0) {
|
407
|
+
const faceCount = dracoGeometry.num_faces();
|
408
|
+
const attributesCount = dracoGeometry.num_attributes();
|
409
|
+
const vertexCount = dracoGeometry.num_points();
|
410
|
+
decodedGeometry.indices = new Uint32Array(faceCount * 3);
|
411
|
+
const faces = decodedGeometry.indices;
|
412
|
+
decodedGeometry.vertexCount[0] = vertexCount;
|
413
|
+
decodedGeometry.scale_x = 1;
|
414
|
+
decodedGeometry.scale_y = 1;
|
415
|
+
const face = new dracoDecoderModule.DracoInt32Array(3);
|
416
|
+
for (let faceIndex = 0; faceIndex < faceCount; ++faceIndex) {
|
417
|
+
dracoDecoder.GetFaceFromMesh(dracoGeometry, faceIndex, face);
|
418
|
+
faces[faceIndex * 3] = face.GetValue(0);
|
419
|
+
faces[faceIndex * 3 + 1] = face.GetValue(1);
|
420
|
+
faces[faceIndex * 3 + 2] = face.GetValue(2);
|
487
421
|
}
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
faces[faceIndex * 3] = face.GetValue(0);
|
512
|
-
faces[faceIndex * 3 + 1] = face.GetValue(1);
|
513
|
-
faces[faceIndex * 3 + 2] = face.GetValue(2);
|
422
|
+
dracoDecoderModule.destroy(face);
|
423
|
+
for (let attrIndex = 0; attrIndex < attributesCount; ++attrIndex) {
|
424
|
+
const dracoAttribute = dracoDecoder.GetAttribute(
|
425
|
+
dracoGeometry,
|
426
|
+
attrIndex
|
427
|
+
);
|
428
|
+
const attributeData = decodeDracoAttribute(
|
429
|
+
dracoDecoderModule,
|
430
|
+
dracoDecoder,
|
431
|
+
dracoGeometry,
|
432
|
+
dracoAttribute,
|
433
|
+
vertexCount
|
434
|
+
);
|
435
|
+
const dracoAttributeType = dracoAttribute.attribute_type();
|
436
|
+
let attributei3sName = "unknown";
|
437
|
+
if (dracoAttributeType === dracoDecoderModule.POSITION) {
|
438
|
+
attributei3sName = "positions";
|
439
|
+
} else if (dracoAttributeType === dracoDecoderModule.NORMAL) {
|
440
|
+
attributei3sName = "normals";
|
441
|
+
} else if (dracoAttributeType === dracoDecoderModule.COLOR) {
|
442
|
+
attributei3sName = "colors";
|
443
|
+
} else if (dracoAttributeType === dracoDecoderModule.TEX_COORD) {
|
444
|
+
attributei3sName = "uv0s";
|
514
445
|
}
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
} else if (dracoAttributeType === dracoDecoderModule.NORMAL) {
|
539
|
-
attributei3sName = "normals";
|
540
|
-
} else if (dracoAttributeType === dracoDecoderModule.COLOR) {
|
541
|
-
attributei3sName = "colors";
|
542
|
-
} else if (dracoAttributeType === dracoDecoderModule.TEX_COORD) {
|
543
|
-
attributei3sName = "uv0s";
|
544
|
-
}
|
545
|
-
|
546
|
-
// get the metadata
|
547
|
-
const metadata = dracoDecoder.GetAttributeMetadata(
|
548
|
-
dracoGeometry,
|
549
|
-
attrIndex
|
550
|
-
);
|
551
|
-
|
552
|
-
if (metadata.ptr !== 0) {
|
553
|
-
const numEntries = metadataQuerier.NumEntries(metadata);
|
554
|
-
for (let entry = 0; entry < numEntries; ++entry) {
|
555
|
-
const entryName = metadataQuerier.GetEntryName(metadata, entry);
|
556
|
-
if (entryName === "i3s-scale_x") {
|
557
|
-
decodedGeometry.scale_x = metadataQuerier.GetDoubleEntry(
|
558
|
-
metadata,
|
559
|
-
"i3s-scale_x"
|
560
|
-
);
|
561
|
-
} else if (entryName === "i3s-scale_y") {
|
562
|
-
decodedGeometry.scale_y = metadataQuerier.GetDoubleEntry(
|
563
|
-
metadata,
|
564
|
-
"i3s-scale_y"
|
565
|
-
);
|
566
|
-
} else if (entryName === "i3s-attribute-type") {
|
567
|
-
attributei3sName = metadataQuerier.GetStringEntry(
|
568
|
-
metadata,
|
569
|
-
"i3s-attribute-type"
|
570
|
-
);
|
571
|
-
}
|
446
|
+
const metadata = dracoDecoder.GetAttributeMetadata(
|
447
|
+
dracoGeometry,
|
448
|
+
attrIndex
|
449
|
+
);
|
450
|
+
if (metadata.ptr !== 0) {
|
451
|
+
const numEntries = metadataQuerier.NumEntries(metadata);
|
452
|
+
for (let entry = 0; entry < numEntries; ++entry) {
|
453
|
+
const entryName = metadataQuerier.GetEntryName(metadata, entry);
|
454
|
+
if (entryName === "i3s-scale_x") {
|
455
|
+
decodedGeometry.scale_x = metadataQuerier.GetDoubleEntry(
|
456
|
+
metadata,
|
457
|
+
"i3s-scale_x"
|
458
|
+
);
|
459
|
+
} else if (entryName === "i3s-scale_y") {
|
460
|
+
decodedGeometry.scale_y = metadataQuerier.GetDoubleEntry(
|
461
|
+
metadata,
|
462
|
+
"i3s-scale_y"
|
463
|
+
);
|
464
|
+
} else if (entryName === "i3s-attribute-type") {
|
465
|
+
attributei3sName = metadataQuerier.GetStringEntry(
|
466
|
+
metadata,
|
467
|
+
"i3s-attribute-type"
|
468
|
+
);
|
572
469
|
}
|
573
470
|
}
|
574
|
-
|
575
|
-
if (defaultValue.defined(decodedGeometry[attributei3sName])) {
|
576
|
-
console.log("Attribute already exists", attributei3sName);
|
577
|
-
}
|
578
|
-
|
579
|
-
decodedGeometry[attributei3sName] = attributeData;
|
580
|
-
|
581
|
-
if (attributei3sName === "feature-index") {
|
582
|
-
decodedGeometry.featureCount++;
|
583
|
-
}
|
584
471
|
}
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
return decodedGeometry;
|
593
|
-
}
|
594
|
-
|
595
|
-
function decodeDracoAttribute(
|
596
|
-
dracoDecoderModule,
|
597
|
-
dracoDecoder,
|
598
|
-
dracoGeometry,
|
599
|
-
dracoAttribute,
|
600
|
-
vertexCount
|
601
|
-
) {
|
602
|
-
const bufferSize = dracoAttribute.num_components() * vertexCount;
|
603
|
-
let dracoAttributeData;
|
604
|
-
|
605
|
-
const handlers = [
|
606
|
-
function () {}, // DT_INVALID - 0
|
607
|
-
function () {
|
608
|
-
// DT_INT8 - 1
|
609
|
-
dracoAttributeData = new dracoDecoderModule.DracoInt8Array(bufferSize);
|
610
|
-
const success = dracoDecoder.GetAttributeInt8ForAllPoints(
|
611
|
-
dracoGeometry,
|
612
|
-
dracoAttribute,
|
613
|
-
dracoAttributeData
|
614
|
-
);
|
615
|
-
|
616
|
-
if (!success) {
|
617
|
-
console.error("Bad stream");
|
618
|
-
}
|
619
|
-
const attributeData = new Int8Array(bufferSize);
|
620
|
-
for (let i = 0; i < bufferSize; ++i) {
|
621
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
622
|
-
}
|
623
|
-
return attributeData;
|
624
|
-
},
|
625
|
-
function () {
|
626
|
-
// DT_UINT8 - 2
|
627
|
-
dracoAttributeData = new dracoDecoderModule.DracoInt8Array(bufferSize);
|
628
|
-
const success = dracoDecoder.GetAttributeUInt8ForAllPoints(
|
629
|
-
dracoGeometry,
|
630
|
-
dracoAttribute,
|
631
|
-
dracoAttributeData
|
632
|
-
);
|
633
|
-
|
634
|
-
if (!success) {
|
635
|
-
console.error("Bad stream");
|
636
|
-
}
|
637
|
-
const attributeData = new Uint8Array(bufferSize);
|
638
|
-
for (let i = 0; i < bufferSize; ++i) {
|
639
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
640
|
-
}
|
641
|
-
return attributeData;
|
642
|
-
},
|
643
|
-
function () {
|
644
|
-
// DT_INT16 - 3
|
645
|
-
dracoAttributeData = new dracoDecoderModule.DracoInt16Array(bufferSize);
|
646
|
-
const success = dracoDecoder.GetAttributeInt16ForAllPoints(
|
647
|
-
dracoGeometry,
|
648
|
-
dracoAttribute,
|
649
|
-
dracoAttributeData
|
650
|
-
);
|
651
|
-
|
652
|
-
if (!success) {
|
653
|
-
console.error("Bad stream");
|
654
|
-
}
|
655
|
-
const attributeData = new Int16Array(bufferSize);
|
656
|
-
for (let i = 0; i < bufferSize; ++i) {
|
657
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
658
|
-
}
|
659
|
-
return attributeData;
|
660
|
-
},
|
661
|
-
function () {
|
662
|
-
// DT_UINT16 - 4
|
663
|
-
dracoAttributeData = new dracoDecoderModule.DracoInt16Array(bufferSize);
|
664
|
-
const success = dracoDecoder.GetAttributeUInt16ForAllPoints(
|
665
|
-
dracoGeometry,
|
666
|
-
dracoAttribute,
|
667
|
-
dracoAttributeData
|
668
|
-
);
|
669
|
-
|
670
|
-
if (!success) {
|
671
|
-
console.error("Bad stream");
|
672
|
-
}
|
673
|
-
const attributeData = new Uint16Array(bufferSize);
|
674
|
-
for (let i = 0; i < bufferSize; ++i) {
|
675
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
676
|
-
}
|
677
|
-
return attributeData;
|
678
|
-
},
|
679
|
-
function () {
|
680
|
-
// DT_INT32 - 5
|
681
|
-
dracoAttributeData = new dracoDecoderModule.DracoInt32Array(bufferSize);
|
682
|
-
const success = dracoDecoder.GetAttributeInt32ForAllPoints(
|
683
|
-
dracoGeometry,
|
684
|
-
dracoAttribute,
|
685
|
-
dracoAttributeData
|
686
|
-
);
|
687
|
-
|
688
|
-
if (!success) {
|
689
|
-
console.error("Bad stream");
|
690
|
-
}
|
691
|
-
const attributeData = new Int32Array(bufferSize);
|
692
|
-
for (let i = 0; i < bufferSize; ++i) {
|
693
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
694
|
-
}
|
695
|
-
return attributeData;
|
696
|
-
},
|
697
|
-
function () {
|
698
|
-
// DT_UINT32 - 6
|
699
|
-
dracoAttributeData = new dracoDecoderModule.DracoInt32Array(bufferSize);
|
700
|
-
const success = dracoDecoder.GetAttributeUInt32ForAllPoints(
|
701
|
-
dracoGeometry,
|
702
|
-
dracoAttribute,
|
703
|
-
dracoAttributeData
|
704
|
-
);
|
705
|
-
|
706
|
-
if (!success) {
|
707
|
-
console.error("Bad stream");
|
708
|
-
}
|
709
|
-
const attributeData = new Uint32Array(bufferSize);
|
710
|
-
for (let i = 0; i < bufferSize; ++i) {
|
711
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
712
|
-
}
|
713
|
-
return attributeData;
|
714
|
-
},
|
715
|
-
function () {
|
716
|
-
// DT_INT64 - 7
|
717
|
-
},
|
718
|
-
function () {
|
719
|
-
// DT_UINT64 - 8
|
720
|
-
},
|
721
|
-
function () {
|
722
|
-
// DT_FLOAT32 - 9
|
723
|
-
dracoAttributeData = new dracoDecoderModule.DracoFloat32Array(bufferSize);
|
724
|
-
const success = dracoDecoder.GetAttributeFloatForAllPoints(
|
725
|
-
dracoGeometry,
|
726
|
-
dracoAttribute,
|
727
|
-
dracoAttributeData
|
728
|
-
);
|
729
|
-
|
730
|
-
if (!success) {
|
731
|
-
console.error("Bad stream");
|
732
|
-
}
|
733
|
-
const attributeData = new Float32Array(bufferSize);
|
734
|
-
for (let i = 0; i < bufferSize; ++i) {
|
735
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
736
|
-
}
|
737
|
-
return attributeData;
|
738
|
-
},
|
739
|
-
function () {
|
740
|
-
// DT_FLOAT64 - 10
|
741
|
-
},
|
742
|
-
function () {
|
743
|
-
// DT_FLOAT32 - 11
|
744
|
-
dracoAttributeData = new dracoDecoderModule.DracoUInt8Array(bufferSize);
|
745
|
-
const success = dracoDecoder.GetAttributeUInt8ForAllPoints(
|
746
|
-
dracoGeometry,
|
747
|
-
dracoAttribute,
|
748
|
-
dracoAttributeData
|
749
|
-
);
|
750
|
-
|
751
|
-
if (!success) {
|
752
|
-
console.error("Bad stream");
|
753
|
-
}
|
754
|
-
const attributeData = new Uint8Array(bufferSize);
|
755
|
-
for (let i = 0; i < bufferSize; ++i) {
|
756
|
-
attributeData[i] = dracoAttributeData.GetValue(i);
|
757
|
-
}
|
758
|
-
return attributeData;
|
759
|
-
},
|
760
|
-
];
|
761
|
-
|
762
|
-
const attributeData = handlers[dracoAttribute.data_type()]();
|
763
|
-
|
764
|
-
if (defaultValue.defined(dracoAttributeData)) {
|
765
|
-
dracoDecoderModule.destroy(dracoAttributeData);
|
472
|
+
if (defined_default(decodedGeometry[attributei3sName])) {
|
473
|
+
console.log("Attribute already exists", attributei3sName);
|
474
|
+
}
|
475
|
+
decodedGeometry[attributei3sName] = attributeData;
|
476
|
+
if (attributei3sName === "feature-index") {
|
477
|
+
decodedGeometry.featureCount++;
|
478
|
+
}
|
766
479
|
}
|
767
|
-
|
768
|
-
return attributeData;
|
480
|
+
dracoDecoderModule.destroy(dracoGeometry);
|
769
481
|
}
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
482
|
+
dracoDecoderModule.destroy(metadataQuerier);
|
483
|
+
dracoDecoderModule.destroy(dracoDecoder);
|
484
|
+
return decodedGeometry;
|
485
|
+
}
|
486
|
+
function decodeDracoAttribute(dracoDecoderModule, dracoDecoder, dracoGeometry, dracoAttribute, vertexCount) {
|
487
|
+
const bufferSize = dracoAttribute.num_components() * vertexCount;
|
488
|
+
let dracoAttributeData;
|
489
|
+
const handlers = [
|
490
|
+
function() {
|
777
491
|
},
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
492
|
+
// DT_INVALID - 0
|
493
|
+
function() {
|
494
|
+
dracoAttributeData = new dracoDecoderModule.DracoInt8Array(bufferSize);
|
495
|
+
const success = dracoDecoder.GetAttributeInt8ForAllPoints(
|
496
|
+
dracoGeometry,
|
497
|
+
dracoAttribute,
|
498
|
+
dracoAttributeData
|
499
|
+
);
|
500
|
+
if (!success) {
|
501
|
+
console.error("Bad stream");
|
502
|
+
}
|
503
|
+
const attributeData2 = new Int8Array(bufferSize);
|
504
|
+
for (let i = 0; i < bufferSize; ++i) {
|
505
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
506
|
+
}
|
507
|
+
return attributeData2;
|
783
508
|
},
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
509
|
+
function() {
|
510
|
+
dracoAttributeData = new dracoDecoderModule.DracoInt8Array(bufferSize);
|
511
|
+
const success = dracoDecoder.GetAttributeUInt8ForAllPoints(
|
512
|
+
dracoGeometry,
|
513
|
+
dracoAttribute,
|
514
|
+
dracoAttributeData
|
515
|
+
);
|
516
|
+
if (!success) {
|
517
|
+
console.error("Bad stream");
|
518
|
+
}
|
519
|
+
const attributeData2 = new Uint8Array(bufferSize);
|
520
|
+
for (let i = 0; i < bufferSize; ++i) {
|
521
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
522
|
+
}
|
523
|
+
return attributeData2;
|
789
524
|
},
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
525
|
+
function() {
|
526
|
+
dracoAttributeData = new dracoDecoderModule.DracoInt16Array(bufferSize);
|
527
|
+
const success = dracoDecoder.GetAttributeInt16ForAllPoints(
|
528
|
+
dracoGeometry,
|
529
|
+
dracoAttribute,
|
530
|
+
dracoAttributeData
|
531
|
+
);
|
532
|
+
if (!success) {
|
533
|
+
console.error("Bad stream");
|
534
|
+
}
|
535
|
+
const attributeData2 = new Int16Array(bufferSize);
|
536
|
+
for (let i = 0; i < bufferSize; ++i) {
|
537
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
538
|
+
}
|
539
|
+
return attributeData2;
|
795
540
|
},
|
796
|
-
|
797
|
-
|
798
|
-
const
|
799
|
-
|
800
|
-
|
541
|
+
function() {
|
542
|
+
dracoAttributeData = new dracoDecoderModule.DracoInt16Array(bufferSize);
|
543
|
+
const success = dracoDecoder.GetAttributeUInt16ForAllPoints(
|
544
|
+
dracoGeometry,
|
545
|
+
dracoAttribute,
|
546
|
+
dracoAttributeData
|
547
|
+
);
|
548
|
+
if (!success) {
|
549
|
+
console.error("Bad stream");
|
550
|
+
}
|
551
|
+
const attributeData2 = new Uint16Array(bufferSize);
|
552
|
+
for (let i = 0; i < bufferSize; ++i) {
|
553
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
554
|
+
}
|
555
|
+
return attributeData2;
|
556
|
+
},
|
557
|
+
function() {
|
558
|
+
dracoAttributeData = new dracoDecoderModule.DracoInt32Array(bufferSize);
|
559
|
+
const success = dracoDecoder.GetAttributeInt32ForAllPoints(
|
560
|
+
dracoGeometry,
|
561
|
+
dracoAttribute,
|
562
|
+
dracoAttributeData
|
563
|
+
);
|
564
|
+
if (!success) {
|
565
|
+
console.error("Bad stream");
|
566
|
+
}
|
567
|
+
const attributeData2 = new Int32Array(bufferSize);
|
568
|
+
for (let i = 0; i < bufferSize; ++i) {
|
569
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
570
|
+
}
|
571
|
+
return attributeData2;
|
572
|
+
},
|
573
|
+
function() {
|
574
|
+
dracoAttributeData = new dracoDecoderModule.DracoInt32Array(bufferSize);
|
575
|
+
const success = dracoDecoder.GetAttributeUInt32ForAllPoints(
|
576
|
+
dracoGeometry,
|
577
|
+
dracoAttribute,
|
578
|
+
dracoAttributeData
|
579
|
+
);
|
580
|
+
if (!success) {
|
581
|
+
console.error("Bad stream");
|
582
|
+
}
|
583
|
+
const attributeData2 = new Uint32Array(bufferSize);
|
584
|
+
for (let i = 0; i < bufferSize; ++i) {
|
585
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
586
|
+
}
|
587
|
+
return attributeData2;
|
801
588
|
},
|
802
|
-
|
803
|
-
// We don't need to use this for anything so just increment the offset
|
804
|
-
const count = decodedGeometry.featureCount;
|
805
|
-
offset += count * 8;
|
806
|
-
return offset;
|
589
|
+
function() {
|
807
590
|
},
|
808
|
-
|
809
|
-
const count = decodedGeometry.featureCount * 2;
|
810
|
-
decodedGeometry.faceRange = new Uint32Array(data, offset, count);
|
811
|
-
offset += count * 4;
|
812
|
-
return offset;
|
591
|
+
function() {
|
813
592
|
},
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
593
|
+
function() {
|
594
|
+
dracoAttributeData = new dracoDecoderModule.DracoFloat32Array(bufferSize);
|
595
|
+
const success = dracoDecoder.GetAttributeFloatForAllPoints(
|
596
|
+
dracoGeometry,
|
597
|
+
dracoAttribute,
|
598
|
+
dracoAttributeData
|
599
|
+
);
|
600
|
+
if (!success) {
|
601
|
+
console.error("Bad stream");
|
602
|
+
}
|
603
|
+
const attributeData2 = new Float32Array(bufferSize);
|
604
|
+
for (let i = 0; i < bufferSize; ++i) {
|
605
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
606
|
+
}
|
607
|
+
return attributeData2;
|
819
608
|
},
|
820
|
-
|
821
|
-
const count = decodedGeometry.vertexCount * 4;
|
822
|
-
decodedGeometry["uv-region"] = new Uint16Array(data, offset, count);
|
823
|
-
offset += count * 2;
|
824
|
-
return offset;
|
609
|
+
function() {
|
825
610
|
},
|
611
|
+
function() {
|
612
|
+
dracoAttributeData = new dracoDecoderModule.DracoUInt8Array(bufferSize);
|
613
|
+
const success = dracoDecoder.GetAttributeUInt8ForAllPoints(
|
614
|
+
dracoGeometry,
|
615
|
+
dracoAttribute,
|
616
|
+
dracoAttributeData
|
617
|
+
);
|
618
|
+
if (!success) {
|
619
|
+
console.error("Bad stream");
|
620
|
+
}
|
621
|
+
const attributeData2 = new Uint8Array(bufferSize);
|
622
|
+
for (let i = 0; i < bufferSize; ++i) {
|
623
|
+
attributeData2[i] = dracoAttributeData.GetValue(i);
|
624
|
+
}
|
625
|
+
return attributeData2;
|
626
|
+
}
|
627
|
+
];
|
628
|
+
const attributeData = handlers[dracoAttribute.data_type()]();
|
629
|
+
if (defined_default(dracoAttributeData)) {
|
630
|
+
dracoDecoderModule.destroy(dracoAttributeData);
|
631
|
+
}
|
632
|
+
return attributeData;
|
633
|
+
}
|
634
|
+
var binaryAttributeDecoders = {
|
635
|
+
position: function(decodedGeometry, data, offset) {
|
636
|
+
const count = decodedGeometry.vertexCount * 3;
|
637
|
+
decodedGeometry.positions = new Float32Array(data, offset, count);
|
638
|
+
offset += count * 4;
|
639
|
+
return offset;
|
640
|
+
},
|
641
|
+
normal: function(decodedGeometry, data, offset) {
|
642
|
+
const count = decodedGeometry.vertexCount * 3;
|
643
|
+
decodedGeometry.normals = new Float32Array(data, offset, count);
|
644
|
+
offset += count * 4;
|
645
|
+
return offset;
|
646
|
+
},
|
647
|
+
uv0: function(decodedGeometry, data, offset) {
|
648
|
+
const count = decodedGeometry.vertexCount * 2;
|
649
|
+
decodedGeometry.uv0s = new Float32Array(data, offset, count);
|
650
|
+
offset += count * 4;
|
651
|
+
return offset;
|
652
|
+
},
|
653
|
+
color: function(decodedGeometry, data, offset) {
|
654
|
+
const count = decodedGeometry.vertexCount * 4;
|
655
|
+
decodedGeometry.colors = new Uint8Array(data, offset, count);
|
656
|
+
offset += count;
|
657
|
+
return offset;
|
658
|
+
},
|
659
|
+
featureId: function(decodedGeometry, data, offset) {
|
660
|
+
const count = decodedGeometry.featureCount;
|
661
|
+
offset += count * 8;
|
662
|
+
return offset;
|
663
|
+
},
|
664
|
+
id: function(decodedGeometry, data, offset) {
|
665
|
+
const count = decodedGeometry.featureCount;
|
666
|
+
offset += count * 8;
|
667
|
+
return offset;
|
668
|
+
},
|
669
|
+
faceRange: function(decodedGeometry, data, offset) {
|
670
|
+
const count = decodedGeometry.featureCount * 2;
|
671
|
+
decodedGeometry.faceRange = new Uint32Array(data, offset, count);
|
672
|
+
offset += count * 4;
|
673
|
+
return offset;
|
674
|
+
},
|
675
|
+
uvRegion: function(decodedGeometry, data, offset) {
|
676
|
+
const count = decodedGeometry.vertexCount * 4;
|
677
|
+
decodedGeometry["uv-region"] = new Uint16Array(data, offset, count);
|
678
|
+
offset += count * 2;
|
679
|
+
return offset;
|
680
|
+
},
|
681
|
+
region: function(decodedGeometry, data, offset) {
|
682
|
+
const count = decodedGeometry.vertexCount * 4;
|
683
|
+
decodedGeometry["uv-region"] = new Uint16Array(data, offset, count);
|
684
|
+
offset += count * 2;
|
685
|
+
return offset;
|
686
|
+
}
|
687
|
+
};
|
688
|
+
function decodeBinaryGeometry(data, schema, bufferInfo, featureData) {
|
689
|
+
const decodedGeometry = {
|
690
|
+
vertexCount: 0
|
826
691
|
};
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
decodedGeometry.featureCount = dataView.getUint32(offset, 1);
|
843
|
-
offset += 4;
|
844
|
-
|
845
|
-
if (defaultValue.defined(bufferInfo)) {
|
846
|
-
for (
|
847
|
-
let attrIndex = 0;
|
848
|
-
attrIndex < bufferInfo.attributes.length;
|
849
|
-
attrIndex++
|
850
|
-
) {
|
851
|
-
if (
|
852
|
-
defaultValue.defined(binaryAttributeDecoders[bufferInfo.attributes[attrIndex]])
|
853
|
-
) {
|
854
|
-
offset = binaryAttributeDecoders[bufferInfo.attributes[attrIndex]](
|
855
|
-
decodedGeometry,
|
856
|
-
data,
|
857
|
-
offset
|
858
|
-
);
|
859
|
-
} else {
|
860
|
-
console.error(
|
861
|
-
"Unknown decoder for",
|
862
|
-
bufferInfo.attributes[attrIndex]
|
863
|
-
);
|
864
|
-
}
|
865
|
-
}
|
866
|
-
} else {
|
867
|
-
let ordering = schema.ordering;
|
868
|
-
let featureAttributeOrder = schema.featureAttributeOrder;
|
869
|
-
|
870
|
-
if (
|
871
|
-
defaultValue.defined(featureData) &&
|
872
|
-
defaultValue.defined(featureData.geometryData) &&
|
873
|
-
defaultValue.defined(featureData.geometryData[0]) &&
|
874
|
-
defaultValue.defined(featureData.geometryData[0].params)
|
875
|
-
) {
|
876
|
-
ordering = Object.keys(
|
877
|
-
featureData.geometryData[0].params.vertexAttributes
|
692
|
+
const dataView = new DataView(data);
|
693
|
+
try {
|
694
|
+
let offset = 0;
|
695
|
+
decodedGeometry.vertexCount = dataView.getUint32(offset, 1);
|
696
|
+
offset += 4;
|
697
|
+
decodedGeometry.featureCount = dataView.getUint32(offset, 1);
|
698
|
+
offset += 4;
|
699
|
+
if (defined_default(bufferInfo)) {
|
700
|
+
for (let attrIndex = 0; attrIndex < bufferInfo.attributes.length; attrIndex++) {
|
701
|
+
if (defined_default(binaryAttributeDecoders[bufferInfo.attributes[attrIndex]])) {
|
702
|
+
offset = binaryAttributeDecoders[bufferInfo.attributes[attrIndex]](
|
703
|
+
decodedGeometry,
|
704
|
+
data,
|
705
|
+
offset
|
878
706
|
);
|
879
|
-
|
880
|
-
|
707
|
+
} else {
|
708
|
+
console.error(
|
709
|
+
"Unknown decoder for",
|
710
|
+
bufferInfo.attributes[attrIndex]
|
881
711
|
);
|
882
712
|
}
|
883
|
-
|
884
|
-
// Use default geometry schema
|
885
|
-
for (let i = 0; i < ordering.length; i++) {
|
886
|
-
const decoder = binaryAttributeDecoders[ordering[i]];
|
887
|
-
if (!defaultValue.defined(decoder)) {
|
888
|
-
console.log(ordering[i]);
|
889
|
-
}
|
890
|
-
offset = decoder(decodedGeometry, data, offset);
|
891
|
-
}
|
892
|
-
|
893
|
-
for (let j = 0; j < featureAttributeOrder.length; j++) {
|
894
|
-
const curDecoder = binaryAttributeDecoders[featureAttributeOrder[j]];
|
895
|
-
if (!defaultValue.defined(curDecoder)) {
|
896
|
-
console.log(featureAttributeOrder[j]);
|
897
|
-
}
|
898
|
-
offset = curDecoder(decodedGeometry, data, offset);
|
899
|
-
}
|
900
713
|
}
|
901
|
-
}
|
902
|
-
|
714
|
+
} else {
|
715
|
+
let ordering = schema.ordering;
|
716
|
+
let featureAttributeOrder = schema.featureAttributeOrder;
|
717
|
+
if (defined_default(featureData) && defined_default(featureData.geometryData) && defined_default(featureData.geometryData[0]) && defined_default(featureData.geometryData[0].params)) {
|
718
|
+
ordering = Object.keys(
|
719
|
+
featureData.geometryData[0].params.vertexAttributes
|
720
|
+
);
|
721
|
+
featureAttributeOrder = Object.keys(
|
722
|
+
featureData.geometryData[0].params.featureAttributes
|
723
|
+
);
|
724
|
+
}
|
725
|
+
for (let i = 0; i < ordering.length; i++) {
|
726
|
+
const decoder = binaryAttributeDecoders[ordering[i]];
|
727
|
+
offset = decoder(decodedGeometry, data, offset);
|
728
|
+
}
|
729
|
+
for (let j = 0; j < featureAttributeOrder.length; j++) {
|
730
|
+
const curDecoder = binaryAttributeDecoders[featureAttributeOrder[j]];
|
731
|
+
offset = curDecoder(decodedGeometry, data, offset);
|
732
|
+
}
|
903
733
|
}
|
904
|
-
|
905
|
-
|
906
|
-
decodedGeometry.scale_y = 1;
|
907
|
-
|
908
|
-
return decodedGeometry;
|
734
|
+
} catch (e) {
|
735
|
+
console.error(e);
|
909
736
|
}
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
parameters.geoidDataList.length > 0
|
924
|
-
) {
|
925
|
-
orthometricToEllipsoidal(
|
926
|
-
geometryData.vertexCount,
|
927
|
-
geometryData.positions,
|
928
|
-
geometryData.scale_x,
|
929
|
-
geometryData.scale_y,
|
930
|
-
parameters.cartographicCenter,
|
931
|
-
parameters.geoidDataList,
|
932
|
-
false
|
933
|
-
);
|
934
|
-
}
|
935
|
-
|
936
|
-
// Transform vertices to local
|
937
|
-
transformToLocal(
|
737
|
+
decodedGeometry.scale_x = 1;
|
738
|
+
decodedGeometry.scale_y = 1;
|
739
|
+
return decodedGeometry;
|
740
|
+
}
|
741
|
+
function decodeAndCreateGltf(parameters) {
|
742
|
+
const geometryData = decode(
|
743
|
+
parameters.binaryData,
|
744
|
+
parameters.schema,
|
745
|
+
parameters.bufferInfo,
|
746
|
+
parameters.featureData
|
747
|
+
);
|
748
|
+
if (defined_default(parameters.geoidDataList) && parameters.geoidDataList.length > 0) {
|
749
|
+
orthometricToEllipsoidal(
|
938
750
|
geometryData.vertexCount,
|
939
751
|
geometryData.positions,
|
940
|
-
geometryData.normals,
|
941
|
-
parameters.cartographicCenter,
|
942
|
-
parameters.cartesianCenter,
|
943
|
-
parameters.parentRotation,
|
944
|
-
parameters.ellipsoidRadiiSquare,
|
945
752
|
geometryData.scale_x,
|
946
|
-
geometryData.scale_y
|
753
|
+
geometryData.scale_y,
|
754
|
+
parameters.cartographicCenter,
|
755
|
+
parameters.geoidDataList,
|
756
|
+
false
|
947
757
|
);
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
758
|
+
}
|
759
|
+
transformToLocal(
|
760
|
+
geometryData.vertexCount,
|
761
|
+
geometryData.positions,
|
762
|
+
geometryData.normals,
|
763
|
+
parameters.cartographicCenter,
|
764
|
+
parameters.cartesianCenter,
|
765
|
+
parameters.parentRotation,
|
766
|
+
parameters.ellipsoidRadiiSquare,
|
767
|
+
geometryData.scale_x,
|
768
|
+
geometryData.scale_y
|
769
|
+
);
|
770
|
+
if (defined_default(geometryData.uv0s) && defined_default(geometryData["uv-region"])) {
|
771
|
+
cropUVs(
|
960
772
|
geometryData.vertexCount,
|
961
|
-
geometryData.indices,
|
962
|
-
geometryData.positions,
|
963
|
-
geometryData.normals,
|
964
773
|
geometryData.uv0s,
|
965
|
-
geometryData
|
774
|
+
geometryData["uv-region"]
|
966
775
|
);
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
776
|
+
}
|
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 = {};
|
786
|
+
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;
|
792
|
+
} 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);
|
799
|
+
for (let range = 0; range < geometryData["faceRange"].length - 1; range += 2) {
|
800
|
+
const curIndex = range / 2;
|
801
|
+
const rangeStart = geometryData["faceRange"][range];
|
802
|
+
const rangeEnd = geometryData["faceRange"][range + 1];
|
803
|
+
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;
|
997
807
|
}
|
998
808
|
}
|
999
|
-
|
1000
|
-
meshData._customAttributes = customAttributes;
|
1001
|
-
|
1002
|
-
const results = {
|
1003
|
-
meshData: meshData,
|
1004
|
-
};
|
1005
|
-
|
1006
|
-
return results;
|
1007
809
|
}
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
810
|
+
meshData._customAttributes = customAttributes;
|
811
|
+
const results = {
|
812
|
+
meshData
|
813
|
+
};
|
814
|
+
return results;
|
815
|
+
}
|
816
|
+
async function initWorker(parameters, transferableObjects) {
|
817
|
+
const wasmConfig = parameters.webAssemblyConfig;
|
818
|
+
if (defined_default(wasmConfig) && defined_default(wasmConfig.wasmBinaryFile)) {
|
819
|
+
draco = await (0, import_draco_decoder_nodejs.default)(wasmConfig);
|
820
|
+
} else {
|
821
|
+
draco = await (0, import_draco_decoder_nodejs.default)();
|
1013
822
|
}
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
if (defaultValue.defined(wasmConfig)) {
|
1021
|
-
// Require and compile WebAssembly module, or use fallback if not supported
|
1022
|
-
return require([wasmConfig.modulePath], function (dracoModule) {
|
1023
|
-
if (defaultValue.defined(wasmConfig.wasmBinaryFile)) {
|
1024
|
-
if (!defaultValue.defined(dracoModule)) {
|
1025
|
-
dracoModule = self.DracoDecoderModule;
|
1026
|
-
}
|
1027
|
-
|
1028
|
-
dracoModule(wasmConfig).then(function (compiledModule) {
|
1029
|
-
initWorker(compiledModule);
|
1030
|
-
});
|
1031
|
-
} else {
|
1032
|
-
initWorker(dracoModule());
|
1033
|
-
}
|
1034
|
-
});
|
1035
|
-
}
|
823
|
+
return true;
|
824
|
+
}
|
825
|
+
function decodeI3S(parameters, transferableObjects) {
|
826
|
+
const wasmConfig = parameters.webAssemblyConfig;
|
827
|
+
if (defined_default(wasmConfig)) {
|
828
|
+
return initWorker(parameters, transferableObjects);
|
1036
829
|
}
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
830
|
+
return decodeAndCreateGltf(parameters, transferableObjects);
|
831
|
+
}
|
832
|
+
var decodeI3S_default = createTaskProcessorWorker_default(decodeI3S);
|
833
|
+
export {
|
834
|
+
decodeI3S_default as default
|
835
|
+
};
|