@cesium/engine 23.0.0 → 24.0.0

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 (226) hide show
  1. package/Build/Workers/{chunk-QTOHIXGF.js → chunk-2N4KDHS3.js} +10 -10
  2. package/Build/Workers/{chunk-SQTRWKO2.js → chunk-44EMEGKW.js} +5 -5
  3. package/Build/Workers/{chunk-OHBM4YG4.js → chunk-4TIG36AW.js} +12 -12
  4. package/Build/Workers/{chunk-BNBD2YZK.js → chunk-5A2SW66E.js} +16 -16
  5. package/Build/Workers/{chunk-52K3GJKG.js → chunk-5GXYJQ2K.js} +3 -3
  6. package/Build/Workers/{chunk-NQCAZU7S.js → chunk-63SIWPLS.js} +13 -13
  7. package/Build/Workers/{chunk-UEEGWJJP.js → chunk-6MPGQEHA.js} +2 -2
  8. package/Build/Workers/{chunk-PQVNT5CJ.js → chunk-6RMS4S72.js} +6 -6
  9. package/Build/Workers/{chunk-HYTFXWMY.js → chunk-6WLHJFD3.js} +7 -7
  10. package/Build/Workers/{chunk-DT5SJBKA.js → chunk-72VYSVEW.js} +9 -9
  11. package/Build/Workers/{chunk-JUGY5AZN.js → chunk-7MDYBRYJ.js} +4 -4
  12. package/Build/Workers/{chunk-6SLGTBB2.js → chunk-7O5XJTVE.js} +5 -5
  13. package/Build/Workers/{chunk-4UNQX2MP.js → chunk-7QRFIKWQ.js} +2 -2
  14. package/Build/Workers/{chunk-GN5NEUDT.js → chunk-7TYLCBGK.js} +8 -8
  15. package/Build/Workers/{chunk-SGKTBHFQ.js → chunk-7X322WP2.js} +13 -13
  16. package/Build/Workers/{chunk-T43FXHNC.js → chunk-A47HVBC5.js} +7 -7
  17. package/Build/Workers/{chunk-FSDVXW7M.js → chunk-AF3MU2RL.js} +5 -5
  18. package/Build/Workers/{chunk-3B65YFXC.js → chunk-AJLTU6PF.js} +1 -1
  19. package/Build/Workers/{chunk-OQ3EAJNW.js → chunk-AMIHNSST.js} +2 -2
  20. package/Build/Workers/{chunk-N4AWE7TZ.js → chunk-B6SCUUFP.js} +10 -10
  21. package/Build/Workers/{chunk-OMXN7YF4.js → chunk-BJD6QGXZ.js} +12 -12
  22. package/Build/Workers/{chunk-APDKMX7W.js → chunk-C6P4IG5P.js} +6 -6
  23. package/Build/Workers/{chunk-QA24Q62E.js → chunk-D4EJ2NXG.js} +17 -17
  24. package/Build/Workers/{chunk-HYLEKKO5.js → chunk-DHKPFLSJ.js} +1 -1
  25. package/Build/Workers/{chunk-MQJG522T.js → chunk-DVB56LG7.js} +6 -6
  26. package/Build/Workers/{chunk-Y5AJSEEN.js → chunk-EDXL4W76.js} +2 -2
  27. package/Build/Workers/{chunk-QQX7S5QT.js → chunk-EV3VGO6Y.js} +17 -17
  28. package/Build/Workers/{chunk-IFA7VHHP.js → chunk-GOQBUCXH.js} +10 -10
  29. package/Build/Workers/{chunk-5A7YSAXT.js → chunk-GQUNK2XC.js} +14 -14
  30. package/Build/Workers/{chunk-36LBFITA.js → chunk-HKUES6UG.js} +12 -12
  31. package/Build/Workers/{chunk-OC6X22PG.js → chunk-HRHRYFHS.js} +9 -9
  32. package/Build/Workers/{chunk-L7RDJ4V7.js → chunk-HXJMS2ZI.js} +1 -1
  33. package/Build/Workers/{chunk-NAYRNPEP.js → chunk-ILMFADZA.js} +4 -4
  34. package/Build/Workers/{chunk-AA33B6PU.js → chunk-ISY4EZCA.js} +4 -4
  35. package/Build/Workers/{chunk-7KRN6JPQ.js → chunk-J6AW5YHS.js} +14 -14
  36. package/Build/Workers/{chunk-OQBPOKPZ.js → chunk-JCI63T3K.js} +6 -6
  37. package/Build/Workers/{chunk-2WI4HGJU.js → chunk-KLPGTXS3.js} +6 -6
  38. package/Build/Workers/{chunk-5R7SBUTW.js → chunk-LIB2H534.js} +10 -10
  39. package/Build/Workers/{chunk-IYVDOB5V.js → chunk-LXMCPFFS.js} +4 -4
  40. package/Build/Workers/{chunk-NUYLNQKV.js → chunk-MKM27KGV.js} +2 -2
  41. package/Build/Workers/{chunk-R7M4XNPP.js → chunk-N65BAKSH.js} +8 -8
  42. package/Build/Workers/{chunk-4LGFX2P5.js → chunk-NKT5K3K3.js} +11 -11
  43. package/Build/Workers/{chunk-NNHU33JK.js → chunk-NPF7SSHZ.js} +7 -7
  44. package/Build/Workers/{chunk-LDQWNMEC.js → chunk-PVV64VFW.js} +1 -1
  45. package/Build/Workers/{chunk-WKXDCVBO.js → chunk-Q3C6VQH6.js} +4 -4
  46. package/Build/Workers/{chunk-ARCFIOKA.js → chunk-RQNJD3O4.js} +12 -12
  47. package/Build/Workers/{chunk-G3YT7M7A.js → chunk-UIGVOKKI.js} +1 -1
  48. package/Build/Workers/{chunk-ZIW5FCIW.js → chunk-UQU4RXLT.js} +27 -19
  49. package/Build/Workers/{chunk-MT5M7RLZ.js → chunk-VLDEUTOP.js} +2 -2
  50. package/Build/Workers/{chunk-5JP5FG7U.js → chunk-VMVOUQ5J.js} +7 -7
  51. package/Build/Workers/{chunk-2GL2EUEE.js → chunk-XJRBB253.js} +11 -11
  52. package/Build/Workers/{chunk-ESD4IEOU.js → chunk-XY6HMDGI.js} +5 -5
  53. package/Build/Workers/{chunk-56OHFSLH.js → chunk-Y7HNNPNK.js} +10 -10
  54. package/Build/Workers/{chunk-6FVFM2KB.js → chunk-YAOZMOFL.js} +5 -5
  55. package/Build/Workers/{chunk-AP6XWET5.js → chunk-YJZGW74L.js} +8 -8
  56. package/Build/Workers/{chunk-KPYU6YZG.js → chunk-YQFTYQMZ.js} +1 -1
  57. package/Build/Workers/{chunk-5VKZVPO5.js → chunk-ZBZRTRJB.js} +10 -10
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +25 -25
  100. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +12 -12
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +6 -6
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/BoundingSphere.js +1 -1
  112. package/Source/Core/Cartesian2.js +7 -5
  113. package/Source/Core/Cartesian3.js +8 -6
  114. package/Source/Core/Cartesian4.js +8 -6
  115. package/Source/Core/Color.js +5 -3
  116. package/Source/Core/DeveloperError.js +2 -1
  117. package/Source/Core/ITwinPlatform.js +1 -0
  118. package/Source/Core/Ion.js +1 -1
  119. package/Source/Core/S2Cell.js +2 -2
  120. package/Source/Core/TerrainMesh.js +10 -1
  121. package/Source/Core/TerrainPicker.js +1 -0
  122. package/Source/Core/WallGeometry.js +1 -1
  123. package/Source/Core/WallOutlineGeometry.js +1 -1
  124. package/Source/Core/assert.js +27 -0
  125. package/Source/Core/globalTypes.js +4 -0
  126. package/Source/DataSources/CzmlDataSource.js +9 -0
  127. package/Source/DataSources/PathGraphics.js +13 -0
  128. package/Source/DataSources/PathVisualizer.js +330 -18
  129. package/Source/DataSources/StaticGeometryColorBatch.js +7 -2
  130. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +7 -2
  131. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +3 -1
  132. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +3 -1
  133. package/Source/Renderer/Context.js +1 -1
  134. package/Source/Renderer/RenderState.js +2 -2
  135. package/Source/Renderer/VertexArray.js +80 -0
  136. package/Source/Scene/ArcGisMapService.js +1 -1
  137. package/Source/Scene/BillboardCollection.js +65 -364
  138. package/Source/Scene/BufferPoint.js +148 -0
  139. package/Source/Scene/BufferPointCollection.js +135 -0
  140. package/Source/Scene/BufferPointMaterial.js +95 -0
  141. package/Source/Scene/BufferPolygon.js +516 -0
  142. package/Source/Scene/BufferPolygonCollection.js +368 -0
  143. package/Source/Scene/BufferPolygonMaterial.js +41 -0
  144. package/Source/Scene/BufferPolyline.js +185 -0
  145. package/Source/Scene/BufferPolylineCollection.js +136 -0
  146. package/Source/Scene/BufferPolylineMaterial.js +93 -0
  147. package/Source/Scene/BufferPrimitive.js +347 -0
  148. package/Source/Scene/BufferPrimitiveCollection.js +702 -0
  149. package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
  150. package/Source/Scene/Cesium3DTileContent.js +5 -1
  151. package/Source/Scene/Cesium3DTileContentFactory.js +9 -0
  152. package/Source/Scene/Cesium3DTileStyle.js +22 -0
  153. package/Source/Scene/Cesium3DTileset.js +1 -0
  154. package/Source/Scene/ClippingPolygonCollection.js +270 -101
  155. package/Source/Scene/CubeMapPanorama.js +4 -4
  156. package/Source/Scene/GaussianSplat3DTileContent.js +40 -46
  157. package/Source/Scene/GaussianSplatPrimitive.js +413 -70
  158. package/Source/Scene/GetFeatureInfoFormat.js +3 -3
  159. package/Source/Scene/GltfLoader.js +227 -34
  160. package/Source/Scene/GltfSpzLoader.js +109 -0
  161. package/Source/Scene/ITwinData.js +1 -0
  162. package/Source/Scene/Label.js +32 -0
  163. package/Source/Scene/LabelCollection.js +14 -13
  164. package/Source/Scene/Material.js +2 -0
  165. package/Source/Scene/Megatexture.js +1 -0
  166. package/Source/Scene/MetadataClassProperty.js +24 -10
  167. package/Source/Scene/MetadataComponentType.js +115 -23
  168. package/Source/Scene/Model/CustomShaderPipelineStage.js +3 -1
  169. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +761 -263
  170. package/Source/Scene/Model/MaterialPipelineStage.js +147 -0
  171. package/Source/Scene/Model/MetadataPipelineStage.js +3 -3
  172. package/Source/Scene/Model/ModelDrawCommand.js +6 -0
  173. package/Source/Scene/Model/ModelReader.js +1 -1
  174. package/Source/Scene/Model/ModelUtility.js +3 -1
  175. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +330 -0
  176. package/Source/Scene/ModelComponents.js +1632 -1542
  177. package/Source/Scene/PickedMetadataInfo.js +1 -0
  178. package/Source/Scene/ScreenSpaceCameraController.js +13 -0
  179. package/Source/Scene/SkyBox.js +17 -8
  180. package/Source/Scene/TileBoundingRegion.js +1 -1
  181. package/Source/Scene/TileBoundingS2Cell.js +1 -1
  182. package/Source/Scene/TileBoundingSphere.js +1 -1
  183. package/Source/Scene/TweenCollection.js +7 -0
  184. package/Source/Scene/VectorGltf3DTileContent.js +382 -0
  185. package/Source/Scene/VertexAttributeSemantic.js +14 -0
  186. package/Source/Scene/WebMapServiceImageryProvider.js +2 -2
  187. package/Source/Scene/WebMapTileServiceImageryProvider.js +366 -131
  188. package/Source/Scene/parseStructuralMetadata.js +97 -37
  189. package/Source/Scene/renderBufferPointCollection.js +334 -0
  190. package/Source/Scene/renderBufferPolygonCollection.js +386 -0
  191. package/Source/Scene/renderBufferPolylineCollection.js +529 -0
  192. package/Source/Shaders/BillboardCollectionFS.glsl +2 -77
  193. package/Source/Shaders/BillboardCollectionFS.js +2 -77
  194. package/Source/Shaders/BillboardCollectionVS.glsl +2 -60
  195. package/Source/Shaders/BillboardCollectionVS.js +2 -60
  196. package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
  197. package/Source/Shaders/BufferPointMaterialFS.js +29 -0
  198. package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
  199. package/Source/Shaders/BufferPointMaterialVS.js +50 -0
  200. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  201. package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
  202. package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
  203. package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
  204. package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
  205. package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
  206. package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
  207. package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
  208. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +34 -48
  209. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +34 -49
  210. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
  211. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
  212. package/Source/Shaders/Model/ModelFS.glsl +15 -0
  213. package/Source/Shaders/Model/ModelFS.js +15 -0
  214. package/Source/Shaders/Model/ModelVS.glsl +8 -0
  215. package/Source/Shaders/Model/ModelVS.js +8 -0
  216. package/Source/Shaders/PolygonSignedDistanceFS.glsl +64 -33
  217. package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
  218. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +9 -2
  219. package/Source/Shaders/PrimitiveGaussianSplatVS.js +9 -2
  220. package/Source/Shaders/Voxels/VoxelFS.glsl +1 -1
  221. package/Source/Shaders/Voxels/VoxelFS.js +1 -1
  222. package/Source/Workers/decodeDraco.js +3 -0
  223. package/Source/Workers/decodeI3S.js +5 -2
  224. package/index.d.ts +1007 -111
  225. package/index.js +368 -343
  226. package/package.json +2 -2
