@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.
- package/OBJ/objFileLoader.metadata.d.ts +5 -1
- package/OBJ/objFileLoader.metadata.js +4 -1
- package/OBJ/objFileLoader.metadata.js.map +1 -1
- package/OBJ/objFileLoader.pure.d.ts +12 -3
- package/OBJ/objFileLoader.pure.js +30 -2
- package/OBJ/objFileLoader.pure.js.map +1 -1
- package/OBJ/objLoadingOptions.d.ts +6 -0
- package/OBJ/objLoadingOptions.js.map +1 -1
- package/SPLAT/gaussianSplattingStream.d.ts +162 -15
- package/SPLAT/gaussianSplattingStream.js +523 -96
- package/SPLAT/gaussianSplattingStream.js.map +1 -1
- package/dynamic.js +16 -6
- package/dynamic.js.map +1 -1
- package/glTF/1.0/glTFBinaryExtension.d.ts +4 -14
- package/glTF/1.0/glTFBinaryExtension.js +6 -62
- package/glTF/1.0/glTFBinaryExtension.js.map +1 -1
- package/glTF/1.0/glTFBinaryExtension.pure.d.ts +21 -0
- package/glTF/1.0/glTFBinaryExtension.pure.js +76 -0
- package/glTF/1.0/glTFBinaryExtension.pure.js.map +1 -0
- package/glTF/1.0/glTFLoader.d.ts +3 -142
- package/glTF/1.0/glTFLoader.js +7 -1840
- package/glTF/1.0/glTFLoader.js.map +1 -1
- package/glTF/1.0/glTFLoader.pure.d.ts +149 -0
- package/glTF/1.0/glTFLoader.pure.js +1854 -0
- package/glTF/1.0/glTFLoader.pure.js.map +1 -0
- package/glTF/1.0/glTFLoaderUtils.d.ts +2 -2
- package/glTF/1.0/glTFLoaderUtils.js +5 -5
- package/glTF/1.0/glTFLoaderUtils.js.map +1 -1
- package/glTF/1.0/glTFMaterialsCommonExtension.d.ts +4 -11
- package/glTF/1.0/glTFMaterialsCommonExtension.js +6 -128
- package/glTF/1.0/glTFMaterialsCommonExtension.js.map +1 -1
- package/glTF/1.0/glTFMaterialsCommonExtension.pure.d.ts +18 -0
- package/glTF/1.0/glTFMaterialsCommonExtension.pure.js +142 -0
- package/glTF/1.0/glTFMaterialsCommonExtension.pure.js.map +1 -0
- package/glTF/1.0/pure.d.ts +3 -0
- package/glTF/1.0/pure.js +3 -0
- package/glTF/1.0/pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +0 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +3 -251
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js +267 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.js +2 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js +15 -4
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +19 -6
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +19 -6
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +19 -6
- package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -1
- package/glTF/2.0/Extensions/dynamic.js +59 -42
- package/glTF/2.0/Extensions/dynamic.js.map +1 -1
- package/glTF/2.0/Extensions/pure.d.ts +1 -0
- package/glTF/2.0/Extensions/pure.js +1 -0
- package/glTF/2.0/Extensions/pure.js.map +1 -1
- package/glTF/2.0/glTFLoader.pure.d.ts +2 -2
- package/glTF/2.0/glTFLoader.pure.js +6 -5
- package/glTF/2.0/glTFLoader.pure.js.map +1 -1
- package/glTF/2.0/glTFLoaderAnimation.d.ts +1 -42
- package/glTF/2.0/glTFLoaderAnimation.js +3 -79
- package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
- package/glTF/2.0/glTFLoaderAnimation.pure.d.ts +47 -0
- package/glTF/2.0/glTFLoaderAnimation.pure.js +91 -0
- package/glTF/2.0/glTFLoaderAnimation.pure.js.map +1 -0
- package/glTF/2.0/pure.d.ts +1 -0
- package/glTF/2.0/pure.js +1 -0
- package/glTF/2.0/pure.js.map +1 -1
- package/glTF/glTFFileLoader.pure.d.ts +8 -4
- package/glTF/glTFFileLoader.pure.js +13 -6
- package/glTF/glTFFileLoader.pure.js.map +1 -1
- package/package.json +3 -4
- /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
|
|
40
|
+
let _RuntimeRegistered = false;
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
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
|
|
47
|
-
if (
|
|
46
|
+
export function _RegisterKHRNodeHoverabilityRuntime() {
|
|
47
|
+
if (_RuntimeRegistered) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
-
|
|
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
|
|
37
|
+
let _RuntimeRegistered = false;
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
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
|
|
44
|
-
if (
|
|
43
|
+
export function _RegisterKHRNodeSelectabilityRuntime() {
|
|
44
|
+
if (_RuntimeRegistered) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
|
|
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
|
|
53
|
+
let _RuntimeRegistered = false;
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
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
|
|
60
|
-
if (
|
|
59
|
+
export function _RegisterKHRNodeVisibilityRuntime() {
|
|
60
|
+
if (_RuntimeRegistered) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
|
|
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":"AAEA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,IAAI,GAAG,qBAAqB,CAAC;AAEnC,wCAAwC;AAExC;;GAEG;AACH,gEAAgE;AAChE,MAAM,OAAO,mBAAmB;IAa5B;;OAEG;IACH,YAAY,MAAkB;QAf9B;;WAEG;QACa,SAAI,GAAG,IAAI,CAAC;QAaxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBACxD,IAAI,oBAAoB,EAAE,CAAC;oBACvB,oBAAoB,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;wBAClH,yDAAyD;wBACzD,2DAA2D;wBAC3D,oDAAoD;wBACpD,yDAAyD;wBACzD,wDAAwD;wBACxD,uDAAuD;wBACvD,gEAAgE;wBAC/D,oBAAqC,CAAC,SAAS,GAAG,KAAK,CAAC;wBACzD,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;4BAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;4BAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;wBAC3B,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAED,IAAI,
|
|
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
|
|
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
|
|
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
|
|
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
|
}
|