@babylonjs/loaders 9.22.2 → 9.24.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 (80) hide show
  1. package/OBJ/objFileLoader.metadata.d.ts +5 -1
  2. package/OBJ/objFileLoader.metadata.js +4 -1
  3. package/OBJ/objFileLoader.metadata.js.map +1 -1
  4. package/OBJ/objFileLoader.pure.d.ts +12 -3
  5. package/OBJ/objFileLoader.pure.js +30 -2
  6. package/OBJ/objFileLoader.pure.js.map +1 -1
  7. package/OBJ/objLoadingOptions.d.ts +6 -0
  8. package/OBJ/objLoadingOptions.js.map +1 -1
  9. package/SPLAT/gaussianSplattingStream.d.ts +162 -15
  10. package/SPLAT/gaussianSplattingStream.js +523 -96
  11. package/SPLAT/gaussianSplattingStream.js.map +1 -1
  12. package/dynamic.js +16 -6
  13. package/dynamic.js.map +1 -1
  14. package/glTF/1.0/glTFBinaryExtension.d.ts +4 -14
  15. package/glTF/1.0/glTFBinaryExtension.js +6 -62
  16. package/glTF/1.0/glTFBinaryExtension.js.map +1 -1
  17. package/glTF/1.0/glTFBinaryExtension.pure.d.ts +21 -0
  18. package/glTF/1.0/glTFBinaryExtension.pure.js +76 -0
  19. package/glTF/1.0/glTFBinaryExtension.pure.js.map +1 -0
  20. package/glTF/1.0/glTFLoader.d.ts +3 -142
  21. package/glTF/1.0/glTFLoader.js +7 -1840
  22. package/glTF/1.0/glTFLoader.js.map +1 -1
  23. package/glTF/1.0/glTFLoader.pure.d.ts +149 -0
  24. package/glTF/1.0/glTFLoader.pure.js +1854 -0
  25. package/glTF/1.0/glTFLoader.pure.js.map +1 -0
  26. package/glTF/1.0/glTFLoaderUtils.d.ts +2 -2
  27. package/glTF/1.0/glTFLoaderUtils.js +5 -5
  28. package/glTF/1.0/glTFLoaderUtils.js.map +1 -1
  29. package/glTF/1.0/glTFMaterialsCommonExtension.d.ts +4 -11
  30. package/glTF/1.0/glTFMaterialsCommonExtension.js +6 -128
  31. package/glTF/1.0/glTFMaterialsCommonExtension.js.map +1 -1
  32. package/glTF/1.0/glTFMaterialsCommonExtension.pure.d.ts +18 -0
  33. package/glTF/1.0/glTFMaterialsCommonExtension.pure.js +142 -0
  34. package/glTF/1.0/glTFMaterialsCommonExtension.pure.js.map +1 -0
  35. package/glTF/1.0/pure.d.ts +3 -0
  36. package/glTF/1.0/pure.js +3 -0
  37. package/glTF/1.0/pure.js.map +1 -1
  38. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +0 -1
  39. package/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -1
  40. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +3 -251
  41. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -1
  42. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.d.ts +5 -0
  43. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js +267 -0
  44. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js.map +1 -0
  45. package/glTF/2.0/Extensions/KHR_animation_pointer.js +2 -1
  46. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
  47. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +5 -0
  48. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +15 -4
  49. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
  50. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +5 -0
  51. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +19 -6
  52. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
  53. package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +5 -0
  54. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +19 -6
  55. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
  56. package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +5 -0
  57. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +19 -6
  58. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -1
  59. package/glTF/2.0/Extensions/dynamic.js +59 -42
  60. package/glTF/2.0/Extensions/dynamic.js.map +1 -1
  61. package/glTF/2.0/Extensions/pure.d.ts +1 -0
  62. package/glTF/2.0/Extensions/pure.js +1 -0
  63. package/glTF/2.0/Extensions/pure.js.map +1 -1
  64. package/glTF/2.0/glTFLoader.pure.d.ts +2 -2
  65. package/glTF/2.0/glTFLoader.pure.js +6 -5
  66. package/glTF/2.0/glTFLoader.pure.js.map +1 -1
  67. package/glTF/2.0/glTFLoaderAnimation.d.ts +1 -42
  68. package/glTF/2.0/glTFLoaderAnimation.js +3 -79
  69. package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
  70. package/glTF/2.0/glTFLoaderAnimation.pure.d.ts +47 -0
  71. package/glTF/2.0/glTFLoaderAnimation.pure.js +91 -0
  72. package/glTF/2.0/glTFLoaderAnimation.pure.js.map +1 -0
  73. package/glTF/2.0/pure.d.ts +1 -0
  74. package/glTF/2.0/pure.js +1 -0
  75. package/glTF/2.0/pure.js.map +1 -1
  76. package/glTF/glTFFileLoader.pure.d.ts +8 -4
  77. package/glTF/glTFFileLoader.pure.js +13 -6
  78. package/glTF/glTFFileLoader.pure.js.map +1 -1
  79. package/package.json +3 -4
  80. /package/{bvh → BVH}/license.md +0 -0
@@ -21,6 +21,11 @@ export declare class KHR_node_hoverability implements IGLTFLoaderExtension {
21
21
  onReady(): Promise<void>;
22
22
  dispose(): void;
23
23
  }
24
+ /**
25
+ * @internal
26
+ * Registers KHR_node_hoverability runtime dependencies without changing the extension registry.
27
+ */
28
+ export declare function _RegisterKHRNodeHoverabilityRuntime(): void;
24
29
  /**
25
30
  * Registers the KHR_node_hoverability glTF loader extension.
26
31
  * Safe to call multiple times; only the first call has an effect.
@@ -37,17 +37,17 @@ export class KHR_node_hoverability {
37
37
  this._loader = null;
38
38
  }
39
39
  }
40
- let _Registered = false;
40
+ let _RuntimeRegistered = false;
41
41
  /**
42
- * Registers the KHR_node_hoverability glTF loader extension.
43
- * Safe to call multiple times; only the first call has an effect.
42
+ * @internal
43
+ * Registers KHR_node_hoverability runtime dependencies without changing the extension registry.
44
44
  */
45
45
  // eslint-disable-next-line @typescript-eslint/naming-convention
