@loaders.gl/gltf 4.0.0-alpha.24 → 4.0.0-alpha.25

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 (77) hide show
  1. package/dist/dist.min.js +237 -146
  2. package/dist/es5/index.js +12 -0
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/api/gltf-extensions.js +1 -1
  5. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  6. package/dist/es5/lib/extensions/EXT_mesh_features.js +12 -24
  7. package/dist/es5/lib/extensions/EXT_mesh_features.js.map +1 -1
  8. package/dist/es5/lib/extensions/EXT_structural_metadata.js +72 -28
  9. package/dist/es5/lib/extensions/EXT_structural_metadata.js.map +1 -1
  10. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +38 -3
  11. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  12. package/dist/es5/lib/extensions/utils/3d-tiles-utils.js +26 -18
  13. package/dist/es5/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  14. package/dist/es5/lib/gltf-utils/gltf-utils.js +29 -0
  15. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  16. package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js +2 -0
  17. package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  18. package/dist/es5/lib/types/gltf-ext-mesh-features-schema.js.map +1 -1
  19. package/dist/es5/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -1
  20. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
  21. package/dist/es5/lib/types/gltf-types.js.map +1 -1
  22. package/dist/es5/lib/utils/version.js +1 -1
  23. package/dist/esm/index.js +2 -0
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/lib/api/gltf-extensions.js +1 -1
  26. package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
  27. package/dist/esm/lib/extensions/EXT_mesh_features.js +13 -25
  28. package/dist/esm/lib/extensions/EXT_mesh_features.js.map +1 -1
  29. package/dist/esm/lib/extensions/EXT_structural_metadata.js +48 -14
  30. package/dist/esm/lib/extensions/EXT_structural_metadata.js.map +1 -1
  31. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +38 -4
  32. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  33. package/dist/esm/lib/extensions/utils/3d-tiles-utils.js +27 -19
  34. package/dist/esm/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  35. package/dist/esm/lib/gltf-utils/gltf-utils.js +30 -0
  36. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  37. package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js +2 -0
  38. package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  39. package/dist/esm/lib/types/gltf-ext-mesh-features-schema.js.map +1 -1
  40. package/dist/esm/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -1
  41. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
  42. package/dist/esm/lib/types/gltf-types.js.map +1 -1
  43. package/dist/esm/lib/utils/version.js +1 -1
  44. package/dist/index.d.ts +6 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/lib/extensions/EXT_mesh_features.d.ts.map +1 -1
  47. package/dist/lib/extensions/EXT_structural_metadata.d.ts +9 -1
  48. package/dist/lib/extensions/EXT_structural_metadata.d.ts.map +1 -1
  49. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +9 -0
  50. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
  51. package/dist/lib/extensions/utils/3d-tiles-utils.d.ts +12 -12
  52. package/dist/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  53. package/dist/lib/gltf-utils/gltf-utils.d.ts +2 -0
  54. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  55. package/dist/lib/types/gltf-ext-feature-metadata-schema.d.ts +421 -0
  56. package/dist/lib/types/gltf-ext-feature-metadata-schema.d.ts.map +1 -0
  57. package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts +4 -6
  58. package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts.map +1 -1
  59. package/dist/lib/types/gltf-ext-structural-metadata-schema.d.ts +44 -25
  60. package/dist/lib/types/gltf-ext-structural-metadata-schema.d.ts.map +1 -1
  61. package/dist/lib/types/gltf-json-schema.d.ts +1 -420
  62. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  63. package/dist/lib/types/gltf-types.d.ts +3 -0
  64. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  65. package/package.json +6 -6
  66. package/src/index.ts +10 -5
  67. package/src/lib/api/gltf-extensions.ts +1 -1
  68. package/src/lib/extensions/EXT_mesh_features.ts +18 -44
  69. package/src/lib/extensions/EXT_structural_metadata.ts +176 -96
  70. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +70 -11
  71. package/src/lib/extensions/utils/3d-tiles-utils.ts +50 -39
  72. package/src/lib/gltf-utils/gltf-utils.ts +38 -0
  73. package/src/lib/types/gltf-ext-feature-metadata-schema.ts +470 -0
  74. package/src/lib/types/gltf-ext-mesh-features-schema.ts +4 -6
  75. package/src/lib/types/gltf-ext-structural-metadata-schema.ts +46 -27
  76. package/src/lib/types/gltf-json-schema.ts +1 -468
  77. package/src/lib/types/gltf-types.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_EXT_mesh_features","require","_EXT_structural_metadata","_EXT_feature_metadata","_gltfLoader","_gltfWriter","_glbLoader","_glbWriter","_gltfScenegraph","_postProcessGltf","_gltfUtils"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase, indent */\nexport type {GLB} from './lib/types/glb-types';\n\n// Raw GLTF Types (i.e. not post-processed)\nexport type {\n GLTF,\n GLTFAccessor,\n GLTFBuffer,\n GLTFBufferView,\n GLTFMeshPrimitive,\n GLTFMesh,\n GLTFNode,\n GLTFMaterial,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture,\n GLTFImage,\n GLTFObject,\n // The following extensions are handled by the GLTFLoader and removed from the parsed glTF (disable via options.gltf.excludeExtensions)\n GLTF_KHR_binary_glTF,\n GLTF_KHR_draco_mesh_compression,\n GLTF_KHR_texture_basisu,\n GLTF_EXT_meshopt_compression,\n GLTF_EXT_texture_webp,\n // 3DTiles extensions\n GLTF_EXT_feature_metadata_GLTF,\n GLTF_EXT_feature_metadata_Schema,\n GLTF_EXT_feature_metadata_Class,\n GLTF_EXT_feature_metadata_ClassProperty,\n GLTF_EXT_feature_metadata_Enum,\n GLTF_EXT_feature_metadata_EnumValue,\n GLTF_EXT_feature_metadata_FeatureTable,\n GLTF_EXT_feature_metadata_FeatureTableProperty,\n GLTF_EXT_feature_metadata_FeatureTexture,\n GLTF_EXT_feature_metadata_TextureAccessor,\n GLTF_EXT_feature_metadata_Statistics,\n GLTF_EXT_feature_metadata_StatisticsClass,\n GLTF_EXT_feature_metadata_StatisticsClassProperty,\n GLTF_EXT_feature_metadata_Primitive,\n GLTF_EXT_feature_metadata_FeatureIdAttribute,\n GLTF_EXT_feature_metadata_FeatureIdAttributeFeatureIds,\n GLTF_EXT_feature_metadata_FeatureIdTexture,\n GLTF_EXT_feature_metadata_FeatureIdTextureAccessor\n} from './lib/types/gltf-json-schema';\n\nexport type {GLTF_EXT_structural_metadata} from './lib/types/gltf-ext-structural-metadata-schema';\n\nexport type {\n GLTF_EXT_mesh_features,\n GLTF_EXT_mesh_features_featureId\n} from './lib/types/gltf-ext-mesh-features-schema';\n\nexport {name as EXT_MESH_FEATURES} from './lib/extensions/EXT_mesh_features';\nexport {name as EXT_STRUCTURAL_METADATA} from './lib/extensions/EXT_structural_metadata';\nexport {name as EXT_FEATURE_METADATA} from './lib/extensions/deprecated/EXT_feature_metadata';\n\n// Postprocessed types (modified GLTF types)\nexport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFNodePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFMeshPrimitivePostprocessed,\n GLTFImagePostprocessed,\n GLTFTexturePostprocessed\n} from './lib/types/gltf-postprocessed-schema';\n\nexport type {GLTFWithBuffers} from './lib/types/gltf-types';\n\n// glTF loader/writer definition objects\nexport {GLTFLoader} from './gltf-loader';\nexport {GLTFWriter} from './gltf-writer';\n\n// GLB Loader & Writer (for custom formats that want to leverage the GLB binary \"envelope\")\nexport {GLBLoader} from './glb-loader';\nexport {GLBWriter} from './glb-writer';\n\n// glTF Data Access Helper Class\nexport {GLTFScenegraph} from './lib/api/gltf-scenegraph';\nexport {postProcessGLTF} from './lib/api/post-process-gltf';\nexport {getMemoryUsageGLTF as _getMemoryUsageGLTF} from './lib/gltf-utils/gltf-utils';\n\n/** @deprecated */\n// export type {GLTFMesh as Mesh} from './lib/types/gltf-json-schema';\n/** @deprecated */\n// export type {GLTFNodePostprocessed as Node} from './lib/types/gltf-postprocessed-schema';\n/** @deprecated */\n// export type {GLTFAccessorPostprocessed as Accessor} from './lib/types/gltf-postprocessed-schema';\n// /** @deprecated */\n// export type {GLTFImagePostprocessed as Image} from './lib/types/gltf-postprocessed-schema';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAiBA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAGA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAGA,IAAAO,eAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA"}