@@ -139,6 +139,8 @@ MetadataComponentType.typeInfo = {
139
139
  maximumValue: BigInt("9223372036854775807"),
140
140
  minimumValue: BigInt("-9223372036854775808"),
141
141
  category: ScalarCategories.INTEGER,
142
+ downcastFunction: (value) =>
143
+ MetadataComponentType.clampToLimits(value, MetadataComponentType.INT32),
142
144
  },
143
145
  UINT64: {
144
146
  vectorCompatible: false,
@@ -146,6 +148,8 @@ MetadataComponentType.typeInfo = {
146
148
  maximumValue: BigInt("18446744073709551615"),
147
149
  minimumValue: BigInt(0),
148
150
  category: ScalarCategories.UNSIGNED_INTEGER,
151
+ downcastFunction: (value) =>
152
+ MetadataComponentType.clampToLimits(value, MetadataComponentType.UINT32),
149
153
  },
150
154
  FLOAT32: {
151
155
  vectorCompatible: true,
@@ -160,6 +164,7 @@ MetadataComponentType.typeInfo = {
160
164
  maximumValue: Number.MAX_VALUE,
161
165
  minimumValue: -Number.MAX_VALUE,
162
166
  category: ScalarCategories.FLOAT,
167
+ downcastFunction: (value) => Math.fround(value),
163
168
  },
164
169
  };
165
170
 
@@ -283,6 +288,25 @@ MetadataComponentType.category = function (type) {
283
288
  return typeInfo.category;
284
289
  };
285
290
 
291
+ /**
292
+ * Gets the component type as represented on the GPU (that is, taking downcasting into account).
293
+ * This is different from getting the glsl variable type of an entire metadata property. This is only for a component.
294
+ * @param {MetadataComponentType} type The component type.
295
+ * @returns {MetadataComponentType} The GPU component type.
296
+ */
297
+ MetadataComponentType.gpuComponentType = function (type) {
298
+ switch (type) {
299
+ case MetadataComponentType.INT64:
300
+ return "INT32";
301
+ case MetadataComponentType.UINT64:
302
+ return "UINT32";
303
+ case MetadataComponentType.FLOAT64:
304
+ return "FLOAT32";
305
+ default:
306
+ return type;
307
+ }
308
+ };
309
+
286
310
  /**
287
311
  * Normalizes signed integers to the range [-1.0, 1.0] and unsigned integers to
288
312
  * the range [0.0, 1.0].
@@ -401,6 +425,52 @@ MetadataComponentType.getSizeInBytes = function (type) {
401
425
  return MetadataComponentType.typeInfo[type].size;
402
426
  };
403
427
 
428
+ /**
429
+ * Clamps a value to the minimum and maximum limits of the given component type.
430
+ *
431
+ * @param {number|bigint} value The value to clamp.
432
+ * @param {MetadataComponentType} type The component type.
433
+ * @returns {number} The clamped value.
434
+ *
435
+ * @private
436
+ */
437
+ MetadataComponentType.clampToLimits = function (value, type) {
438
+ const min = MetadataComponentType.getMinimum(type);
439
+ const max = MetadataComponentType.getMaximum(type);
440
+
441
+ if (typeof value === "bigint") {
442
+ const minBigInt = BigInt(min);
443
+ const maxBigInt = BigInt(max);
444
+
445
+ if (value < minBigInt) {
446
+ return min;
447
+ }
448
+ if (value > maxBigInt) {
449
+ return max;
450
+ }
451
+
452
+ return Number(value);
453
+ }
454
+
455
+ return Math.max(min, Math.min(max, value));
456
+ };
457
+
458
+ MetadataComponentType.downcastFunction = function (type) {
459
+ const typeInfo = MetadataComponentType.typeInfo[type];
460
+ //>>includeStart('debug', pragmas.debug);
461
+ if (!defined(typeInfo)) {
462
+ throw new DeveloperError("type must be a valid MetadataComponentType");
463
+ }
464
+ //>>includeEnd('debug');
465
+
466
+ const func = typeInfo.downcastFunction;
467
+ if (!defined(func)) {
468
+ return (value) => value;
469
+ }
470
+
471
+ return func;
472
+ };
473
+
404
474
  /**
405
475
  * Gets the {@link MetadataComponentType} from a {@link ComponentDatatype}.
406
476
  *
@@ -468,37 +538,59 @@ MetadataComponentType.toComponentDatatype = function (type) {
468
538
  };
469
539
 
470
540
  /**
471
- * Gets a function for setting values of the given component type on a DataView.
541
+ * Gets functions for getting and setting values of the given component type on a DataView.
472
542
  *
473
543
  * @param {DataView} view The DataView.
474
544
  * @param {MetadataComponentType} componentType The component type.
475
- * @returns {Function} The setter function.
545
+ * @returns {Object} An object containing the getter and setter functions.
476
546
  *
477
547
  * @private
478
548
  */
479
- MetadataComponentType.getDataViewSetter = function (view, componentType) {
480
- const setters = {
481
- [MetadataComponentType.UINT8]: view.setUint8.bind(view),
482
- [MetadataComponentType.INT8]: view.setInt8.bind(view),
483
- [MetadataComponentType.UINT16]: (offset, value) =>
484
- view.setUint16(offset, value, true /* little-endian */),
485
- [MetadataComponentType.INT16]: (offset, value) =>
486
- view.setInt16(offset, value, true),
487
- [MetadataComponentType.UINT32]: (offset, value) =>
488
- view.setUint32(offset, value, true),
489
- [MetadataComponentType.INT32]: (offset, value) =>
490
- view.setInt32(offset, value, true),
491
- [MetadataComponentType.FLOAT32]: (offset, value) =>
492
- view.setFloat32(offset, value, true),
493
- [MetadataComponentType.FLOAT64]: (offset, value) =>
494
- view.setFloat64(offset, value, true),
495
- [MetadataComponentType.UINT64]: (offset, value) =>
496
- view.setBigUint64(offset, BigInt(value), true),
497
- [MetadataComponentType.INT64]: (offset, value) =>
498
- view.setBigInt64(offset, BigInt(value), true),
549
+ MetadataComponentType.getDataViewAccessors = function (view, componentType) {
550
+ const accessors = {
551
+ [MetadataComponentType.UINT8]: {
552
+ get: view.getUint8.bind(view),
553
+ set: view.setUint8.bind(view),
554
+ },
555
+ [MetadataComponentType.INT8]: {
556
+ get: view.getInt8.bind(view),
557
+ set: view.setInt8.bind(view),
558
+ },
559
+ [MetadataComponentType.UINT16]: {
560
+ get: (offset) => view.getUint16(offset, true),
561
+ set: (offset, value) => view.setUint16(offset, value, true),
562
+ },
563
+ [MetadataComponentType.INT16]: {
564
+ get: (offset) => view.getInt16(offset, true),
565
+ set: (offset, value) => view.setInt16(offset, value, true),
566
+ },
567
+ [MetadataComponentType.UINT32]: {
568
+ get: (offset) => view.getUint32(offset, true),
569
+ set: (offset, value) => view.setUint32(offset, value, true),
570
+ },
571
+ [MetadataComponentType.INT32]: {
572
+ get: (offset) => view.getInt32(offset, true),
573
+ set: (offset, value) => view.setInt32(offset, value, true),
574
+ },
575
+ [MetadataComponentType.FLOAT32]: {
576
+ get: (offset) => view.getFloat32(offset, true),
577
+ set: (offset, value) => view.setFloat32(offset, value, true),
578
+ },
579
+ [MetadataComponentType.FLOAT64]: {
580
+ get: (offset) => view.getFloat64(offset, true),
581
+ set: (offset, value) => view.setFloat64(offset, value, true),
582
+ },
583
+ [MetadataComponentType.UINT64]: {
584
+ get: (offset) => view.getBigUint64(offset, true),
585
+ set: (offset, value) => view.setBigUint64(offset, BigInt(value), true),
586
+ },
587
+ [MetadataComponentType.INT64]: {
588
+ get: (offset) => view.getBigInt64(offset, true),
589
+ set: (offset, value) => view.setBigInt64(offset, BigInt(value), true),
590
+ },
499
591
  };
500
592
 
501
- return setters[componentType];
593
+ return accessors[componentType];
502
594
  };
503
595
 
504
596
  export default Object.freeze(MetadataComponentType);
@@ -730,7 +730,9 @@ function getAllPropertyIds(primitive, structuralMetadata) {
730
730
  function addUsedPropertyIds(propertyContainerIds, propertyContainers) {
731
731
  for (const id of propertyContainerIds) {
732
732
  const propertyContainer = propertyContainers[id];
733
- Object.keys(propertyContainer.properties).forEach((propertyId) =>
733
+ const classProperties = propertyContainer.class.properties;
734
+
735
+ Object.keys(classProperties).forEach((propertyId) =>
734
736
  primitivePropertyIds.add(propertyId),
735
737
  );
736
738
  }