46
- export function RegisterKHR_node_hoverability() {
47
- if (_Registered) {
46
+ export function _RegisterKHRNodeHoverabilityRuntime() {
47
+ if (_RuntimeRegistered) {
48
48
  return;
49
49
  }
50
- _Registered = true;
50
+ _RuntimeRegistered = true;
51
51
  addNewInteractivityFlowGraphMapping("event/onHoverIn", NAME, {
52
52
  // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)
53
53
  blocks: ["FlowGraphPointerOverEventBlock" /* FlowGraphBlockNames.PointerOverEvent */, "FlowGraphGetVariableBlock" /* FlowGraphBlockNames.GetVariable */, "FlowGraphIndexOfBlock" /* FlowGraphBlockNames.IndexOf */, "KHR_interactivity/FlowGraphGLTFDataProvider"],
@@ -202,6 +202,19 @@ export function RegisterKHR_node_hoverability() {
202
202
  getPropertyName: [() => "pointerOverDisableMeshTesting"],
203
203
  type: "boolean",
204
204
  });
205
+ }
206
+ let _Registered = false;
207
+ /**
208
+ * Registers the KHR_node_hoverability glTF loader extension.
209
+ * Safe to call multiple times; only the first call has an effect.
210
+ */
211
+ // eslint-disable-next-line @typescript-eslint/naming-convention
212
+ export function RegisterKHR_node_hoverability() {
213
+ if (_Registered) {
214
+ return;
215
+ }
216
+ _Registered = true;
217
+ _RegisterKHRNodeHoverabilityRuntime();
205
218
  unregisterGLTFExtension(NAME);
206
219
  registerGLTFExtension(NAME, true, (loader) => new KHR_node_hoverability(loader));
207
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_node_hoverability.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_hoverability.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { FlowGraphBlockNames } from \"core/FlowGraph/Blocks/flowGraphBlockNames\";\r\nimport { addNewInteractivityFlowGraphMapping } from \"./KHR_interactivity/declarationMapper\";\r\nimport { type INode } from \"../glTFLoaderInterfaces\";\r\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\r\n\r\nconst NAME = \"KHR_node_hoverability\";\r\n\r\n// interactivity\r\nconst MeshPointerOverPrefix = \"targetMeshPointerOver_\";\r\n\r\nconst MeshPointerOutPrefix = \"targetMeshPointerOut_\";\r\n\r\n/**\r\n * Loader extension for KHR_node_hoverability\r\n * @see https://github.com/KhronosGroup/glTF/pull/2426\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_node_hoverability implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises\r\n public async onReady(): Promise<void> {\r\n this._loader.gltf.nodes?.forEach((node) => {\r\n // default is true, so only apply if false\r\n if (node.extensions?.KHR_node_hoverability && node.extensions?.KHR_node_hoverability.hoverable === false) {\r\n node._babylonTransformNode?.getChildMeshes().forEach((mesh) => {\r\n mesh.pointerOverDisableMeshTesting = true;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_node_hoverability glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_node_hoverability(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n addNewInteractivityFlowGraphMapping(\"event/onHoverIn\", NAME, {\r\n // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)\r\n blocks: [FlowGraphBlockNames.PointerOverEvent, FlowGraphBlockNames.GetVariable, FlowGraphBlockNames.IndexOf, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\r\n configuration: {\r\n stopPropagation: { name: \"stopPropagation\" },\r\n nodeIndex: {\r\n name: \"variable\",\r\n toBlock: FlowGraphBlockNames.GetVariable,\r\n dataTransformer(data) {\r\n return MeshPointerOverPrefix + data;\r\n },\r\n },\r\n },\r\n outputs: {\r\n values: {\r\n hoverNodeIndex: { name: \"index\", toBlock: FlowGraphBlockNames.IndexOf },\r\n // `hoveredNode` is the new ref-typed output from the Opaque-Reference\r\n // spec update — the picked Babylon mesh itself, available directly\r\n // from FlowGraphPointerOverEventBlock.meshUnderPointer (no IndexOf).\r\n hoveredNode: { name: \"meshUnderPointer\", toBlock: FlowGraphBlockNames.PointerOverEvent },\r\n controllerIndex: { name: \"pointerId\" },\r\n },\r\n flows: {\r\n out: { name: \"done\" },\r\n },\r\n },\r\n interBlockConnectors: [\r\n {\r\n input: \"targetMesh\",\r\n output: \"value\",\r\n inputBlockIndex: 0,\r\n outputBlockIndex: 1,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"array\",\r\n output: \"nodes\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 3,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"object\",\r\n output: \"meshUnderPointer\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 0,\r\n isVariable: true,\r\n },\r\n ],\r\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects, context, globalGLTF) {\r\n // add the glTF to the configuration of the last serialized object\r\n const serializedObject = serializedObjects[serializedObjects.length - 1];\r\n serializedObject.config = serializedObject.config || {};\r\n serializedObject.config.glTF = globalGLTF;\r\n // find the listener nodeIndex value\r\n const nodeIndex = gltfBlock.configuration?.[\"nodeIndex\"]?.value?.[0];\r\n if (nodeIndex === undefined || typeof nodeIndex !== \"number\") {\r\n throw new Error(\"nodeIndex not found in configuration\");\r\n }\r\n const variableName = MeshPointerOverPrefix + nodeIndex;\r\n // find the nodeIndex value\r\n serializedObjects[1].config.variable = variableName;\r\n context._userVariables[variableName] = {\r\n className: \"Mesh\",\r\n id: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.id,\r\n uniqueId: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.uniqueId,\r\n };\r\n return serializedObjects;\r\n },\r\n });\r\n\r\n addNewInteractivityFlowGraphMapping(\"event/onHoverOut\", NAME, {\r\n // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)\r\n blocks: [FlowGraphBlockNames.PointerOutEvent, FlowGraphBlockNames.GetVariable, FlowGraphBlockNames.IndexOf, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\r\n configuration: {\r\n stopPropagation: { name: \"stopPropagation\" },\r\n nodeIndex: {\r\n name: \"variable\",\r\n toBlock: FlowGraphBlockNames.GetVariable,\r\n dataTransformer(data) {\r\n return MeshPointerOutPrefix + data;\r\n },\r\n },\r\n },\r\n outputs: {\r\n values: {\r\n hoverNodeIndex: { name: \"index\", toBlock: FlowGraphBlockNames.IndexOf },\r\n // Ref-typed output: the mesh that the pointer just left.\r\n hoveredNode: { name: \"meshOutOfPointer\", toBlock: FlowGraphBlockNames.PointerOutEvent },\r\n controllerIndex: { name: \"pointerId\" },\r\n },\r\n flows: {\r\n out: { name: \"done\" },\r\n },\r\n },\r\n interBlockConnectors: [\r\n {\r\n input: \"targetMesh\",\r\n output: \"value\",\r\n inputBlockIndex: 0,\r\n outputBlockIndex: 1,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"array\",\r\n output: \"nodes\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 3,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"object\",\r\n output: \"meshOutOfPointer\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 0,\r\n isVariable: true,\r\n },\r\n ],\r\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects, context, globalGLTF) {\r\n // add the glTF to the configuration of the last serialized object\r\n const serializedObject = serializedObjects[serializedObjects.length - 1];\r\n serializedObject.config = serializedObject.config || {};\r\n serializedObject.config.glTF = globalGLTF;\r\n\r\n const nodeIndex = gltfBlock.configuration?.[\"nodeIndex\"]?.value?.[0];\r\n if (nodeIndex === undefined || typeof nodeIndex !== \"number\") {\r\n throw new Error(\"nodeIndex not found in configuration\");\r\n }\r\n const variableName = MeshPointerOutPrefix + nodeIndex;\r\n // find the nodeIndex value\r\n serializedObjects[1].config.variable = variableName;\r\n context._userVariables[variableName] = {\r\n className: \"Mesh\",\r\n id: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.id,\r\n uniqueId: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.uniqueId,\r\n };\r\n return serializedObjects;\r\n },\r\n });\r\n\r\n AddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_hoverability/hoverable\", {\r\n get: (node: INode) => {\r\n const tn = node._babylonTransformNode as any;\r\n if (tn && tn.pointerOverDisableMeshTesting !== undefined) {\r\n return tn.pointerOverDisableMeshTesting;\r\n }\r\n return true;\r\n },\r\n set: (value: boolean, node: INode) => {\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.pointerOverDisableMeshTesting = !value;\r\n });\r\n },\r\n getTarget: (node: INode) => node._babylonTransformNode,\r\n getPropertyName: [() => \"pointerOverDisableMeshTesting\"],\r\n type: \"boolean\",\r\n });\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_node_hoverability(loader));\r\n}\r\n"]}
1
+ {"version":3,"file":"KHR_node_hoverability.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_hoverability.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { FlowGraphBlockNames } from \"core/FlowGraph/Blocks/flowGraphBlockNames\";\r\nimport { addNewInteractivityFlowGraphMapping } from \"./KHR_interactivity/declarationMapper\";\r\nimport { type INode } from \"../glTFLoaderInterfaces\";\r\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\r\n\r\nconst NAME = \"KHR_node_hoverability\";\r\n\r\n// interactivity\r\nconst MeshPointerOverPrefix = \"targetMeshPointerOver_\";\r\n\r\nconst MeshPointerOutPrefix = \"targetMeshPointerOut_\";\r\n\r\n/**\r\n * Loader extension for KHR_node_hoverability\r\n * @see https://github.com/KhronosGroup/glTF/pull/2426\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_node_hoverability implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises\r\n public async onReady(): Promise<void> {\r\n this._loader.gltf.nodes?.forEach((node) => {\r\n // default is true, so only apply if false\r\n if (node.extensions?.KHR_node_hoverability && node.extensions?.KHR_node_hoverability.hoverable === false) {\r\n node._babylonTransformNode?.getChildMeshes().forEach((mesh) => {\r\n mesh.pointerOverDisableMeshTesting = true;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n}\r\n\r\nlet _RuntimeRegistered = false;\r\n/**\r\n * @internal\r\n * Registers KHR_node_hoverability runtime dependencies without changing the extension registry.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function _RegisterKHRNodeHoverabilityRuntime(): void {\r\n if (_RuntimeRegistered) {\r\n return;\r\n }\r\n _RuntimeRegistered = true;\r\n\r\n addNewInteractivityFlowGraphMapping(\"event/onHoverIn\", NAME, {\r\n // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)\r\n blocks: [FlowGraphBlockNames.PointerOverEvent, FlowGraphBlockNames.GetVariable, FlowGraphBlockNames.IndexOf, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\r\n configuration: {\r\n stopPropagation: { name: \"stopPropagation\" },\r\n nodeIndex: {\r\n name: \"variable\",\r\n toBlock: FlowGraphBlockNames.GetVariable,\r\n dataTransformer(data) {\r\n return MeshPointerOverPrefix + data;\r\n },\r\n },\r\n },\r\n outputs: {\r\n values: {\r\n hoverNodeIndex: { name: \"index\", toBlock: FlowGraphBlockNames.IndexOf },\r\n // `hoveredNode` is the new ref-typed output from the Opaque-Reference\r\n // spec update — the picked Babylon mesh itself, available directly\r\n // from FlowGraphPointerOverEventBlock.meshUnderPointer (no IndexOf).\r\n hoveredNode: { name: \"meshUnderPointer\", toBlock: FlowGraphBlockNames.PointerOverEvent },\r\n controllerIndex: { name: \"pointerId\" },\r\n },\r\n flows: {\r\n out: { name: \"done\" },\r\n },\r\n },\r\n interBlockConnectors: [\r\n {\r\n input: \"targetMesh\",\r\n output: \"value\",\r\n inputBlockIndex: 0,\r\n outputBlockIndex: 1,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"array\",\r\n output: \"nodes\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 3,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"object\",\r\n output: \"meshUnderPointer\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 0,\r\n isVariable: true,\r\n },\r\n ],\r\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects, context, globalGLTF) {\r\n // add the glTF to the configuration of the last serialized object\r\n const serializedObject = serializedObjects[serializedObjects.length - 1];\r\n serializedObject.config = serializedObject.config || {};\r\n serializedObject.config.glTF = globalGLTF;\r\n // find the listener nodeIndex value\r\n const nodeIndex = gltfBlock.configuration?.[\"nodeIndex\"]?.value?.[0];\r\n if (nodeIndex === undefined || typeof nodeIndex !== \"number\") {\r\n throw new Error(\"nodeIndex not found in configuration\");\r\n }\r\n const variableName = MeshPointerOverPrefix + nodeIndex;\r\n // find the nodeIndex value\r\n serializedObjects[1].config.variable = variableName;\r\n context._userVariables[variableName] = {\r\n className: \"Mesh\",\r\n id: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.id,\r\n uniqueId: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.uniqueId,\r\n };\r\n return serializedObjects;\r\n },\r\n });\r\n\r\n addNewInteractivityFlowGraphMapping(\"event/onHoverOut\", NAME, {\r\n // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)\r\n blocks: [FlowGraphBlockNames.PointerOutEvent, FlowGraphBlockNames.GetVariable, FlowGraphBlockNames.IndexOf, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\r\n configuration: {\r\n stopPropagation: { name: \"stopPropagation\" },\r\n nodeIndex: {\r\n name: \"variable\",\r\n toBlock: FlowGraphBlockNames.GetVariable,\r\n dataTransformer(data) {\r\n return MeshPointerOutPrefix + data;\r\n },\r\n },\r\n },\r\n outputs: {\r\n values: {\r\n hoverNodeIndex: { name: \"index\", toBlock: FlowGraphBlockNames.IndexOf },\r\n // Ref-typed output: the mesh that the pointer just left.\r\n hoveredNode: { name: \"meshOutOfPointer\", toBlock: FlowGraphBlockNames.PointerOutEvent },\r\n controllerIndex: { name: \"pointerId\" },\r\n },\r\n flows: {\r\n out: { name: \"done\" },\r\n },\r\n },\r\n interBlockConnectors: [\r\n {\r\n input: \"targetMesh\",\r\n output: \"value\",\r\n inputBlockIndex: 0,\r\n outputBlockIndex: 1,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"array\",\r\n output: \"nodes\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 3,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"object\",\r\n output: \"meshOutOfPointer\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 0,\r\n isVariable: true,\r\n },\r\n ],\r\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects, context, globalGLTF) {\r\n // add the glTF to the configuration of the last serialized object\r\n const serializedObject = serializedObjects[serializedObjects.length - 1];\r\n serializedObject.config = serializedObject.config || {};\r\n serializedObject.config.glTF = globalGLTF;\r\n\r\n const nodeIndex = gltfBlock.configuration?.[\"nodeIndex\"]?.value?.[0];\r\n if (nodeIndex === undefined || typeof nodeIndex !== \"number\") {\r\n throw new Error(\"nodeIndex not found in configuration\");\r\n }\r\n const variableName = MeshPointerOutPrefix + nodeIndex;\r\n // find the nodeIndex value\r\n serializedObjects[1].config.variable = variableName;\r\n context._userVariables[variableName] = {\r\n className: \"Mesh\",\r\n id: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.id,\r\n uniqueId: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.uniqueId,\r\n };\r\n return serializedObjects;\r\n },\r\n });\r\n\r\n AddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_hoverability/hoverable\", {\r\n get: (node: INode) => {\r\n const tn = node._babylonTransformNode as any;\r\n if (tn && tn.pointerOverDisableMeshTesting !== undefined) {\r\n return tn.pointerOverDisableMeshTesting;\r\n }\r\n return true;\r\n },\r\n set: (value: boolean, node: INode) => {\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.pointerOverDisableMeshTesting = !value;\r\n });\r\n },\r\n getTarget: (node: INode) => node._babylonTransformNode,\r\n getPropertyName: [() => \"pointerOverDisableMeshTesting\"],\r\n type: \"boolean\",\r\n });\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_node_hoverability glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_node_hoverability(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n _RegisterKHRNodeHoverabilityRuntime();\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_node_hoverability(loader));\r\n}\r\n"]}
@@ -20,6 +20,11 @@ export declare class KHR_node_selectability implements IGLTFLoaderExtension {
20
20
  onReady(): Promise<void>;
21
21
  dispose(): void;
22
22
  }
23
+ /**
24
+ * @internal
25
+ * Registers KHR_node_selectability runtime dependencies without changing the extension registry.
26
+ */
27
+ export declare function _RegisterKHRNodeSelectabilityRuntime(): void;
23
28
  /**
24
29
  * Registers the KHR_node_selectability glTF loader extension.
25
30
  * Safe to call multiple times; only the first call has an effect.
@@ -34,17 +34,17 @@ export class KHR_node_selectability {
34
34
  this._loader = null;
35
35
  }
36
36
  }
37
- let _Registered = false;
37
+ let _RuntimeRegistered = false;
38
38
  /**
39
- * Registers the KHR_node_selectability glTF loader extension.
40
- * Safe to call multiple times; only the first call has an effect.
39
+ * @internal
40
+ * Registers KHR_node_selectability runtime dependencies without changing the extension registry.
41
41
  */
42
42
  // eslint-disable-next-line @typescript-eslint/naming-convention
43
- export function RegisterKHR_node_selectability() {
44
- if (_Registered) {
43
+ export function _RegisterKHRNodeSelectabilityRuntime() {
44
+ if (_RuntimeRegistered) {
45
45
  return;
46
46
  }
47
- _Registered = true;
47
+ _RuntimeRegistered = true;
48
48
  addNewInteractivityFlowGraphMapping("event/onSelect", NAME, {
49
49
  // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)
50
50
  blocks: ["FlowGraphMeshPickEventBlock" /* FlowGraphBlockNames.MeshPickEvent */, "FlowGraphGetVariableBlock" /* FlowGraphBlockNames.GetVariable */, "FlowGraphIndexOfBlock" /* FlowGraphBlockNames.IndexOf */, "KHR_interactivity/FlowGraphGLTFDataProvider"],
@@ -134,6 +134,19 @@ export function RegisterKHR_node_selectability() {
134
134
  getPropertyName: [() => "isPickable"],
135
135
  type: "boolean",
136
136
  });
137
+ }
138
+ let _Registered = false;
139
+ /**
140
+ * Registers the KHR_node_selectability glTF loader extension.
141
+ * Safe to call multiple times; only the first call has an effect.
142
+ */
143
+ // eslint-disable-next-line @typescript-eslint/naming-convention
144
+ export function RegisterKHR_node_selectability() {
145
+ if (_Registered) {
146
+ return;
147
+ }
148
+ _Registered = true;
149
+ _RegisterKHRNodeSelectabilityRuntime();
137
150
  unregisterGLTFExtension(NAME);
138
151
  registerGLTFExtension(NAME, true, (loader) => new KHR_node_selectability(loader));
139
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_node_selectability.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_selectability.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { FlowGraphBlockNames } from \"core/FlowGraph/Blocks/flowGraphBlockNames\";\r\nimport { addNewInteractivityFlowGraphMapping } from \"./KHR_interactivity/declarationMapper\";\r\nimport { type INode } from \"../glTFLoaderInterfaces\";\r\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\r\n\r\nconst NAME = \"KHR_node_selectability\";\r\n\r\n// add the interactivity mapping for the onSelect event\r\n\r\n// object model extension for selectable\r\n\r\n/**\r\n * Loader extension for KHR_selectability\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_node_selectability implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises\r\n public async onReady(): Promise<void> {\r\n this._loader.gltf.nodes?.forEach((node) => {\r\n if (node.extensions?.KHR_node_selectability && node.extensions?.KHR_node_selectability.selectable === false) {\r\n node._babylonTransformNode?.getChildMeshes().forEach((mesh) => {\r\n mesh.isPickable = false;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_node_selectability glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_node_selectability(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n addNewInteractivityFlowGraphMapping(\"event/onSelect\", NAME, {\r\n // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)\r\n blocks: [FlowGraphBlockNames.MeshPickEvent, FlowGraphBlockNames.GetVariable, FlowGraphBlockNames.IndexOf, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\r\n configuration: {\r\n stopPropagation: { name: \"stopPropagation\" },\r\n nodeIndex: {\r\n name: \"variable\",\r\n toBlock: FlowGraphBlockNames.GetVariable,\r\n dataTransformer(data) {\r\n return \"pickedMesh_\" + data;\r\n },\r\n },\r\n },\r\n outputs: {\r\n values: {\r\n selectedNodeIndex: { name: \"index\", toBlock: FlowGraphBlockNames.IndexOf },\r\n // `selectedNode` is the new ref-typed output from the Opaque-Reference\r\n // spec update. It's the picked Babylon mesh itself, available directly\r\n // from FlowGraphMeshPickEventBlock.pickedMesh — no IndexOf lookup needed.\r\n selectedNode: { name: \"pickedMesh\", toBlock: FlowGraphBlockNames.MeshPickEvent },\r\n controllerIndex: { name: \"pointerId\" },\r\n selectionPoint: { name: \"pickedPoint\" },\r\n selectionRayOrigin: { name: \"pickOrigin\" },\r\n },\r\n flows: {\r\n out: { name: \"done\" },\r\n },\r\n },\r\n interBlockConnectors: [\r\n {\r\n input: \"asset\",\r\n output: \"value\",\r\n inputBlockIndex: 0,\r\n outputBlockIndex: 1,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"array\",\r\n output: \"nodes\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 3,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"object\",\r\n output: \"pickedMesh\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 0,\r\n isVariable: true,\r\n },\r\n ],\r\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects, context, globalGLTF) {\r\n // add the glTF to the configuration of the last serialized object\r\n const serializedObject = serializedObjects[serializedObjects.length - 1];\r\n serializedObject.config = serializedObject.config || {};\r\n serializedObject.config.glTF = globalGLTF;\r\n // find the listener nodeIndex value\r\n const nodeIndex = gltfBlock.configuration?.[\"nodeIndex\"]?.value?.[0];\r\n if (nodeIndex === undefined || typeof nodeIndex !== \"number\") {\r\n throw new Error(\"nodeIndex not found in configuration\");\r\n }\r\n const variableName = \"pickedMesh_\" + nodeIndex;\r\n // find the nodeIndex value\r\n serializedObjects[1].config.variable = variableName;\r\n context._userVariables[variableName] = {\r\n className: \"Mesh\",\r\n id: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.id,\r\n uniqueId: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.uniqueId,\r\n };\r\n return serializedObjects;\r\n },\r\n });\r\n\r\n AddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_selectability/selectable\", {\r\n get: (node: INode) => {\r\n const tn = node._babylonTransformNode as any;\r\n if (tn && tn.isPickable !== undefined) {\r\n return tn.isPickable;\r\n }\r\n return true;\r\n },\r\n set: (value: boolean, node: INode) => {\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.isPickable = value;\r\n });\r\n },\r\n getTarget: (node: INode) => node._babylonTransformNode,\r\n getPropertyName: [() => \"isPickable\"],\r\n type: \"boolean\",\r\n });\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_node_selectability(loader));\r\n}\r\n"]}
1
+ {"version":3,"file":"KHR_node_selectability.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_selectability.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { FlowGraphBlockNames } from \"core/FlowGraph/Blocks/flowGraphBlockNames\";\r\nimport { addNewInteractivityFlowGraphMapping } from \"./KHR_interactivity/declarationMapper\";\r\nimport { type INode } from \"../glTFLoaderInterfaces\";\r\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\r\n\r\nconst NAME = \"KHR_node_selectability\";\r\n\r\n// add the interactivity mapping for the onSelect event\r\n\r\n// object model extension for selectable\r\n\r\n/**\r\n * Loader extension for KHR_selectability\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_node_selectability implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises\r\n public async onReady(): Promise<void> {\r\n this._loader.gltf.nodes?.forEach((node) => {\r\n if (node.extensions?.KHR_node_selectability && node.extensions?.KHR_node_selectability.selectable === false) {\r\n node._babylonTransformNode?.getChildMeshes().forEach((mesh) => {\r\n mesh.isPickable = false;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n}\r\n\r\nlet _RuntimeRegistered = false;\r\n/**\r\n * @internal\r\n * Registers KHR_node_selectability runtime dependencies without changing the extension registry.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function _RegisterKHRNodeSelectabilityRuntime(): void {\r\n if (_RuntimeRegistered) {\r\n return;\r\n }\r\n _RuntimeRegistered = true;\r\n\r\n addNewInteractivityFlowGraphMapping(\"event/onSelect\", NAME, {\r\n // using GetVariable as the nodeIndex is a configuration and not a value (i.e. it's not mutable)\r\n blocks: [FlowGraphBlockNames.MeshPickEvent, FlowGraphBlockNames.GetVariable, FlowGraphBlockNames.IndexOf, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\r\n configuration: {\r\n stopPropagation: { name: \"stopPropagation\" },\r\n nodeIndex: {\r\n name: \"variable\",\r\n toBlock: FlowGraphBlockNames.GetVariable,\r\n dataTransformer(data) {\r\n return \"pickedMesh_\" + data;\r\n },\r\n },\r\n },\r\n outputs: {\r\n values: {\r\n selectedNodeIndex: { name: \"index\", toBlock: FlowGraphBlockNames.IndexOf },\r\n // `selectedNode` is the new ref-typed output from the Opaque-Reference\r\n // spec update. It's the picked Babylon mesh itself, available directly\r\n // from FlowGraphMeshPickEventBlock.pickedMesh — no IndexOf lookup needed.\r\n selectedNode: { name: \"pickedMesh\", toBlock: FlowGraphBlockNames.MeshPickEvent },\r\n controllerIndex: { name: \"pointerId\" },\r\n selectionPoint: { name: \"pickedPoint\" },\r\n selectionRayOrigin: { name: \"pickOrigin\" },\r\n },\r\n flows: {\r\n out: { name: \"done\" },\r\n },\r\n },\r\n interBlockConnectors: [\r\n {\r\n input: \"asset\",\r\n output: \"value\",\r\n inputBlockIndex: 0,\r\n outputBlockIndex: 1,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"array\",\r\n output: \"nodes\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 3,\r\n isVariable: true,\r\n },\r\n {\r\n input: \"object\",\r\n output: \"pickedMesh\",\r\n inputBlockIndex: 2,\r\n outputBlockIndex: 0,\r\n isVariable: true,\r\n },\r\n ],\r\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects, context, globalGLTF) {\r\n // add the glTF to the configuration of the last serialized object\r\n const serializedObject = serializedObjects[serializedObjects.length - 1];\r\n serializedObject.config = serializedObject.config || {};\r\n serializedObject.config.glTF = globalGLTF;\r\n // find the listener nodeIndex value\r\n const nodeIndex = gltfBlock.configuration?.[\"nodeIndex\"]?.value?.[0];\r\n if (nodeIndex === undefined || typeof nodeIndex !== \"number\") {\r\n throw new Error(\"nodeIndex not found in configuration\");\r\n }\r\n const variableName = \"pickedMesh_\" + nodeIndex;\r\n // find the nodeIndex value\r\n serializedObjects[1].config.variable = variableName;\r\n context._userVariables[variableName] = {\r\n className: \"Mesh\",\r\n id: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.id,\r\n uniqueId: globalGLTF?.nodes?.[nodeIndex]._babylonTransformNode?.uniqueId,\r\n };\r\n return serializedObjects;\r\n },\r\n });\r\n\r\n AddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_selectability/selectable\", {\r\n get: (node: INode) => {\r\n const tn = node._babylonTransformNode as any;\r\n if (tn && tn.isPickable !== undefined) {\r\n return tn.isPickable;\r\n }\r\n return true;\r\n },\r\n set: (value: boolean, node: INode) => {\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.isPickable = value;\r\n });\r\n },\r\n getTarget: (node: INode) => node._babylonTransformNode,\r\n getPropertyName: [() => \"isPickable\"],\r\n type: \"boolean\",\r\n });\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_node_selectability glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_node_selectability(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n _RegisterKHRNodeSelectabilityRuntime();\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_node_selectability(loader));\r\n}\r\n"]}
@@ -20,6 +20,11 @@ export declare class KHR_node_visibility implements IGLTFLoaderExtension {
20
20
  onReady(): void;
21
21
  dispose(): void;
22
22
  }
23
+ /**
24
+ * @internal
25
+ * Registers KHR_node_visibility runtime dependencies without changing the extension registry.
26
+ */
27
+ export declare function _RegisterKHRNodeVisibilityRuntime(): void;
23
28
  /**
24
29
  * Registers the KHR_node_visibility glTF loader extension.
25
30
  * Safe to call multiple times; only the first call has an effect.
@@ -50,17 +50,17 @@ export class KHR_node_visibility {
50
50
  delete this._loader;
51
51
  }
52
52
  }
53
- let _Registered = false;
53
+ let _RuntimeRegistered = false;
54
54
  /**
55
- * Registers the KHR_node_visibility glTF loader extension.
56
- * Safe to call multiple times; only the first call has an effect.
55
+ * @internal
56
+ * Registers KHR_node_visibility runtime dependencies without changing the extension registry.
57
57
  */
58
58
  // eslint-disable-next-line @typescript-eslint/naming-convention
59
- export function RegisterKHR_node_visibility() {
60
- if (_Registered) {
59
+ export function _RegisterKHRNodeVisibilityRuntime() {
60
+ if (_RuntimeRegistered) {
61
61
  return;
62
62
  }
63
- _Registered = true;
63
+ _RuntimeRegistered = true;
64
64
  AddObjectAccessorToKey("/nodes/{}/extensions/KHR_node_visibility/visible", {
65
65
  get: (node) => {
66
66
  const tn = node._babylonTransformNode;
@@ -84,6 +84,19 @@ export function RegisterKHR_node_visibility() {
84
84
  getPropertyName: [() => "isVisible"],
85
85
  type: "boolean",
86
86
  });
87
+ }
88
+ let _Registered = false;
89
+ /**
90
+ * Registers the KHR_node_visibility glTF loader extension.
91
+ * Safe to call multiple times; only the first call has an effect.
92
+ */
93
+ // eslint-disable-next-line @typescript-eslint/naming-convention
94
+ export function RegisterKHR_node_visibility() {
95
+ if (_Registered) {
96
+ return;
97
+ }
98
+ _Registered = true;
99
+ _RegisterKHRNodeVisibilityRuntime();
87
100
  unregisterGLTFExtension(NAME);
88
101
  registerGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader));
89
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_node_visibility.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_visibility.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type INode } from \"../glTFLoaderInterfaces\";\r\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\r\n\r\nconst NAME = \"KHR_node_visibility\";\r\n\r\n// object model extension for visibility\r\n\r\n/**\r\n * Loader extension for KHR_node_visibility\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_node_visibility implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader?: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n public onReady(): void {\r\n if (!this._loader) {\r\n return;\r\n }\r\n\r\n const nodes = this._loader.gltf.nodes;\r\n if (nodes) {\r\n for (const node of nodes) {\r\n const babylonTransformNode = node._babylonTransformNode;\r\n if (babylonTransformNode) {\r\n babylonTransformNode.inheritVisibility = true;\r\n if (node.extensions && node.extensions.KHR_node_visibility && node.extensions.KHR_node_visibility.visible === false) {\r\n // Apply ``visible: false`` to the same set of meshes the\r\n // runtime ``pointer/set`` accessor writes to. The wrapping\r\n // ``babylonTransformNode`` is often a non-rendering\r\n // ``TransformNode``, so setting ``isVisible`` only there\r\n // leaves the primitive child meshes visible. Mirror the\r\n // accessor below so assets that author hidden defaults\r\n // (e.g. MagicBall.glb's FortuneWords) start hidden as intended.\r\n (babylonTransformNode as AbstractMesh).isVisible = false;\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.inheritVisibility = true;\r\n mesh.isVisible = false;\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public dispose() {\r\n delete this._loader;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_node_visibility glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_node_visibility(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n AddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_visibility/visible\", {\r\n get: (node: INode) => {\r\n const tn = node._babylonTransformNode as any;\r\n if (tn && tn.isVisible !== undefined) {\r\n return tn.isVisible;\r\n }\r\n return true;\r\n },\r\n set: (value: boolean, node: INode) => {\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.inheritVisibility = true;\r\n });\r\n if (node._babylonTransformNode) {\r\n (node._babylonTransformNode as AbstractMesh).isVisible = value;\r\n }\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.isVisible = value;\r\n });\r\n },\r\n getTarget: (node: INode) => node._babylonTransformNode,\r\n getPropertyName: [() => \"isVisible\"],\r\n type: \"boolean\",\r\n });\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader));\r\n}\r\n"]}
1
+ {"version":3,"file":"KHR_node_visibility.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_visibility.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type INode } from \"../glTFLoaderInterfaces\";\r\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\r\n\r\nconst NAME = \"KHR_node_visibility\";\r\n\r\n// object model extension for visibility\r\n\r\n/**\r\n * Loader extension for KHR_node_visibility\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_node_visibility implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader?: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n public onReady(): void {\r\n if (!this._loader) {\r\n return;\r\n }\r\n\r\n const nodes = this._loader.gltf.nodes;\r\n if (nodes) {\r\n for (const node of nodes) {\r\n const babylonTransformNode = node._babylonTransformNode;\r\n if (babylonTransformNode) {\r\n babylonTransformNode.inheritVisibility = true;\r\n if (node.extensions && node.extensions.KHR_node_visibility && node.extensions.KHR_node_visibility.visible === false) {\r\n // Apply ``visible: false`` to the same set of meshes the\r\n // runtime ``pointer/set`` accessor writes to. The wrapping\r\n // ``babylonTransformNode`` is often a non-rendering\r\n // ``TransformNode``, so setting ``isVisible`` only there\r\n // leaves the primitive child meshes visible. Mirror the\r\n // accessor below so assets that author hidden defaults\r\n // (e.g. MagicBall.glb's FortuneWords) start hidden as intended.\r\n (babylonTransformNode as AbstractMesh).isVisible = false;\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.inheritVisibility = true;\r\n mesh.isVisible = false;\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public dispose() {\r\n delete this._loader;\r\n }\r\n}\r\n\r\nlet _RuntimeRegistered = false;\r\n/**\r\n * @internal\r\n * Registers KHR_node_visibility runtime dependencies without changing the extension registry.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function _RegisterKHRNodeVisibilityRuntime(): void {\r\n if (_RuntimeRegistered) {\r\n return;\r\n }\r\n _RuntimeRegistered = true;\r\n\r\n AddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_visibility/visible\", {\r\n get: (node: INode) => {\r\n const tn = node._babylonTransformNode as any;\r\n if (tn && tn.isVisible !== undefined) {\r\n return tn.isVisible;\r\n }\r\n return true;\r\n },\r\n set: (value: boolean, node: INode) => {\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.inheritVisibility = true;\r\n });\r\n if (node._babylonTransformNode) {\r\n (node._babylonTransformNode as AbstractMesh).isVisible = value;\r\n }\r\n node._primitiveBabylonMeshes?.forEach((mesh) => {\r\n mesh.isVisible = value;\r\n });\r\n },\r\n getTarget: (node: INode) => node._babylonTransformNode,\r\n getPropertyName: [() => \"isVisible\"],\r\n type: \"boolean\",\r\n });\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_node_visibility glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_node_visibility(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n _RegisterKHRNodeVisibilityRuntime();\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader));\r\n}\r\n"]}
@@ -6,212 +6,229 @@ import { registerGLTFExtension, unregisterGLTFExtension } from "../glTFLoaderExt
6
6
  export function registerBuiltInGLTFExtensions() {
7
7
  unregisterGLTFExtension("EXT_lights_image_based");
8
8
  registerGLTFExtension("EXT_lights_image_based", true, async (loader) => {
9
- const { EXT_lights_image_based } = await import("./EXT_lights_image_based.js");
9
+ const { EXT_lights_image_based } = await import("./EXT_lights_image_based.pure.js");
10
10
  return new EXT_lights_image_based(loader);
11
11
  });
12
12
  unregisterGLTFExtension("EXT_mesh_gpu_instancing");
13
13
  registerGLTFExtension("EXT_mesh_gpu_instancing", true, async (loader) => {
14
- const { EXT_mesh_gpu_instancing } = await import("./EXT_mesh_gpu_instancing.js");
14
+ const [{ EXT_mesh_gpu_instancing }, { RegisterThinInstanceMesh }] = await Promise.all([
15
+ import("./EXT_mesh_gpu_instancing.pure.js"),
16
+ import("@babylonjs/core/Meshes/thinInstanceMesh.pure.js"),
17
+ ]);
18
+ RegisterThinInstanceMesh();
15
19
  return new EXT_mesh_gpu_instancing(loader);
16
20
  });
17
21
  unregisterGLTFExtension("EXT_meshopt_compression");
18
22
  registerGLTFExtension("EXT_meshopt_compression", true, async (loader) => {
19
- const { EXT_meshopt_compression } = await import("./EXT_meshopt_compression.js");
23
+ const { EXT_meshopt_compression } = await import("./EXT_meshopt_compression.pure.js");
20
24
  return new EXT_meshopt_compression(loader);
21
25
  });
22
26
  unregisterGLTFExtension("EXT_texture_avif");
23
27
  registerGLTFExtension("EXT_texture_avif", true, async (loader) => {
24
- const { EXT_texture_avif } = await import("./EXT_texture_avif.js");
28
+ const { EXT_texture_avif } = await import("./EXT_texture_avif.pure.js");
25
29
  return new EXT_texture_avif(loader);
26
30
  });
27
31
  unregisterGLTFExtension("EXT_texture_webp");
28
32
  registerGLTFExtension("EXT_texture_webp", true, async (loader) => {
29
- const { EXT_texture_webp } = await import("./EXT_texture_webp.js");
33
+ const { EXT_texture_webp } = await import("./EXT_texture_webp.pure.js");
30
34
  return new EXT_texture_webp(loader);
31
35
  });
32
36
  unregisterGLTFExtension("ExtrasAsMetadata");
33
37
  registerGLTFExtension("ExtrasAsMetadata", false, async (loader) => {
34
- const { ExtrasAsMetadata } = await import("./ExtrasAsMetadata.js");
38
+ const { ExtrasAsMetadata } = await import("./ExtrasAsMetadata.pure.js");
35
39
  return new ExtrasAsMetadata(loader);
36
40
  });
37
41
  unregisterGLTFExtension("KHR_animation_pointer");
38
42
  registerGLTFExtension("KHR_animation_pointer", true, async (loader) => {
39
- const { KHR_animation_pointer } = await import("./KHR_animation_pointer.js");
43
+ const [{ KHR_animation_pointer }, { _RegisterKHRAnimationPointerData }] = await Promise.all([
44
+ import("./KHR_animation_pointer.pure.js"),
45
+ import("./KHR_animation_pointer.data.pure.js"),
46
+ ]);
47
+ _RegisterKHRAnimationPointerData();
40
48
  return new KHR_animation_pointer(loader);
41
49
  });
42
50
  unregisterGLTFExtension("KHR_draco_mesh_compression");
43
51
  registerGLTFExtension("KHR_draco_mesh_compression", true, async (loader) => {
44
- const { KHR_draco_mesh_compression } = await import("./KHR_draco_mesh_compression.js");
52
+ const { KHR_draco_mesh_compression } = await import("./KHR_draco_mesh_compression.pure.js");
45
53
  return new KHR_draco_mesh_compression(loader);
46
54
  });
47
55
  unregisterGLTFExtension("KHR_gaussian_splatting");
48
56
  registerGLTFExtension("KHR_gaussian_splatting", true, async (loader) => {
49
- const { KHR_gaussian_splatting } = await import("./KHR_gaussian_splatting.js");
57
+ const { KHR_gaussian_splatting } = await import("./KHR_gaussian_splatting.pure.js");
50
58
  return new KHR_gaussian_splatting(loader);
51
59
  });
52
60
  unregisterGLTFExtension("KHR_interactivity");
53
61
  registerGLTFExtension("KHR_interactivity", true, async (loader) => {
54
- const { KHR_interactivity } = await import("./KHR_interactivity.js");
62
+ const { KHR_interactivity, _RegisterKHRInteractivityRuntime } = await import("./KHR_interactivity.pure.js");
63
+ _RegisterKHRInteractivityRuntime();
55
64
  return new KHR_interactivity(loader);
56
65
  });
57
66
  unregisterGLTFExtension("KHR_lights_punctual");
58
67
  registerGLTFExtension("KHR_lights_punctual", true, async (loader) => {
59
- const { KHR_lights } = await import("./KHR_lights_punctual.js");
68
+ const { KHR_lights } = await import("./KHR_lights_punctual.pure.js");
60
69
  return new KHR_lights(loader);
61
70
  });
62
71
  unregisterGLTFExtension("EXT_lights_area");
63
72
  registerGLTFExtension("EXT_lights_area", true, async (loader) => {
64
- const { EXT_lights_area } = await import("./EXT_lights_area.js");
73
+ const { EXT_lights_area } = await import("./EXT_lights_area.pure.js");
65
74
  return new EXT_lights_area(loader);
66
75
  });
67
76
  unregisterGLTFExtension("EXT_lights_ies");
68
77
  registerGLTFExtension("EXT_lights_ies", true, async (loader) => {
69
- const { EXT_lights_ies } = await import("./EXT_lights_ies.js");
78
+ const { EXT_lights_ies } = await import("./EXT_lights_ies.pure.js");
70
79
  return new EXT_lights_ies(loader);
71
80
  });
72
81
  unregisterGLTFExtension("KHR_materials_anisotropy");
73
82
  registerGLTFExtension("KHR_materials_anisotropy", true, async (loader) => {
74
- const { KHR_materials_anisotropy } = await import("./KHR_materials_anisotropy.js");
83
+ const { KHR_materials_anisotropy } = await import("./KHR_materials_anisotropy.pure.js");
75
84
  return new KHR_materials_anisotropy(loader);
76
85
  });
77
86
  unregisterGLTFExtension("KHR_materials_clearcoat");
78
87
  registerGLTFExtension("KHR_materials_clearcoat", true, async (loader) => {
79
- const { KHR_materials_clearcoat } = await import("./KHR_materials_clearcoat.js");
88
+ const { KHR_materials_clearcoat } = await import("./KHR_materials_clearcoat.pure.js");
80
89
  return new KHR_materials_clearcoat(loader);
81
90
  });
82
91
  unregisterGLTFExtension("KHR_materials_diffuse_roughness");
83
92
  registerGLTFExtension("KHR_materials_diffuse_roughness", true, async (loader) => {
84
- const { KHR_materials_diffuse_roughness } = await import("./KHR_materials_diffuse_roughness.js");
93
+ const { KHR_materials_diffuse_roughness } = await import("./KHR_materials_diffuse_roughness.pure.js");
85
94
  return new KHR_materials_diffuse_roughness(loader);
86
95
  });
87
96
  unregisterGLTFExtension("KHR_materials_diffuse_transmission");
88
97
  registerGLTFExtension("KHR_materials_diffuse_transmission", true, async (loader) => {
89
- const { KHR_materials_diffuse_transmission } = await import("./KHR_materials_diffuse_transmission.js");
98
+ const { KHR_materials_diffuse_transmission } = await import("./KHR_materials_diffuse_transmission.pure.js");
90
99
  return new KHR_materials_diffuse_transmission(loader);
91
100
  });
92
101
  unregisterGLTFExtension("KHR_materials_dispersion");
93
102
  registerGLTFExtension("KHR_materials_dispersion", true, async (loader) => {
94
- const { KHR_materials_dispersion } = await import("./KHR_materials_dispersion.js");
103
+ const { KHR_materials_dispersion } = await import("./KHR_materials_dispersion.pure.js");
95
104
  return new KHR_materials_dispersion(loader);
96
105
  });
97
106
  unregisterGLTFExtension("KHR_materials_emissive_strength");
98
107
  registerGLTFExtension("KHR_materials_emissive_strength", true, async (loader) => {
99
- const { KHR_materials_emissive_strength } = await import("./KHR_materials_emissive_strength.js");
108
+ const { KHR_materials_emissive_strength } = await import("./KHR_materials_emissive_strength.pure.js");
100
109
  return new KHR_materials_emissive_strength(loader);
101
110
  });
102
111
  unregisterGLTFExtension("KHR_materials_ior");
103
112
  registerGLTFExtension("KHR_materials_ior", true, async (loader) => {
104
- const { KHR_materials_ior } = await import("./KHR_materials_ior.js");
113
+ const { KHR_materials_ior } = await import("./KHR_materials_ior.pure.js");
105
114
  return new KHR_materials_ior(loader);
106
115
  });
107
116
  unregisterGLTFExtension("KHR_materials_iridescence");
108
117
  registerGLTFExtension("KHR_materials_iridescence", true, async (loader) => {
109
- const { KHR_materials_iridescence } = await import("./KHR_materials_iridescence.js");
118
+ const { KHR_materials_iridescence } = await import("./KHR_materials_iridescence.pure.js");
110
119
  return new KHR_materials_iridescence(loader);
111
120
  });
112
121
  unregisterGLTFExtension("KHR_materials_pbrSpecularGlossiness");
113
122
  registerGLTFExtension("KHR_materials_pbrSpecularGlossiness", true, async (loader) => {
114
- const { KHR_materials_pbrSpecularGlossiness } = await import("./KHR_materials_pbrSpecularGlossiness.js");
123
+ const { KHR_materials_pbrSpecularGlossiness } = await import("./KHR_materials_pbrSpecularGlossiness.pure.js");
115
124
  return new KHR_materials_pbrSpecularGlossiness(loader);
116
125
  });
117
126
  unregisterGLTFExtension("KHR_materials_sheen");
118
127
  registerGLTFExtension("KHR_materials_sheen", true, async (loader) => {
119
- const { KHR_materials_sheen } = await import("./KHR_materials_sheen.js");
128
+ const { KHR_materials_sheen } = await import("./KHR_materials_sheen.pure.js");
120
129
  return new KHR_materials_sheen(loader);
121
130
  });
122
131
  unregisterGLTFExtension("KHR_materials_specular");
123
132
  registerGLTFExtension("KHR_materials_specular", true, async (loader) => {
124
- const { KHR_materials_specular } = await import("./KHR_materials_specular.js");
133
+ const { KHR_materials_specular } = await import("./KHR_materials_specular.pure.js");
125
134
  return new KHR_materials_specular(loader);
126
135
  });
127
136
  unregisterGLTFExtension("KHR_materials_transmission");
128
137
  registerGLTFExtension("KHR_materials_transmission", true, async (loader) => {
129
- const { KHR_materials_transmission } = await import("./KHR_materials_transmission.js");
138
+ const { KHR_materials_transmission } = await import("./KHR_materials_transmission.pure.js");
130
139
  return new KHR_materials_transmission(loader);
131
140
  });
132
141
  unregisterGLTFExtension("KHR_materials_unlit");
133
142
  registerGLTFExtension("KHR_materials_unlit", true, async (loader) => {
134
- const { KHR_materials_unlit } = await import("./KHR_materials_unlit.js");
143
+ const { KHR_materials_unlit } = await import("./KHR_materials_unlit.pure.js");
135
144
  return new KHR_materials_unlit(loader);
136
145
  });
137
146
  unregisterGLTFExtension("KHR_materials_variants");
138
147
  registerGLTFExtension("KHR_materials_variants", true, async (loader) => {
139
- const { KHR_materials_variants } = await import("./KHR_materials_variants.js");
148
+ const { KHR_materials_variants } = await import("./KHR_materials_variants.pure.js");
140
149
  return new KHR_materials_variants(loader);
141
150
  });
142
151
  unregisterGLTFExtension("KHR_materials_volume");
143
152
  registerGLTFExtension("KHR_materials_volume", true, async (loader) => {
144
- const { KHR_materials_volume } = await import("./KHR_materials_volume.js");
153
+ const { KHR_materials_volume } = await import("./KHR_materials_volume.pure.js");
145
154
  return new KHR_materials_volume(loader);
146
155
  });
147
156
  unregisterGLTFExtension("KHR_mesh_quantization");
148
157
  registerGLTFExtension("KHR_mesh_quantization", true, async (loader) => {
149
- const { KHR_mesh_quantization } = await import("./KHR_mesh_quantization.js");
158
+ const { KHR_mesh_quantization } = await import("./KHR_mesh_quantization.pure.js");
150
159
  return new KHR_mesh_quantization(loader);
151
160
  });
152
161
  unregisterGLTFExtension("KHR_texture_basisu");
153
162
  registerGLTFExtension("KHR_texture_basisu", true, async (loader) => {
154
- const { KHR_texture_basisu } = await import("./KHR_texture_basisu.js");
163
+ const { KHR_texture_basisu } = await import("./KHR_texture_basisu.pure.js");
155
164
  return new KHR_texture_basisu(loader);
156
165
  });
157
166
  unregisterGLTFExtension("KHR_texture_transform");
158
167
  registerGLTFExtension("KHR_texture_transform", true, async (loader) => {
159
- const { KHR_texture_transform } = await import("./KHR_texture_transform.js");
168
+ const { KHR_texture_transform } = await import("./KHR_texture_transform.pure.js");
160
169
  return new KHR_texture_transform(loader);
161
170
  });
162
171
  unregisterGLTFExtension("KHR_xmp_json_ld");
163
172
  registerGLTFExtension("KHR_xmp_json_ld", true, async (loader) => {
164
- const { KHR_xmp_json_ld } = await import("./KHR_xmp_json_ld.js");
173
+ const { KHR_xmp_json_ld } = await import("./KHR_xmp_json_ld.pure.js");
165
174
  return new KHR_xmp_json_ld(loader);
166
175
  });
167
176
  unregisterGLTFExtension("MSFT_audio_emitter");
168
177
  registerGLTFExtension("MSFT_audio_emitter", true, async (loader) => {
169
- const { MSFT_audio_emitter } = await import("./MSFT_audio_emitter.js");
178
+ const [{ MSFT_audio_emitter }, { RegisterAudioSceneComponent }, { Sound }] = await Promise.all([
179
+ import("./MSFT_audio_emitter.pure.js"),
180
+ import("@babylonjs/core/Audio/audioSceneComponent.pure.js"),
181
+ import("@babylonjs/core/Audio/sound.pure.js"),
182
+ ]);
183
+ RegisterAudioSceneComponent(Sound);
170
184
  return new MSFT_audio_emitter(loader);
171
185
  });
172
186
  unregisterGLTFExtension("MSFT_lod");
173
187
  registerGLTFExtension("MSFT_lod", true, async (loader) => {
174
- const { MSFT_lod } = await import("./MSFT_lod.js");
188
+ const { MSFT_lod } = await import("./MSFT_lod.pure.js");
175
189
  return new MSFT_lod(loader);
176
190
  });
177
191
  unregisterGLTFExtension("MSFT_minecraftMesh");
178
192
  registerGLTFExtension("MSFT_minecraftMesh", true, async (loader) => {
179
- const { MSFT_minecraftMesh } = await import("./MSFT_minecraftMesh.js");
193
+ const { MSFT_minecraftMesh } = await import("./MSFT_minecraftMesh.pure.js");
180
194
  return new MSFT_minecraftMesh(loader);
181
195
  });
182
196
  unregisterGLTFExtension("MSFT_sRGBFactors");
183
197
  registerGLTFExtension("MSFT_sRGBFactors", true, async (loader) => {
184
- const { MSFT_sRGBFactors } = await import("./MSFT_sRGBFactors.js");
198
+ const { MSFT_sRGBFactors } = await import("./MSFT_sRGBFactors.pure.js");
185
199
  return new MSFT_sRGBFactors(loader);
186
200
  });
187
201
  unregisterGLTFExtension("KHR_node_visibility");
188
202
  registerGLTFExtension("KHR_node_visibility", true, async (loader) => {
189
- const { KHR_node_visibility } = await import("./KHR_node_visibility.js");
203
+ const { KHR_node_visibility, _RegisterKHRNodeVisibilityRuntime } = await import("./KHR_node_visibility.pure.js");
204
+ _RegisterKHRNodeVisibilityRuntime();
190
205
  return new KHR_node_visibility(loader);
191
206
  });
192
207
  unregisterGLTFExtension("KHR_node_hoverability");
193
208
  registerGLTFExtension("KHR_node_hoverability", true, async (loader) => {
194
- const { KHR_node_hoverability } = await import("./KHR_node_hoverability.js");
209
+ const { KHR_node_hoverability, _RegisterKHRNodeHoverabilityRuntime } = await import("./KHR_node_hoverability.pure.js");
210
+ _RegisterKHRNodeHoverabilityRuntime();
195
211
  return new KHR_node_hoverability(loader);
196
212
  });
197
213
  unregisterGLTFExtension("KHR_node_selectability");
198
214
  registerGLTFExtension("KHR_node_selectability", true, async (loader) => {
199
- const { KHR_node_selectability } = await import("./KHR_node_selectability.js");
215
+ const { KHR_node_selectability, _RegisterKHRNodeSelectabilityRuntime } = await import("./KHR_node_selectability.pure.js");
216
+ _RegisterKHRNodeSelectabilityRuntime();
200
217
  return new KHR_node_selectability(loader);
201
218
  });
202
219
  unregisterGLTFExtension("KHR_materials_coat");
203
220
  registerGLTFExtension("KHR_materials_coat", true, async (loader) => {
204
- const { KHR_materials_coat } = await import("./KHR_materials_coat.js");
221
+ const { KHR_materials_coat } = await import("./KHR_materials_coat.pure.js");
205
222
  return new KHR_materials_coat(loader);
206
223
  });
207
224
  unregisterGLTFExtension("KHR_materials_fuzz");
208
225
  registerGLTFExtension("KHR_materials_fuzz", true, async (loader) => {
209
- const { KHR_materials_fuzz } = await import("./KHR_materials_fuzz.js");
226
+ const { KHR_materials_fuzz } = await import("./KHR_materials_fuzz.pure.js");
210
227
  return new KHR_materials_fuzz(loader);
211
228
  });
212
229
  unregisterGLTFExtension("KHR_materials_volume_scatter");
213
230
  registerGLTFExtension("KHR_materials_volume_scatter", true, async (loader) => {
214
- const { KHR_materials_volume_scatter } = await import("./KHR_materials_volume_scatter.js");
231
+ const { KHR_materials_volume_scatter } = await import("./KHR_materials_volume_scatter.pure.js");
215
232
  return new KHR_materials_volume_scatter(loader);
216
233
  });
217
234
  }