1
+ {"version":3,"file":"index.js","names":["_EXT_mesh_features","require","_EXT_structural_metadata","_EXT_feature_metadata","_gltfLoader","_gltfWriter","_glbLoader","_glbWriter","_gltfScenegraph","_postProcessGltf","_gltfUtils"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase, indent */\nexport type {GLB} from './lib/types/glb-types';\n\n// Raw GLTF Types (i.e. not post-processed)\nexport type {\n GLTF,\n GLTFAccessor,\n GLTFBuffer,\n GLTFBufferView,\n GLTFMeshPrimitive,\n GLTFMesh,\n GLTFNode,\n GLTFMaterial,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture,\n GLTFImage,\n GLTFObject,\n // The following extensions are handled by the GLTFLoader and removed from the parsed glTF (disable via options.gltf.excludeExtensions)\n GLTF_KHR_binary_glTF,\n GLTF_KHR_draco_mesh_compression,\n GLTF_KHR_texture_basisu,\n GLTF_EXT_meshopt_compression,\n GLTF_EXT_texture_webp\n} from './lib/types/gltf-json-schema';\n\n// 3DTiles extensions\nexport type {\n GLTF_EXT_feature_metadata_GLTF,\n GLTF_EXT_feature_metadata_Schema,\n GLTF_EXT_feature_metadata_Class,\n GLTF_EXT_feature_metadata_ClassProperty,\n GLTF_EXT_feature_metadata_Enum,\n GLTF_EXT_feature_metadata_EnumValue,\n GLTF_EXT_feature_metadata_FeatureTable,\n GLTF_EXT_feature_metadata_FeatureTableProperty,\n GLTF_EXT_feature_metadata_FeatureTexture,\n GLTF_EXT_feature_metadata_TextureAccessor,\n GLTF_EXT_feature_metadata_Statistics,\n GLTF_EXT_feature_metadata_StatisticsClass,\n GLTF_EXT_feature_metadata_StatisticsClassProperty,\n GLTF_EXT_feature_metadata_Primitive,\n GLTF_EXT_feature_metadata_FeatureIdAttribute,\n GLTF_EXT_feature_metadata_FeatureIdAttributeFeatureIds,\n GLTF_EXT_feature_metadata_FeatureIdTexture,\n GLTF_EXT_feature_metadata_FeatureIdTextureAccessor\n} from './lib/types/gltf-ext-feature-metadata-schema';\n\nexport type {GLTF_EXT_structural_metadata_GLTF} from './lib/types/gltf-ext-structural-metadata-schema';\n\nexport type {\n GLTF_EXT_mesh_features,\n GLTF_EXT_mesh_features_featureId\n} from './lib/types/gltf-ext-mesh-features-schema';\n\nexport {name as EXT_MESH_FEATURES} from './lib/extensions/EXT_mesh_features';\nexport {name as EXT_STRUCTURAL_METADATA} from './lib/extensions/EXT_structural_metadata';\nexport {name as EXT_FEATURE_METADATA} from './lib/extensions/deprecated/EXT_feature_metadata';\nexport {getPropertyTableFromExtFeatureMetadata} from './lib/extensions/deprecated/EXT_feature_metadata';\nexport {getPropertyTableFromExtStructuralMetadata} from './lib/extensions/EXT_structural_metadata';\n\n// Postprocessed types (modified GLTF types)\nexport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFNodePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFMeshPrimitivePostprocessed,\n GLTFImagePostprocessed,\n GLTFTexturePostprocessed\n} from './lib/types/gltf-postprocessed-schema';\n\nexport type {GLTFWithBuffers, FeatureTableJson} from './lib/types/gltf-types';\n\n// glTF loader/writer definition objects\nexport {GLTFLoader} from './gltf-loader';\nexport {GLTFWriter} from './gltf-writer';\n\n// GLB Loader & Writer (for custom formats that want to leverage the GLB binary \"envelope\")\nexport {GLBLoader} from './glb-loader';\nexport {GLBWriter} from './glb-writer';\n\n// glTF Data Access Helper Class\nexport {GLTFScenegraph} from './lib/api/gltf-scenegraph';\nexport {postProcessGLTF} from './lib/api/post-process-gltf';\nexport {getMemoryUsageGLTF as _getMemoryUsageGLTF} from './lib/gltf-utils/gltf-utils';\n\n/** @deprecated */\n// export type {GLTFMesh as Mesh} from './lib/types/gltf-json-schema';\n/** @deprecated */\n// export type {GLTFNodePostprocessed as Node} from './lib/types/gltf-postprocessed-schema';\n/** @deprecated */\n// export type {GLTFAccessorPostprocessed as Accessor} from './lib/types/gltf-postprocessed-schema';\n// /** @deprecated */\n// export type {GLTFImagePostprocessed as Image} from './lib/types/gltf-postprocessed-schema';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAmBA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAGA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAGA,IAAAO,eAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA"}
@@ -26,7 +26,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
26
26
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
27
27
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
28
28
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
29
- var EXTENSIONS = [EXT_mesh_features, EXT_structural_metadata, EXT_meshopt_compression, EXT_texture_webp, KHR_texture_basisu, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_unlit, KHR_techniques_webgl, KHR_texture_transform, EXT_feature_metadata];
29
+ var EXTENSIONS = [EXT_structural_metadata, EXT_mesh_features, EXT_meshopt_compression, EXT_texture_webp, KHR_texture_basisu, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_unlit, KHR_techniques_webgl, KHR_texture_transform, EXT_feature_metadata];
30
30
  exports.EXTENSIONS = EXTENSIONS;
31
31
  function preprocessExtensions(gltf) {
32
32
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-extensions.js","names":["EXT_mesh_features","_interopRequireWildcard","require","EXT_structural_metadata","EXT_meshopt_compression","EXT_texture_webp","KHR_texture_basisu","KHR_draco_mesh_compression","KHR_texture_transform","KHR_lights_punctual","KHR_materials_unlit","KHR_techniques_webgl","EXT_feature_metadata","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","EXTENSIONS","exports","preprocessExtensions","gltf","options","arguments","undefined","context","extensions","filter","extension","useExtension","_iterator","_step","_extension$preprocess","preprocess","decodeExtensions","_x","_decodeExtensions","apply","_asyncToGenerator2","_regenerator","mark","_callee","_iterator2","_step2","_extension$decode","_args","wrap","_callee$","_context","prev","decode","t0","finish","stop","extensionName","_options$gltf","excludes","excludeExtensions","exclude"],"sources":["../../../../src/lib/api/gltf-extensions.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {GLTF} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\n// GLTF 1.0 extensions (decode only)\n// import * as KHR_binary_gltf from './KHR_draco_mesh_compression';\n\n// GLTF 2.0 Vendor extensions\nimport * as EXT_mesh_features from '../extensions/EXT_mesh_features';\nimport * as EXT_structural_metadata from '../extensions/EXT_structural_metadata';\n\n// GLTF 2.0 Khronos extensions (decode/encode)\nimport * as EXT_meshopt_compression from '../extensions/EXT_meshopt_compression';\nimport * as EXT_texture_webp from '../extensions/EXT_texture_webp';\nimport * as KHR_texture_basisu from '../extensions/KHR_texture_basisu';\nimport * as KHR_draco_mesh_compression from '../extensions/KHR_draco_mesh_compression';\nimport * as KHR_texture_transform from '../extensions/KHR_texture_transform';\n\n// Deprecated. These should be handled by rendering library (e.g. luma.gl), not the loader.\nimport * as KHR_lights_punctual from '../extensions/deprecated/KHR_lights_punctual';\nimport * as KHR_materials_unlit from '../extensions/deprecated/KHR_materials_unlit';\nimport * as KHR_techniques_webgl from '../extensions/deprecated/KHR_techniques_webgl';\nimport * as EXT_feature_metadata from '../extensions/deprecated/EXT_feature_metadata';\n\ntype GLTFExtensionPlugin = {\n name: string;\n preprocess?: (gltfData: {json: GLTF}, options: GLTFLoaderOptions, context) => void;\n decode?: (\n gltfData: {\n json: GLTF;\n buffers: {arrayBuffer: ArrayBuffer; byteOffset: number; byteLength: number}[];\n },\n options: GLTFLoaderOptions,\n context\n ) => Promise<void>;\n encode?: (gltfData: {json: GLTF}, options: GLTFLoaderOptions) => void;\n};\n\n/**\n * List of extensions processed by the GLTFLoader\n * Note that may extensions can only be handled on the rendering stage and are left out here\n * These are just extensions that can be handled fully or partially during loading.\n */\nexport const EXTENSIONS: GLTFExtensionPlugin[] = [\n // 1.0\n // KHR_binary_gltf is handled separately - must be processed before other parsing starts\n // KHR_binary_gltf,\n\n // 2.0\n EXT_mesh_features,\n EXT_structural_metadata,\n EXT_meshopt_compression,\n EXT_texture_webp,\n // Basisu should come after webp, we want basisu to be preferred if both are provided\n KHR_texture_basisu,\n KHR_draco_mesh_compression,\n KHR_lights_punctual,\n KHR_materials_unlit,\n KHR_techniques_webgl,\n KHR_texture_transform,\n EXT_feature_metadata\n];\n\n/** Call before any resource loading starts */\nexport function preprocessExtensions(gltf, options: GLTFLoaderOptions = {}, context?) {\n const extensions = EXTENSIONS.filter((extension) => useExtension(extension.name, options));\n for (const extension of extensions) {\n extension.preprocess?.(gltf, options, context);\n }\n}\n\n/** Call after resource loading */\nexport async function decodeExtensions(gltf, options: GLTFLoaderOptions = {}, context?) {\n const extensions = EXTENSIONS.filter((extension) => useExtension(extension.name, options));\n for (const extension of extensions) {\n // Note: We decode async extensions sequentially, this might not be necessary\n // Currently we only have Draco, but when we add Basis we may revisit\n await extension.decode?.(gltf, options, context);\n }\n}\n\nfunction useExtension(extensionName: string, options: GLTFLoaderOptions) {\n const excludes = options?.gltf?.excludeExtensions || {};\n const exclude = extensionName in excludes && !excludes[extensionName];\n return !exclude;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"gltf-extensions.js","names":["EXT_mesh_features","_interopRequireWildcard","require","EXT_structural_metadata","EXT_meshopt_compression","EXT_texture_webp","KHR_texture_basisu","KHR_draco_mesh_compression","KHR_texture_transform","KHR_lights_punctual","KHR_materials_unlit","KHR_techniques_webgl","EXT_feature_metadata","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","EXTENSIONS","exports","preprocessExtensions","gltf","options","arguments","undefined","context","extensions","filter","extension","useExtension","_iterator","_step","_extension$preprocess","preprocess","decodeExtensions","_x","_decodeExtensions","apply","_asyncToGenerator2","_regenerator","mark","_callee","_iterator2","_step2","_extension$decode","_args","wrap","_callee$","_context","prev","decode","t0","finish","stop","extensionName","_options$gltf","excludes","excludeExtensions","exclude"],"sources":["../../../../src/lib/api/gltf-extensions.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {GLTF} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\n// GLTF 1.0 extensions (decode only)\n// import * as KHR_binary_gltf from './KHR_draco_mesh_compression';\n\n// GLTF 2.0 Vendor extensions\nimport * as EXT_mesh_features from '../extensions/EXT_mesh_features';\nimport * as EXT_structural_metadata from '../extensions/EXT_structural_metadata';\n\n// GLTF 2.0 Khronos extensions (decode/encode)\nimport * as EXT_meshopt_compression from '../extensions/EXT_meshopt_compression';\nimport * as EXT_texture_webp from '../extensions/EXT_texture_webp';\nimport * as KHR_texture_basisu from '../extensions/KHR_texture_basisu';\nimport * as KHR_draco_mesh_compression from '../extensions/KHR_draco_mesh_compression';\nimport * as KHR_texture_transform from '../extensions/KHR_texture_transform';\n\n// Deprecated. These should be handled by rendering library (e.g. luma.gl), not the loader.\nimport * as KHR_lights_punctual from '../extensions/deprecated/KHR_lights_punctual';\nimport * as KHR_materials_unlit from '../extensions/deprecated/KHR_materials_unlit';\nimport * as KHR_techniques_webgl from '../extensions/deprecated/KHR_techniques_webgl';\nimport * as EXT_feature_metadata from '../extensions/deprecated/EXT_feature_metadata';\n\ntype GLTFExtensionPlugin = {\n name: string;\n preprocess?: (gltfData: {json: GLTF}, options: GLTFLoaderOptions, context) => void;\n decode?: (\n gltfData: {\n json: GLTF;\n buffers: {arrayBuffer: ArrayBuffer; byteOffset: number; byteLength: number}[];\n },\n options: GLTFLoaderOptions,\n context\n ) => Promise<void>;\n encode?: (gltfData: {json: GLTF}, options: GLTFLoaderOptions) => void;\n};\n\n/**\n * List of extensions processed by the GLTFLoader\n * Note that may extensions can only be handled on the rendering stage and are left out here\n * These are just extensions that can be handled fully or partially during loading.\n */\nexport const EXTENSIONS: GLTFExtensionPlugin[] = [\n // 1.0\n // KHR_binary_gltf is handled separately - must be processed before other parsing starts\n // KHR_binary_gltf,\n\n // 2.0\n EXT_structural_metadata,\n EXT_mesh_features,\n EXT_meshopt_compression,\n EXT_texture_webp,\n // Basisu should come after webp, we want basisu to be preferred if both are provided\n KHR_texture_basisu,\n KHR_draco_mesh_compression,\n KHR_lights_punctual,\n KHR_materials_unlit,\n KHR_techniques_webgl,\n KHR_texture_transform,\n EXT_feature_metadata\n];\n\n/** Call before any resource loading starts */\nexport function preprocessExtensions(gltf, options: GLTFLoaderOptions = {}, context?) {\n const extensions = EXTENSIONS.filter((extension) => useExtension(extension.name, options));\n for (const extension of extensions) {\n extension.preprocess?.(gltf, options, context);\n }\n}\n\n/** Call after resource loading */\nexport async function decodeExtensions(gltf, options: GLTFLoaderOptions = {}, context?) {\n const extensions = EXTENSIONS.filter((extension) => useExtension(extension.name, options));\n for (const extension of extensions) {\n // Note: We decode async extensions sequentially, this might not be necessary\n // Currently we only have Draco, but when we add Basis we may revisit\n await extension.decode?.(gltf, options, context);\n }\n}\n\nfunction useExtension(extensionName: string, options: GLTFLoaderOptions) {\n const excludes = options?.gltf?.excludeExtensions || {};\n const exclude = extensionName in excludes && !excludes[extensionName];\n return !exclude;\n}\n"],"mappings":"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"}
@@ -10,7 +10,6 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _gltfScenegraph = require("../api/gltf-scenegraph");
12
12
  var _dTilesUtils = require("./utils/3d-tiles-utils");
13
- var _EXT_structural_metadata = require("./EXT_structural_metadata");
14
13
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
14
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
15
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -66,41 +65,30 @@ function decodeExtMeshFeatures(scenegraph, options) {
66
65
  }
67
66
  }
68
67
  function processMeshPrimitiveFeatures(scenegraph, primitive, options) {
69
- var _primitive$extensions;
68
+ var _options$gltf, _primitive$extensions;
69
+ if (!(options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadBuffers)) {
70
+ return;
71
+ }
70
72
  var extension = (_primitive$extensions = primitive.extensions) === null || _primitive$extensions === void 0 ? void 0 : _primitive$extensions[EXT_MESH_FEATURES_NAME];
71
73
  var featureIds = extension === null || extension === void 0 ? void 0 : extension.featureIds;
72
- if (!featureIds) return;
73
- if (!extension.dataAttributeNames) {
74
- extension.dataAttributeNames = [];
74
+ if (!featureIds) {
75
+ return;
75
76
  }
76
- var featureIdCount = 0;
77
77
  var _iterator3 = _createForOfIteratorHelper(featureIds),
78
78
  _step3;
79
79
  try {
80
80
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
81
- var _options$gltf, _propertyTable;
81
+ var _options$gltf2;
82
82
  var featureId = _step3.value;
83
- var propertyTable = null;
84
- if (typeof featureId.propertyTable === 'number') {
85
- propertyTable = (0, _EXT_structural_metadata.getPropertyTablePopulated)(scenegraph, featureId.propertyTable);
86
- }
87
- var propertyData = null;
83
+ var featureIdData = null;
88
84
  if (typeof featureId.attribute !== 'undefined') {
89
85
  var accessorKey = "_FEATURE_ID_".concat(featureId.attribute);
90
86
  var accessorIndex = primitive.attributes[accessorKey];
91
- var propertyDataTypedArray = scenegraph.getTypedArrayForAccessor(accessorIndex);
92
- propertyData = Array.prototype.slice.call(propertyDataTypedArray);
93
- } else if (typeof featureId.texture !== 'undefined' && options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadImages) {
94
- propertyData = (0, _dTilesUtils.getPrimitiveTextureData)(scenegraph, featureId.texture, primitive);
87
+ featureIdData = scenegraph.getTypedArrayForAccessor(accessorIndex);
88
+ } else if (typeof featureId.texture !== 'undefined' && options !== null && options !== void 0 && (_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadImages) {
89
+ featureIdData = (0, _dTilesUtils.getPrimitiveTextureData)(scenegraph, featureId.texture, primitive);
95
90
  } else {}
96
- var attributeName = featureId.label || ((_propertyTable = propertyTable) === null || _propertyTable === void 0 ? void 0 : _propertyTable.name) || "featureAttribute".concat(featureIdCount);
97
- var featureTable = [];
98
- if (propertyData) {
99
- (0, _dTilesUtils.primitivePropertyDataToAttributes)(scenegraph, attributeName, propertyData, featureTable, primitive);
100
- }
101
- extension.dataAttributeNames.push(attributeName);
102
- featureId.data = featureTable;
103
- featureIdCount++;
91
+ featureId.data = featureIdData;
104
92
  }
105
93
  } catch (err) {
106
94
  _iterator3.e(err);
@@ -1 +1 @@
1
- {"version":3,"file":"EXT_mesh_features.js","names":["_gltfScenegraph","require","_dTilesUtils","_EXT_structural_metadata","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","EXT_MESH_FEATURES_NAME","exports","decode","_x","_x2","_decode","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","gltfData","options","scenegraph","wrap","_callee$","_context","prev","GLTFScenegraph","decodeExtMeshFeatures","stop","json","gltf","meshes","_iterator","_step","mesh","_iterator2","primitives","_step2","primitive","processMeshPrimitiveFeatures","_primitive$extensions","extension","extensions","featureIds","dataAttributeNames","featureIdCount","_iterator3","_step3","_options$gltf","_propertyTable","featureId","propertyTable","getPropertyTablePopulated","propertyData","attribute","accessorKey","concat","accessorIndex","attributes","propertyDataTypedArray","getTypedArrayForAccessor","texture","loadImages","getPrimitiveTextureData","attributeName","label","featureTable","primitivePropertyDataToAttributes","push","data"],"sources":["../../../../src/lib/extensions/EXT_mesh_features.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport type {GLTF, GLTFMeshPrimitive} from '../types/gltf-json-schema';\nimport {GLTFLoaderOptions} from '../../gltf-loader';\nimport type {\n GLTF_EXT_mesh_features,\n GLTF_EXT_mesh_features_featureId\n} from '../types/gltf-ext-mesh-features-schema';\nimport type {GLTF_EXT_structural_metadata_PropertyTable} from '../types/gltf-ext-structural-metadata-schema';\n\nimport {GLTFScenegraph} from '../api/gltf-scenegraph';\nimport {getPrimitiveTextureData, primitivePropertyDataToAttributes} from './utils/3d-tiles-utils';\nimport {getPropertyTablePopulated} from './EXT_structural_metadata';\n\nconst EXT_MESH_FEATURES_NAME = 'EXT_mesh_features';\nexport const name = EXT_MESH_FEATURES_NAME;\n\nexport async function decode(gltfData: {json: GLTF}, options: GLTFLoaderOptions): Promise<void> {\n const scenegraph = new GLTFScenegraph(gltfData);\n decodeExtMeshFeatures(scenegraph, options);\n}\n\n/**\n * Decodes feature metadata from extension\n * @param {GLTFScenegraph} scenegraph - Instance of the class for structured access to GLTF data.\n * @param {GLTFLoaderOptions} options - loader options.\n */\nfunction decodeExtMeshFeatures(scenegraph: GLTFScenegraph, options: GLTFLoaderOptions): void {\n const json = scenegraph.gltf.json;\n if (!json.meshes) {\n return;\n }\n\n // Iterate through all meshes/primitives.\n for (const mesh of json.meshes) {\n for (const primitive of mesh.primitives) {\n processMeshPrimitiveFeatures(scenegraph, primitive, options);\n }\n }\n}\n\n/**\n * Takes data from EXT_mesh_features and store it in 'data' property of featureIds.\n * If combined with EXT_structural_metadata, corresponding data are taken from the property tables of that extension.\n * @param {GLTFScenegraph} scenegraph - Instance of the class for structured access to GLTF data.\n * @param {GLTFMeshPrimitive} primitive - primitive that contains extensions.\n * @param {GLTFLoaderOptions} options - loader options.\n */\nfunction processMeshPrimitiveFeatures(\n scenegraph: GLTFScenegraph,\n primitive: GLTFMeshPrimitive,\n options: GLTFLoaderOptions\n): void {\n const extension = primitive.extensions?.[EXT_MESH_FEATURES_NAME] as GLTF_EXT_mesh_features;\n const featureIds: GLTF_EXT_mesh_features_featureId[] = extension?.featureIds;\n if (!featureIds) return;\n\n if (!extension.dataAttributeNames) {\n extension.dataAttributeNames = [];\n }\n\n let featureIdCount = 0; // It can be used to name the feature if neither label nor property table name is provided.\n for (const featureId of featureIds) {\n /*\n When combined with the EXT_structural_metadata extension, feature ID sets can be associated with property tables.\n A property table maps each feature ID to a set of values that are associated with the respective feature.\n The feature ID in this case serves as an index for the row of the table.\n The index of the property table that a certain set of feature IDs is associated with is stored in the propertyTable of the feature ID set definition.\n */\n let propertyTable: GLTF_EXT_structural_metadata_PropertyTable | null = null;\n if (typeof featureId.propertyTable === 'number') {\n propertyTable = getPropertyTablePopulated(scenegraph, featureId.propertyTable);\n }\n\n let propertyData: number[] | null = null;\n // Process \"Feature ID by Vertex\"\n if (typeof featureId.attribute !== 'undefined') {\n const accessorKey = `_FEATURE_ID_${featureId.attribute}`;\n const accessorIndex = primitive.attributes[accessorKey];\n const propertyDataTypedArray = scenegraph.getTypedArrayForAccessor(accessorIndex);\n propertyData = Array.prototype.slice.call(propertyDataTypedArray);\n }\n\n // Process \"Feature ID by Texture Coordinates\"\n else if (typeof featureId.texture !== 'undefined' && options?.gltf?.loadImages) {\n propertyData = getPrimitiveTextureData(scenegraph, featureId.texture, primitive);\n }\n\n // Process \"Feature ID by Index\"\n else {\n /*\n When both featureId.attribute and featureId.texture are undefined,\n then the feature ID value for each vertex is given implicitly, via the index of the vertex.\n In this case, the featureCount must match the number of vertices of the mesh primitive.\n */\n // TODO: At the moment of writing we don't have a tileset with the data of that kind. Implement it later.\n }\n\n const attributeName =\n featureId.label || propertyTable?.name || `featureAttribute${featureIdCount}`;\n\n // featureTable - an array where unique data from the property data are being stored\n const featureTable: number[] = [];\n if (propertyData) {\n primitivePropertyDataToAttributes(\n scenegraph,\n attributeName,\n propertyData,\n featureTable,\n primitive\n );\n }\n extension.dataAttributeNames.push(attributeName);\n featureId.data = featureTable;\n\n featureIdCount++;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EXT_mesh_features.js","names":["_gltfScenegraph","require","_dTilesUtils","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","EXT_MESH_FEATURES_NAME","exports","decode","_x","_x2","_decode","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","gltfData","options","scenegraph","wrap","_callee$","_context","prev","GLTFScenegraph","decodeExtMeshFeatures","stop","json","gltf","meshes","_iterator","_step","mesh","_iterator2","primitives","_step2","primitive","processMeshPrimitiveFeatures","_options$gltf","_primitive$extensions","loadBuffers","extension","extensions","featureIds","_iterator3","_step3","_options$gltf2","featureId","featureIdData","attribute","accessorKey","concat","accessorIndex","attributes","getTypedArrayForAccessor","texture","loadImages","getPrimitiveTextureData","data"],"sources":["../../../../src/lib/extensions/EXT_mesh_features.ts"],"sourcesContent":["// GLTF EXTENSION: EXT_mesh_features\n// https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features\n/* eslint-disable camelcase */\nimport type {GLTF, GLTFMeshPrimitive} from '../types/gltf-json-schema';\nimport {GLTFLoaderOptions} from '../../gltf-loader';\nimport type {\n GLTF_EXT_mesh_features,\n GLTF_EXT_mesh_features_featureId\n} from '../types/gltf-ext-mesh-features-schema';\n\nimport {GLTFScenegraph} from '../api/gltf-scenegraph';\nimport {getPrimitiveTextureData} from './utils/3d-tiles-utils';\n\nconst EXT_MESH_FEATURES_NAME = 'EXT_mesh_features';\nexport const name = EXT_MESH_FEATURES_NAME;\n\nexport async function decode(gltfData: {json: GLTF}, options: GLTFLoaderOptions): Promise<void> {\n const scenegraph = new GLTFScenegraph(gltfData);\n decodeExtMeshFeatures(scenegraph, options);\n}\n\n/**\n * Decodes feature metadata from extension.\n * @param {GLTFScenegraph} scenegraph - Instance of the class for structured access to GLTF data.\n * @param {GLTFLoaderOptions} options - GLTFLoader options.\n */\nfunction decodeExtMeshFeatures(scenegraph: GLTFScenegraph, options: GLTFLoaderOptions): void {\n const json = scenegraph.gltf.json;\n if (!json.meshes) {\n return;\n }\n\n // Iterate through all meshes/primitives.\n for (const mesh of json.meshes) {\n for (const primitive of mesh.primitives) {\n processMeshPrimitiveFeatures(scenegraph, primitive, options);\n }\n }\n}\n\n/**\n * Takes data from EXT_mesh_features and store it in 'data' property of featureIds.\n * If combined with EXT_structural_metadata, corresponding data are taken from the property tables of that extension.\n * @param {GLTFScenegraph} scenegraph - Instance of the class for structured access to GLTF data.\n * @param {GLTFMeshPrimitive} primitive - Primitive that contains extensions.\n * @param {GLTFLoaderOptions} options - GLTFLoader options.\n */\nfunction processMeshPrimitiveFeatures(\n scenegraph: GLTFScenegraph,\n primitive: GLTFMeshPrimitive,\n options: GLTFLoaderOptions\n): void {\n // Processing of mesh primitive features requires buffers to be loaded.\n if (!options?.gltf?.loadBuffers) {\n return;\n }\n\n const extension = primitive.extensions?.[EXT_MESH_FEATURES_NAME] as GLTF_EXT_mesh_features;\n const featureIds: GLTF_EXT_mesh_features_featureId[] = extension?.featureIds;\n\n if (!featureIds) {\n return;\n }\n\n for (const featureId of featureIds) {\n let featureIdData: number[] | null = null;\n // Process \"Feature ID by Vertex\"\n if (typeof featureId.attribute !== 'undefined') {\n const accessorKey = `_FEATURE_ID_${featureId.attribute}`;\n const accessorIndex = primitive.attributes[accessorKey];\n featureIdData = scenegraph.getTypedArrayForAccessor(accessorIndex) as number[];\n }\n\n // Process \"Feature ID by Texture Coordinates\"\n else if (typeof featureId.texture !== 'undefined' && options?.gltf?.loadImages) {\n featureIdData = getPrimitiveTextureData(scenegraph, featureId.texture, primitive);\n }\n\n // Process \"Feature ID by Index\"\n else {\n /*\n When both featureId.attribute and featureId.texture are undefined,\n then the feature ID value for each vertex is given implicitly, via the index of the vertex.\n In this case, the featureCount must match the number of vertices of the mesh primitive.\n */\n // TODO: At the moment of writing we don't have a tileset with the data of that kind. Implement it later.\n }\n\n featureId.data = featureIdData;\n }\n}\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.decode = decode;
8
+ exports.getPropertyTableFromExtStructuralMetadata = getPropertyTableFromExtStructuralMetadata;
8
9
  exports.getPropertyTablePopulated = getPropertyTablePopulated;
9
10
  exports.name = void 0;
10
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
@@ -36,6 +37,26 @@ function _decode() {
36
37
  }));
37
38
  return _decode.apply(this, arguments);
38
39
  }
40
+ function getPropertyTableFromExtStructuralMetadata(extension, metadataClass) {
41
+ if (extension.propertyTables) {
42
+ var firstPropertyTable = extension === null || extension === void 0 ? void 0 : extension.propertyTables[0];
43
+ var propertyTableWithData = {};
44
+ for (var propertyName in firstPropertyTable.properties) {
45
+ propertyTableWithData[propertyName] = firstPropertyTable.properties[propertyName].data;
46
+ }
47
+ return propertyTableWithData;
48
+ }
49
+ if (extension.propertyTextures) {
50
+ var firstPropertyTexture = extension === null || extension === void 0 ? void 0 : extension.propertyTextures[0];
51
+ var _propertyTableWithData = {};
52
+ for (var _propertyName in firstPropertyTexture.properties) {
53
+ _propertyTableWithData[_propertyName] = firstPropertyTexture.properties[_propertyName].data;
54
+ }
55
+ return _propertyTableWithData;
56
+ }
57
+ console.warn('Cannot get property table from EXT_structural_metadata extension. There is neither propertyTables, nor propertyTextures in the extension.');
58
+ return null;
59
+ }
39
60
  function getPropertyTablePopulated(scenegraph, propertyTableIndex) {
40
61
  var _extension$propertyTa;
41
62
  var extension = scenegraph.getExtension(EXT_STRUCTURAL_METADATA_NAME);
@@ -47,14 +68,23 @@ function getPropertyTablePopulated(scenegraph, propertyTableIndex) {
47
68
  throw new Error("Incorrect data in the EXT_structural_metadata extension: no property table with index ".concat(propertyTableIndex));
48
69
  }
49
70
  function decodeExtStructuralMetadata(scenegraph, options) {
50
- var _options$gltf;
71
+ var _options$gltf, _options$gltf2;
72
+ if (!((_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadBuffers)) {
73
+ return;
74
+ }
51
75
  var extension = scenegraph.getExtension(EXT_STRUCTURAL_METADATA_NAME);
52
- if (!(extension !== null && extension !== void 0 && extension.schema)) {
76
+ if (!extension) {
53
77
  return;
54
78
  }
79
+ if ((_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadImages) {
80
+ decodePropertyTextures(scenegraph, extension);
81
+ }
82
+ decodePropertyTables(scenegraph, extension);
83
+ }
84
+ function decodePropertyTextures(scenegraph, extension) {
55
85
  var propertyTextures = extension.propertyTextures;
56
86
  var json = scenegraph.gltf.json;
57
- if (propertyTextures && json.meshes && options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadImages) {
87
+ if (propertyTextures && json.meshes) {
58
88
  var _iterator = _createForOfIteratorHelper(json.meshes),
59
89
  _step;
60
90
  try {
@@ -79,23 +109,37 @@ function decodeExtStructuralMetadata(scenegraph, options) {
79
109
  _iterator.f();
80
110
  }
81
111
  }
82
- var schemaClasses = extension.schema.classes;
112
+ }
113
+ function decodePropertyTables(scenegraph, extension) {
114
+ var schema = extension.schema;
115
+ if (!schema) {
116
+ return;
117
+ }
118
+ var schemaClasses = schema.classes;
83
119
  var propertyTables = extension.propertyTables;
84
120
  if (schemaClasses && propertyTables) {
85
121
  for (var schemaName in schemaClasses) {
86
122
  var propertyTable = findPropertyTableByClass(propertyTables, schemaName);
87
123
  if (propertyTable) {
88
- processPropertyTable(scenegraph, extension.schema, propertyTable);
124
+ processPropertyTable(scenegraph, schema, propertyTable);
89
125
  }
90
126
  }
91
127
  }
92
128
  }
93
129
  function findPropertyTableByClass(propertyTables, schemaClassName) {
94
- for (var i = 0, len = propertyTables.length; i < len; i++) {
95
- var propertyTable = propertyTables[i];
96
- if (propertyTable.class === schemaClassName) {
97
- return propertyTable;
130
+ var _iterator3 = _createForOfIteratorHelper(propertyTables),
131
+ _step3;
132
+ try {
133
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
134
+ var propertyTable = _step3.value;
135
+ if (propertyTable.class === schemaClassName) {
136
+ return propertyTable;
137
+ }
98
138
  }
139
+ } catch (err) {
140
+ _iterator3.e(err);
141
+ } finally {
142
+ _iterator3.f();
99
143
  }
100
144
  return null;
101
145
  }
@@ -109,18 +153,18 @@ function processPrimitivePropertyTextures(scenegraph, propertyTextures, primitiv
109
153
  if (!primitivePropertyTextureIndices) {
110
154
  return;
111
155
  }
112
- var _iterator3 = _createForOfIteratorHelper(primitivePropertyTextureIndices),
113
- _step3;
156
+ var _iterator4 = _createForOfIteratorHelper(primitivePropertyTextureIndices),
157
+ _step4;
114
158
  try {
115
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
116
- var primitivePropertyTextureIndex = _step3.value;
159
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
160
+ var primitivePropertyTextureIndex = _step4.value;
117
161
  var propertyTexture = propertyTextures[primitivePropertyTextureIndex];
118
162
  processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive, extension);
119
163
  }
120
164
  } catch (err) {
121
- _iterator3.e(err);
165
+ _iterator4.e(err);
122
166
  } finally {
123
- _iterator3.f();
167
+ _iterator4.f();
124
168
  }
125
169
  }
126
170
  function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive, extension) {
@@ -131,10 +175,10 @@ function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive,
131
175
  extension.dataAttributeNames = [];
132
176
  }
133
177
  var className = propertyTexture.class;
134
- for (var propName in propertyTexture.properties) {
178
+ for (var propertyName in propertyTexture.properties) {
135
179
  var _propertyTexture$prop;
136
- var attributeName = "".concat(className, "_").concat(propName);
137
- var textureInfoTopLevel = (_propertyTexture$prop = propertyTexture.properties) === null || _propertyTexture$prop === void 0 ? void 0 : _propertyTexture$prop[propName];
180
+ var attributeName = "".concat(className, "_").concat(propertyName);
181
+ var textureInfoTopLevel = (_propertyTexture$prop = propertyTexture.properties) === null || _propertyTexture$prop === void 0 ? void 0 : _propertyTexture$prop[propertyName];
138
182
  if (!textureInfoTopLevel) {
139
183
  continue;
140
184
  }
@@ -206,14 +250,14 @@ function getPropertyDataFromBinarySource(scenegraph, schema, classProperty, numb
206
250
  return data;
207
251
  }
208
252
  function getArrayOffsetsForProperty(scenegraph, classProperty, propertyTableProperty, numberOfElements) {
209
- if (classProperty.array && typeof classProperty.count === 'undefined' && typeof propertyTableProperty.arrayOffsets !== 'undefined' && typeof propertyTableProperty.arrayOffsetType !== 'undefined') {
210
- return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.arrayOffsets, propertyTableProperty.arrayOffsetType, numberOfElements);
253
+ if (classProperty.array && typeof classProperty.count === 'undefined' && typeof propertyTableProperty.arrayOffsets !== 'undefined') {
254
+ return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.arrayOffsets, propertyTableProperty.arrayOffsetType || 'UINT32', numberOfElements);
211
255
  }
212
256
  return null;
213
257
  }
214
258
  function getStringOffsetsForProperty(scenegraph, propertyTableProperty, numberOfElements) {
215
- if (typeof propertyTableProperty.stringOffsets !== 'undefined' && typeof propertyTableProperty.stringOffsetType !== 'undefined') {
216
- return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.stringOffsets, propertyTableProperty.stringOffsetType, numberOfElements);
259
+ if (typeof propertyTableProperty.stringOffsets !== 'undefined') {
260
+ return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.stringOffsets, propertyTableProperty.stringOffsetType || 'UINT32', numberOfElements);
217
261
  }
218
262
  return null;
219
263
  }
@@ -369,19 +413,19 @@ function getEnumsArray(valuesData, offset, count, enumEntry) {
369
413
  return array;
370
414
  }
371
415
  function getEnumByValue(enumEntry, value) {
372
- var _iterator4 = _createForOfIteratorHelper(enumEntry.values),
373
- _step4;
416
+ var _iterator5 = _createForOfIteratorHelper(enumEntry.values),
417
+ _step5;
374
418
  try {
375
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
376
- var enumValue = _step4.value;
419
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
420
+ var enumValue = _step5.value;
377
421
  if (enumValue.value === value) {
378
422
  return enumValue;
379
423
  }
380
424
  }
381
425
  } catch (err) {
382
- _iterator4.e(err);
426
+ _iterator5.e(err);
383
427
  } finally {
384
- _iterator4.f();
428
+ _iterator5.f();
385
429
  }
386
430
  return null;
387
431
  }