@babylonjs/loaders 9.26.0 → 9.26.2
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/FBX/fbxConstraintBehavior.d.ts +188 -0
- package/FBX/fbxConstraintBehavior.js +532 -0
- package/FBX/fbxConstraintBehavior.js.map +1 -0
- package/FBX/fbxFileLoader.pure.d.ts +175 -6
- package/FBX/fbxFileLoader.pure.js +1521 -286
- package/FBX/fbxFileLoader.pure.js.map +1 -1
- package/FBX/index.d.ts +4 -1
- package/FBX/index.js +1 -0
- package/FBX/index.js.map +1 -1
- package/FBX/interpreter/animation.d.ts +73 -33
- package/FBX/interpreter/animation.js +620 -223
- package/FBX/interpreter/animation.js.map +1 -1
- package/FBX/interpreter/animationCurve.d.ts +91 -0
- package/FBX/interpreter/animationCurve.js +623 -0
- package/FBX/interpreter/animationCurve.js.map +1 -0
- package/FBX/interpreter/blendShapes.js +9 -18
- package/FBX/interpreter/blendShapes.js.map +1 -1
- package/FBX/interpreter/connections.d.ts +1 -1
- package/FBX/interpreter/connections.js +173 -34
- package/FBX/interpreter/connections.js.map +1 -1
- package/FBX/interpreter/constraints.d.ts +68 -0
- package/FBX/interpreter/constraints.js +143 -0
- package/FBX/interpreter/constraints.js.map +1 -0
- package/FBX/interpreter/fbxInterpreter.d.ts +89 -4
- package/FBX/interpreter/fbxInterpreter.js +474 -122
- package/FBX/interpreter/fbxInterpreter.js.map +1 -1
- package/FBX/interpreter/geometry.d.ts +1 -1
- package/FBX/interpreter/geometry.js +150 -92
- package/FBX/interpreter/geometry.js.map +1 -1
- package/FBX/interpreter/legacyDocument.d.ts +11 -0
- package/FBX/interpreter/legacyDocument.js +425 -0
- package/FBX/interpreter/legacyDocument.js.map +1 -0
- package/FBX/interpreter/materialModel.d.ts +71 -0
- package/FBX/interpreter/materialModel.js +622 -0
- package/FBX/interpreter/materialModel.js.map +1 -0
- package/FBX/interpreter/materials.d.ts +13 -1
- package/FBX/interpreter/materials.js +88 -5
- package/FBX/interpreter/materials.js.map +1 -1
- package/FBX/interpreter/nodeTransform.d.ts +32 -0
- package/FBX/interpreter/nodeTransform.js +54 -0
- package/FBX/interpreter/nodeTransform.js.map +1 -0
- package/FBX/interpreter/nurbs.d.ts +99 -0
- package/FBX/interpreter/nurbs.js +627 -0
- package/FBX/interpreter/nurbs.js.map +1 -0
- package/FBX/interpreter/propertyTemplates.d.ts +23 -0
- package/FBX/interpreter/propertyTemplates.js +109 -2
- package/FBX/interpreter/propertyTemplates.js.map +1 -1
- package/FBX/interpreter/rig.js +16 -0
- package/FBX/interpreter/rig.js.map +1 -1
- package/FBX/interpreter/sceneDiagnostics.js +28 -3
- package/FBX/interpreter/sceneDiagnostics.js.map +1 -1
- package/FBX/interpreter/skeleton.d.ts +4 -18
- package/FBX/interpreter/skeleton.js +16 -94
- package/FBX/interpreter/skeleton.js.map +1 -1
- package/FBX/parsers/fbxAsciiParser.js +119 -9
- package/FBX/parsers/fbxAsciiParser.js.map +1 -1
- package/FBX/parsers/fbxBinaryParser.js +74 -22
- package/FBX/parsers/fbxBinaryParser.js.map +1 -1
- package/FBX/pure.d.ts +1 -0
- package/FBX/pure.js +1 -0
- package/FBX/pure.js.map +1 -1
- package/FBX/types/fbxTypes.d.ts +18 -2
- package/FBX/types/fbxTypes.js +40 -12
- package/FBX/types/fbxTypes.js.map +1 -1
- package/SPLAT/gaussianSplattingStream.d.ts +79 -25
- package/SPLAT/gaussianSplattingStream.js +320 -95
- package/SPLAT/gaussianSplattingStream.js.map +1 -1
- package/USD/usdCommandProtocol.d.ts +20 -4
- package/USD/usdCommandProtocol.js +25 -3
- package/USD/usdCommandProtocol.js.map +1 -1
- package/USD/usdFileLoader.pure.js +2 -0
- package/USD/usdFileLoader.pure.js.map +1 -1
- package/USD/usdSceneMaterializer.js +430 -92
- package/USD/usdSceneMaterializer.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +110 -3
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +468 -74
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.d.ts +47 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.js +68 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +2 -2
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.d.ts +24 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.js +38 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.d.ts +41 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.js +63 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.js +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.d.ts +112 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js +773 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +18 -10
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +299 -54
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.d.ts +2 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.js +7 -2
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.d.ts +24 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.js +89 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +55 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js +124 -76
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.types.d.ts +18 -1
- package/glTF/2.0/Extensions/KHR_interactivity.types.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +2 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +114 -56
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +2 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +80 -35
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
- package/glTF/2.0/Extensions/interactivityRefPathToObjectConverter.js +3 -2
- package/glTF/2.0/Extensions/interactivityRefPathToObjectConverter.js.map +1 -1
- package/glTF/2.0/Extensions/objectModelMapping.d.ts +4 -2
- package/glTF/2.0/Extensions/objectModelMapping.js +33 -4
- package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -1
- package/glTF/2.0/glTFLoader.pure.d.ts +1 -1
- package/glTF/2.0/glTFLoader.pure.js +9 -4
- package/glTF/2.0/glTFLoader.pure.js.map +1 -1
- package/glTF/2.0/glTFLoaderExtension.d.ts +2 -1
- package/glTF/2.0/glTFLoaderExtension.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactivityGraphModel.js","sourceRoot":"","sources":["../../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {\n type IKHRInteractivity,\n type IKHRInteractivity_Declaration,\n type IKHRInteractivity_Graph,\n type IKHRInteractivity_Node,\n type IKHRInteractivity_Variable,\n} from \"babylonjs-gltf2interface\";\nimport {\n getMappingForDeclaration,\n getNoOpMappingForDeclaration,\n ParseDebugLogTemplate,\n type IGLTFToFlowGraphMapping,\n type IGLTFToFlowGraphMappingObject,\n} from \"./declarationMapper\";\nimport { FlowGraphTypes } from \"core/FlowGraph/flowGraphRichTypes\";\n\n/**\n * Ratified KHR_interactivity specification baseline used by this importer.\n */\nexport const KHR_INTERACTIVITY_SPECIFICATION_COMMIT = \"f798712c5685bc9223a628140fba707db8889300\";\n\n/**\n * Runtime representation of every ratified built-in KHR_interactivity type.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const gltfTypeToBabylonType: {\n [key: string]: { length: number; flowGraphType: FlowGraphTypes; elementType: \"number\" | \"boolean\" | \"string\" | \"any\" };\n} = {\n float: { length: 1, flowGraphType: FlowGraphTypes.Number, elementType: \"number\" },\n bool: { length: 1, flowGraphType: FlowGraphTypes.Boolean, elementType: \"boolean\" },\n float2: { length: 2, flowGraphType: FlowGraphTypes.Vector2, elementType: \"number\" },\n float3: { length: 3, flowGraphType: FlowGraphTypes.Vector3, elementType: \"number\" },\n float4: { length: 4, flowGraphType: FlowGraphTypes.Vector4, elementType: \"number\" },\n float4x4: { length: 16, flowGraphType: FlowGraphTypes.Matrix, elementType: \"number\" },\n float2x2: { length: 4, flowGraphType: FlowGraphTypes.Matrix2D, elementType: \"number\" },\n float3x3: { length: 9, flowGraphType: FlowGraphTypes.Matrix3D, elementType: \"number\" },\n int: { length: 1, flowGraphType: FlowGraphTypes.Integer, elementType: \"number\" },\n ref: { length: 1, flowGraphType: FlowGraphTypes.String, elementType: \"string\" },\n custom: { length: 0, flowGraphType: FlowGraphTypes.Any, elementType: \"any\" },\n};\n\n/**\n * Classification of a KHR_interactivity declaration.\n */\nexport type KHRInteractivityDeclarationSupport = \"core\" | \"extension\" | \"unsupported-extension\" | \"unknown-core\";\n\n/**\n * A structured KHR_interactivity import diagnostic.\n */\nexport interface IKHRInteractivityDiagnostic {\n /** JSON pointer identifying the source location. */\n path: string;\n /** Human-readable diagnostic text. */\n message: string;\n /** Diagnostic severity. */\n severity: \"error\" | \"warning\";\n}\n\n/**\n * Canonical declaration information retained during import.\n */\nexport interface IKHRInteractivityDeclarationModel {\n /** Declaration index in the source graph. */\n index: number;\n /** Full operation name, including the defining extension when present. */\n operation: string;\n /** Whether Babylon can execute the declaration. */\n support: KHRInteractivityDeclarationSupport;\n /** Exact source declaration. */\n source: IKHRInteractivity_Declaration;\n}\n\n/**\n * Canonical graph information retained during import.\n */\nexport interface IKHRInteractivityGraphModel {\n /** Graph index in the root extension. */\n index: number;\n /** Stable source path. */\n path: string;\n /** Human-readable graph name. */\n name: string;\n /** Exact source graph, including extension and extras payloads. */\n source: IKHRInteractivity_Graph;\n /** Executable graph with specification defaults and fallbacks applied. */\n effectiveSource: IKHRInteractivity_Graph;\n /** Canonical declarations in source order. */\n declarations: IKHRInteractivityDeclarationModel[];\n /** Validation diagnostics for this graph. */\n diagnostics: IKHRInteractivityDiagnostic[];\n /** Whether this graph is valid and can be lowered to FlowGraph. */\n valid: boolean;\n}\n\n/**\n * Lossless canonical representation of a KHR_interactivity root extension.\n */\nexport interface IKHRInteractivityDocument {\n /** Ratified specification revision used for validation. */\n specificationCommit: string;\n /** Exact source extension, including unknown extensions and extras. */\n source: IKHRInteractivity;\n /** Default graph index, or -1 when the source selection is invalid. */\n defaultGraphIndex: number;\n /** Canonical graph models in source order. */\n graphs: IKHRInteractivityGraphModel[];\n /** Root-level validation diagnostics. */\n diagnostics: IKHRInteractivityDiagnostic[];\n}\n\nfunction _cloneJson<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((entry) => _cloneJson(entry)) as T;\n }\n if (value !== null && typeof value === \"object\") {\n const clone: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n Object.defineProperty(clone, key, {\n configurable: true,\n enumerable: true,\n value: _cloneJson(entry),\n writable: true,\n });\n }\n return clone as T;\n }\n return value;\n}\n\n/**\n * Creates a detached JSON copy of a KHR_interactivity graph.\n * @param graph source graph\n * @returns a lossless JSON copy\n */\nexport function CloneKHRInteractivityGraph(graph: IKHRInteractivity_Graph): IKHRInteractivity_Graph {\n return _cloneJson(graph);\n}\n\nfunction _isValidIndex(value: unknown, length: number): value is number {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value < length;\n}\n\nfunction _addError(diagnostics: IKHRInteractivityDiagnostic[], path: string, message: string): void {\n diagnostics.push({ path, message, severity: \"error\" });\n}\n\nfunction _addWarning(diagnostics: IKHRInteractivityDiagnostic[], path: string, message: string): void {\n diagnostics.push({ path, message, severity: \"warning\" });\n}\n\nfunction _isValidJsonPointer(value: string): boolean {\n return value === \"\" || /^(?:\\/(?:[^~]|~[01])*)*$/.test(value);\n}\n\nfunction _matchesOutputSocket(\n mapping: { [name: string]: IGLTFToFlowGraphMappingObject } | undefined,\n socket: string,\n declaration: IKHRInteractivityDeclarationModel,\n node: IKHRInteractivity_Node,\n graph: IKHRInteractivity_Graph,\n defaultSocket?: string\n): boolean {\n if (mapping && Object.prototype.hasOwnProperty.call(mapping, socket)) {\n return true;\n }\n if (socket === defaultSocket && mapping && Object.prototype.hasOwnProperty.call(mapping, defaultSocket)) {\n return true;\n }\n if (!Object.keys(mapping ?? {}).some((name) => name.startsWith(\"[\") && name.endsWith(\"]\"))) {\n return false;\n }\n if (declaration.operation === \"event/receive\") {\n const eventIndex = node.configuration?.event?.value?.[0];\n return typeof eventIndex === \"number\" && Object.prototype.hasOwnProperty.call(graph.events?.[eventIndex]?.values ?? {}, socket);\n }\n return true;\n}\n\nfunction _validateTypeIndex(typeIndex: unknown, graph: IKHRInteractivity_Graph, diagnostics: IKHRInteractivityDiagnostic[], path: string): typeIndex is number {\n if (!_isValidIndex(typeIndex, graph.types?.length ?? 0)) {\n _addError(diagnostics, path, `Type index ${String(typeIndex)} is out of range.`);\n return false;\n }\n return true;\n}\n\nfunction _validateValue(value: IKHRInteractivity_Variable, graph: IKHRInteractivity_Graph, diagnostics: IKHRInteractivityDiagnostic[], path: string): void {\n if (!_validateTypeIndex(value.type, graph, diagnostics, `${path}/type`)) {\n return;\n }\n if (value.value === undefined) {\n return;\n }\n const type = graph.types![value.type];\n const runtimeType = gltfTypeToBabylonType[type.signature];\n if (runtimeType && type.signature !== \"custom\" && value.value.length !== runtimeType.length) {\n _addError(diagnostics, `${path}/value`, `Expected ${runtimeType.length} value component(s) for type \"${type.signature}\", received ${value.value.length}.`);\n }\n for (let componentIndex = 0; componentIndex < value.value.length; componentIndex++) {\n const component = value.value[componentIndex];\n let valid = true;\n switch (type.signature) {\n case \"bool\":\n valid = typeof component === \"boolean\";\n break;\n case \"int\":\n valid = typeof component === \"number\" && Number.isInteger(component) && component >= -2147483648 && component <= 2147483647;\n break;\n case \"float\":\n case \"float2\":\n case \"float3\":\n case \"float4\":\n case \"float2x2\":\n case \"float3x3\":\n case \"float4x4\":\n valid = typeof component === \"number\" && Number.isFinite(component);\n break;\n case \"ref\":\n valid = typeof component === \"string\" && _isValidJsonPointer(component);\n break;\n default:\n break;\n }\n if (!valid) {\n _addError(diagnostics, `${path}/value/${componentIndex}`, `Value component is invalid for type \"${type.signature}\".`);\n }\n }\n}\n\nfunction _getDeclarationMapping(\n declaration: IKHRInteractivity_Declaration,\n graph: IKHRInteractivity_Graph,\n supportedExtensions?: ReadonlySet<string>\n): {\n mapping: IGLTFToFlowGraphMapping | undefined;\n support: KHRInteractivityDeclarationSupport;\n} {\n const extensionEnabled = !declaration.extension || !supportedExtensions || supportedExtensions.has(declaration.extension);\n const mapping = extensionEnabled ? getMappingForDeclaration(declaration, false) : undefined;\n if (mapping) {\n if (declaration.extension && mapping.declarationSchema && !_isCompatibleExtensionDeclaration(declaration, graph, mapping.declarationSchema)) {\n return { mapping: undefined, support: \"unsupported-extension\" };\n }\n return { mapping, support: declaration.extension ? \"extension\" : \"core\" };\n }\n\n return {\n mapping: undefined,\n support: declaration.extension ? \"unsupported-extension\" : \"unknown-core\",\n };\n}\n\nfunction _isCompatibleExtensionDeclaration(\n declaration: IKHRInteractivity_Declaration,\n graph: IKHRInteractivity_Graph,\n schema: NonNullable<IGLTFToFlowGraphMapping[\"declarationSchema\"]>\n): boolean {\n const matches = (actual: typeof declaration.inputValueSockets, expected: Record<string, string>): boolean => {\n const actualKeys = Object.keys(actual ?? {}).sort();\n const expectedKeys = Object.keys(expected).sort();\n if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index) => key !== expectedKeys[index])) {\n return false;\n }\n return actualKeys.every((key) => graph.types?.[actual![key].type]?.signature === expected[key]);\n };\n return matches(declaration.inputValueSockets, schema.inputValueSockets) && matches(declaration.outputValueSockets, schema.outputValueSockets);\n}\n\nfunction _validateConfigurationValue(value: unknown[] | undefined, type: IGLTFToFlowGraphMappingObject[\"configurationType\"]): boolean {\n if (!value) {\n return false;\n }\n const isInt = (entry: unknown) => typeof entry === \"number\" && Number.isInteger(entry) && entry >= -2147483648 && entry <= 2147483647;\n switch (type) {\n case \"bool\":\n return value.length === 1 && typeof value[0] === \"boolean\";\n case \"int\":\n return value.length === 1 && isInt(value[0]);\n case \"int[]\":\n return value.every(isInt);\n case \"string\":\n return value.length === 1 && typeof value[0] === \"string\";\n default:\n return value.length > 0;\n }\n}\n\nfunction _getIndexedArrayLength(graph: IKHRInteractivity_Graph, source: IGLTFToFlowGraphMappingObject[\"indexSource\"], assetNodeCount?: number): number {\n switch (source) {\n case \"types\":\n return graph.types?.length ?? 0;\n case \"variables\":\n return graph.variables?.length ?? 0;\n case \"events\":\n return graph.events?.length ?? 0;\n case \"nodes\":\n return graph.nodes?.length ?? 0;\n case \"assetNodes\":\n return assetNodeCount ?? 0;\n default:\n return 0;\n }\n}\n\nfunction _isEffectiveConfigurationValue(\n configuration: { value?: unknown[] } | undefined,\n property: IGLTFToFlowGraphMappingObject,\n graph: IKHRInteractivity_Graph,\n assetNodeCount?: number\n): boolean {\n if (!configuration || !_validateConfigurationValue(configuration.value, property.configurationType) || !configuration.value) {\n return false;\n }\n if (property.minItems !== undefined && configuration.value.length < property.minItems) {\n return false;\n }\n if (property.minimum !== undefined && configuration.value.some((value) => typeof value !== \"number\" || value < property.minimum!)) {\n return false;\n }\n if (property.maximum !== undefined && configuration.value.some((value) => typeof value !== \"number\" || value > property.maximum!)) {\n return false;\n }\n if (property.indexSource) {\n const length = _getIndexedArrayLength(graph, property.indexSource, assetNodeCount);\n if (configuration.value.some((value) => !_isValidIndex(value, length))) {\n return false;\n }\n }\n if (property.allowedSignatures) {\n const typeIndex = configuration.value[0];\n const signature = typeof typeIndex === \"number\" ? graph.types?.[typeIndex]?.signature : undefined;\n if (!signature || !property.allowedSignatures.includes(signature)) {\n return false;\n }\n }\n if (property.debugLogTemplate && !ParseDebugLogTemplate(configuration.value[0] as string).valid) {\n return false;\n }\n return true;\n}\n\nfunction _getAllowedDynamicFlowOutputSockets(\n node: IKHRInteractivity_Node,\n mapping: IGLTFToFlowGraphMapping,\n graph: IKHRInteractivity_Graph,\n assetNodeCount?: number\n): ReadonlySet<string> | undefined {\n for (const [key, property] of Object.entries(mapping.configuration ?? {})) {\n if (!property.generatesOutputFlowSockets) {\n continue;\n }\n const configured = node.configuration?.[key];\n const values = _isEffectiveConfigurationValue(configured, property, graph, assetNodeCount) ? configured!.value : property.defaultValue;\n return new Set(Array.isArray(values) ? values.map(String) : []);\n }\n return undefined;\n}\n\nfunction _matchesFlowOutputSocket(mapping: IGLTFToFlowGraphMapping, socket: string, allowedDynamicSockets: ReadonlySet<string> | undefined): boolean {\n const flowMappings = mapping.outputs?.flows;\n if (flowMappings && Object.prototype.hasOwnProperty.call(flowMappings, socket)) {\n return true;\n }\n const hasWildcard = Object.keys(flowMappings ?? {}).some((name) => name.startsWith(\"[\") && name.endsWith(\"]\"));\n return !hasWildcard || !allowedDynamicSockets || allowedDynamicSockets.has(socket);\n}\n\n/**\n * Creates the executable graph view with all ratified configuration defaults and fallback rules\n * applied without modifying the lossless source graph.\n * @param graph source graph\n * @param declarations canonical declarations\n * @param assetNodeCount number of glTF nodes in the containing asset\n * @returns normalized executable graph\n */\nexport function CreateEffectiveKHRInteractivityGraph(\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n assetNodeCount?: number\n): IKHRInteractivity_Graph {\n const effective = CloneKHRInteractivityGraph(graph);\n for (let nodeIndex = 0; nodeIndex < (effective.nodes?.length ?? 0); nodeIndex++) {\n const node = effective.nodes![nodeIndex];\n const declaration = declarations[node.declaration];\n if (!declaration || declaration.support === \"unknown-core\" || declaration.support === \"unsupported-extension\") {\n continue;\n }\n const mapping = getMappingForDeclaration(declaration.source, false);\n if (!mapping?.configuration) {\n continue;\n }\n const groupedValidity = new Map<string, boolean>();\n for (const [key, property] of Object.entries(mapping.configuration)) {\n if (property.configurationGroup) {\n const valid = _isEffectiveConfigurationValue(node.configuration?.[key], property, effective, assetNodeCount);\n groupedValidity.set(property.configurationGroup, (groupedValidity.get(property.configurationGroup) ?? true) && valid);\n }\n }\n for (const [key, property] of Object.entries(mapping.configuration)) {\n const valid =\n (!property.configurationGroup || groupedValidity.get(property.configurationGroup) === true) &&\n _isEffectiveConfigurationValue(node.configuration?.[key], property, effective, assetNodeCount);\n if (!valid && property.defaultValue !== undefined) {\n node.configuration ??= {};\n node.configuration[key] = {\n value: Array.isArray(property.defaultValue) ? _cloneJson(property.defaultValue) : [property.defaultValue],\n };\n } else if (valid && property.uniqueValues && node.configuration?.[key]?.value) {\n node.configuration[key].value = Array.from(new Set(node.configuration[key].value));\n }\n }\n }\n return effective;\n}\n\nfunction _getPointerTemplateSockets(pointer: string): { name: string; signature: \"int\" | \"ref\" }[] {\n const sockets: { name: string; signature: \"int\" | \"ref\" }[] = [];\n for (const segment of pointer.split(\"/\")) {\n const signature = segment.startsWith(\"[\") && !segment.startsWith(\"[[\") ? \"int\" : segment.startsWith(\"{\") && !segment.startsWith(\"{{\") ? \"ref\" : undefined;\n if (signature) {\n const name = segment\n .substring(1, segment.length - 1)\n .replace(/~1/g, \"/\")\n .replace(/~0/g, \"~\");\n sockets.push({ name, signature });\n }\n }\n return sockets;\n}\n\nfunction _resolveValueTypeIndex(\n value: IKHRInteractivity_Variable | { node: number; socket?: string; type?: number },\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n visited: Set<string> = new Set()\n): number | undefined {\n if (\"node\" in value) {\n return _resolveOutputTypeIndex(value.node, value.socket ?? \"value\", graph, declarations, visited);\n }\n return value.type;\n}\n\nfunction _resolveOutputTypeIndex(\n nodeIndex: number,\n socket: string,\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n visited: Set<string> = new Set()\n): number | undefined {\n const key = `${nodeIndex}:${socket}`;\n if (visited.has(key)) {\n return undefined;\n }\n visited.add(key);\n if (!_isValidIndex(nodeIndex, graph.nodes?.length ?? 0)) {\n return undefined;\n }\n const sourceNode = graph.nodes![nodeIndex];\n if (!_isValidIndex(sourceNode.declaration, declarations.length)) {\n return undefined;\n }\n const declaration = declarations[sourceNode.declaration];\n const declaredType = declaration.source.outputValueSockets?.[socket]?.type;\n if (declaredType !== undefined) {\n return declaredType;\n }\n const booleanType = () => graph.types?.findIndex((type) => type.signature === \"bool\");\n if (socket === \"isValid\") {\n return booleanType();\n }\n if (declaration.operation === \"pointer/get\" && socket === \"value\") {\n const configuredType = sourceNode.configuration?.type?.value?.[0];\n return typeof configuredType === \"number\" ? configuredType : undefined;\n }\n if (declaration.operation === \"variable/get\" && socket === \"value\") {\n const variableIndex = sourceNode.configuration?.variable?.value?.[0];\n return typeof variableIndex === \"number\" ? graph.variables?.[variableIndex]?.type : undefined;\n }\n if (declaration.operation === \"math/switch\" && socket === \"value\") {\n const defaultInput = sourceNode.values?.default;\n return defaultInput ? _resolveValueTypeIndex(defaultInput, graph, declarations, visited) : undefined;\n }\n if (declaration.operation === \"event/receive\" && socket !== \"event\") {\n const eventIndex = sourceNode.configuration?.event?.value?.[0];\n return typeof eventIndex === \"number\" ? graph.events?.[eventIndex]?.values?.[socket]?.type : undefined;\n }\n const fixedSignature = _getFixedOutputSignature(declaration.operation, socket);\n if (fixedSignature) {\n return graph.types?.findIndex((type) => type.signature === fixedSignature);\n }\n const mapping = getMappingForDeclaration(declaration.source, false);\n const outputMapping = mapping?.outputs?.values?.[socket];\n const mappedType = outputMapping?.gltfType;\n const signature = mappedType === \"number\" ? \"float\" : mappedType === \"boolean\" ? \"bool\" : mappedType;\n if (signature && signature in gltfTypeToBabylonType) {\n return graph.types?.findIndex((type) => type.signature === signature);\n }\n const typeSource = outputMapping?.typeSourceInput ? sourceNode.values?.[outputMapping.typeSourceInput] : undefined;\n return typeSource ? _resolveValueTypeIndex(typeSource, graph, declarations, visited) : undefined;\n}\n\nfunction _getFixedOutputSignature(operation: string, socket: string): keyof typeof gltfTypeToBabylonType | undefined {\n if (socket !== \"value\") {\n if (\n (operation === \"math/rgbToOkLCh\" && [\"l\", \"c\", \"h\"].includes(socket)) ||\n (operation === \"math/rgbFromOkLCh\" && [\"r\", \"g\", \"b\"].includes(socket)) ||\n operation.startsWith(\"math/extract\")\n ) {\n return \"float\";\n }\n if (operation === \"math/matDecompose\") {\n return socket === \"rotation\" ? \"float4\" : socket === \"translation\" || socket === \"scale\" ? \"float3\" : undefined;\n }\n if (operation === \"math/quatToAxisAngle\") {\n return socket === \"axis\" ? \"float3\" : socket === \"angle\" ? \"float\" : undefined;\n }\n if ((operation === \"flow/doN\" && socket === \"currentCount\") || (operation === \"flow/for\" && socket === \"index\")) {\n return \"int\";\n }\n if (operation === \"flow/setDelay\" && socket === \"lastDelay\") {\n return \"ref\";\n }\n if (operation === \"flow/throttle\" && socket === \"lastRemainingTime\") {\n return \"float\";\n }\n if ((operation === \"event/onStart\" || operation === \"event/onTick\" || operation === \"event/receive\") && socket === \"event\") {\n return \"ref\";\n }\n if (operation === \"event/onTick\" && socket === \"timeSinceLastTick\") {\n return \"float\";\n }\n if (operation === \"event/onTick\" && socket === \"timeSinceStart\") {\n return \"float\";\n }\n return undefined;\n }\n if ([\"math/E\", \"math/Pi\", \"math/Tau\", \"math/Inf\", \"math/NaN\", \"math/random\", \"math/length\", \"math/dot\", \"math/determinant\", \"math/quatAngleBetween\"].includes(operation)) {\n return \"float\";\n }\n if ([\"math/eq\", \"ref/eq\", \"math/lt\", \"math/le\", \"math/gt\", \"math/ge\", \"math/isNaN\", \"math/isInf\", \"type/intToBool\", \"type/floatToBool\"].includes(operation)) {\n return \"bool\";\n }\n if ([\"math/clz\", \"math/ctz\", \"math/popcnt\", \"type/boolToInt\", \"type/floatToInt\"].includes(operation)) {\n return \"int\";\n }\n if ([\"type/boolToFloat\", \"type/intToFloat\"].includes(operation)) {\n return \"float\";\n }\n return undefined;\n}\n\nfunction _validateNode(\n node: IKHRInteractivity_Node,\n nodeIndex: number,\n graph: IKHRInteractivity_Graph,\n declarations: IKHRInteractivityDeclarationModel[],\n diagnostics: IKHRInteractivityDiagnostic[],\n graphPath: string,\n assetNodeCount?: number\n): void {\n const path = `${graphPath}/nodes/${nodeIndex}`;\n if (!_isValidIndex(node.declaration, declarations.length)) {\n _addError(diagnostics, `${path}/declaration`, `Declaration index ${String(node.declaration)} is out of range.`);\n return;\n }\n\n const declarationModel = declarations[node.declaration];\n const mapping =\n declarationModel.support === \"unsupported-extension\" ? getNoOpMappingForDeclaration(declarationModel.source) : getMappingForDeclaration(declarationModel.source, false);\n if (declarationModel.support === \"unknown-core\" || !mapping) {\n return;\n }\n\n const reportConfigurationIssue = (property: IGLTFToFlowGraphMappingObject, issuePath: string, message: string): void => {\n if (property.invalidUsesDefault || property.defaultValue !== undefined) {\n _addWarning(diagnostics, issuePath, `${message} The default configuration will be used.`);\n } else {\n _addError(diagnostics, issuePath, message);\n }\n };\n for (const [key, configuration] of Object.entries(node.configuration ?? {})) {\n if (configuration.value && configuration.value.length === 0) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, \"Configuration value arrays must contain at least one item when present.\");\n }\n }\n for (const [key, property] of Object.entries(mapping.configuration ?? {})) {\n const configuration = node.configuration?.[key];\n const isConfigurationValid = !!configuration && _validateConfigurationValue(configuration.value, property.configurationType);\n if (!configuration && property.required) {\n _addError(diagnostics, `${path}/configuration/${key}`, `Required configuration \"${key}\" is missing.`);\n } else if (configuration && !isConfigurationValid) {\n reportConfigurationIssue(property, `${path}/configuration/${key}`, `Configuration \"${key}\" is invalid.`);\n }\n if (isConfigurationValid && configuration.value && property.minItems !== undefined && configuration.value.length < property.minItems) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, `Configuration \"${key}\" requires at least ${property.minItems} value(s).`);\n }\n if (isConfigurationValid && configuration.value && property.indexSource) {\n const length = _getIndexedArrayLength(graph, property.indexSource, assetNodeCount);\n for (let index = 0; index < configuration.value.length; index++) {\n if (!_isValidIndex(configuration.value[index], length)) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/${index}`, `Index is out of range for graph ${property.indexSource}.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.allowedSignatures) {\n const typeIndex = configuration.value[0];\n const signature = typeof typeIndex === \"number\" ? graph.types?.[typeIndex]?.signature : undefined;\n if (!signature || !property.allowedSignatures.includes(signature)) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/0`, `Type \"${String(signature)}\" is not supported by this operation.`);\n }\n }\n if (isConfigurationValid && configuration.value && property.debugLogTemplate && !ParseDebugLogTemplate(configuration.value[0] as string).valid) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/0`, `Configuration \"${key}\" is not a valid debug message template.`);\n }\n if (isConfigurationValid && configuration.value && (property.minimum !== undefined || property.maximum !== undefined)) {\n const numericValue = configuration.value[0] as number;\n if ((property.minimum !== undefined && numericValue < property.minimum) || (property.maximum !== undefined && numericValue > property.maximum)) {\n reportConfigurationIssue(\n property,\n `${path}/configuration/${key}/value/0`,\n `Configuration \"${key}\" must be between ${String(property.minimum)} and ${String(property.maximum)}.`\n );\n }\n }\n if (isConfigurationValid && configuration.value && property.generatesInputValueSockets) {\n for (const configuredIndex of configuration.value) {\n if (typeof configuredIndex !== \"number\" || !_isValidIndex(configuredIndex, graph.variables?.length ?? 0)) {\n continue;\n }\n const socket = node.values?.[String(configuredIndex)];\n if (!socket) {\n _addError(diagnostics, `${path}/values/${configuredIndex}`, `Required configured input value socket \"${configuredIndex}\" is missing.`);\n } else if (_resolveValueTypeIndex(socket, graph, declarations) !== graph.variables![configuredIndex].type) {\n _addError(diagnostics, `${path}/values/${configuredIndex}/type`, `Configured input value socket \"${configuredIndex}\" has the wrong type.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.generatesCaseInputValueSockets) {\n const defaultType = node.values?.default ? _resolveValueTypeIndex(node.values.default, graph, declarations) : undefined;\n for (const caseValue of configuration.value) {\n const socket = node.values?.[String(caseValue)];\n if (!socket) {\n _addError(diagnostics, `${path}/values/${caseValue}`, `Required case input value socket \"${caseValue}\" is missing.`);\n } else if (defaultType !== undefined && _resolveValueTypeIndex(socket, graph, declarations) !== defaultType) {\n _addError(diagnostics, `${path}/values/${caseValue}/type`, `Case input value socket \"${caseValue}\" must match the default socket type.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.pointerTemplate && typeof configuration.value[0] === \"string\") {\n for (const socketDefinition of _getPointerTemplateSockets(configuration.value[0])) {\n const socket = node.values?.[socketDefinition.name];\n const expectedType = graph.types?.findIndex((type) => type.signature === socketDefinition.signature) ?? -1;\n if (!socket) {\n _addError(diagnostics, `${path}/values/${socketDefinition.name}`, `Required pointer template input \"${socketDefinition.name}\" is missing.`);\n } else if (expectedType < 0 || _resolveValueTypeIndex(socket, graph, declarations) !== expectedType) {\n _addError(\n diagnostics,\n `${path}/values/${socketDefinition.name}/type`,\n `Pointer template input \"${socketDefinition.name}\" must have type \"${socketDefinition.signature}\".`\n );\n }\n }\n }\n }\n\n if (declarationModel.operation === \"debug/log\") {\n const severityProperty = mapping.configuration?.severity;\n const messageProperty = mapping.configuration?.message;\n const severityValid = !!severityProperty && _isEffectiveConfigurationValue(node.configuration?.severity, severityProperty, graph, assetNodeCount);\n const messageValid = !!messageProperty && _isEffectiveConfigurationValue(node.configuration?.message, messageProperty, graph, assetNodeCount);\n const message = severityValid && messageValid ? (node.configuration!.message.value![0] as string) : \"\";\n for (const socket of ParseDebugLogTemplate(message).sockets) {\n if (!node.values?.[socket]) {\n _addError(diagnostics, `${path}/values/${socket}`, `Required debug message template input \"${socket}\" is missing.`);\n }\n }\n }\n\n for (const [key, property] of Object.entries(mapping.inputs?.values ?? {})) {\n if (!key.startsWith(\"[\") && !node.values?.[key]) {\n _addError(diagnostics, `${path}/values/${key}`, `Required input value socket \"${key}\" is missing.`);\n }\n if (declarationModel.operation === \"event/send\") {\n const eventIndex = node.configuration?.event?.value?.[0];\n const event = typeof eventIndex === \"number\" ? graph.events?.[eventIndex] : undefined;\n for (const [socket, eventValue] of Object.entries(event?.values ?? {})) {\n const source = node.values?.[socket];\n if (!source) {\n _addError(diagnostics, `${path}/values/${socket}`, `Required custom event input value socket \"${socket}\" is missing.`);\n } else if (_resolveValueTypeIndex(source, graph, declarations) !== eventValue.type) {\n _addError(diagnostics, `${path}/values/${socket}/type`, `Custom event input value socket \"${socket}\" has the wrong type.`);\n }\n }\n }\n const expectedSignature = property.gltfType === \"number\" ? \"float\" : property.gltfType === \"boolean\" ? \"bool\" : property.gltfType;\n const source = node.values?.[key];\n if (source && expectedSignature && expectedSignature in gltfTypeToBabylonType) {\n const typeIndex = _resolveValueTypeIndex(source, graph, declarations);\n if (typeIndex !== undefined && graph.types?.[typeIndex]?.signature !== expectedSignature) {\n _addError(diagnostics, `${path}/values/${key}/type`, `Input value socket \"${key}\" must have type \"${expectedSignature}\".`);\n }\n }\n }\n if (mapping.validation) {\n try {\n const validationNode = _cloneJson(node);\n for (const value of Object.values(validationNode.values ?? {})) {\n if (value.type === undefined) {\n value.type = _resolveValueTypeIndex(value, graph, declarations);\n }\n }\n const result = mapping.validation(validationNode, graph);\n if (!result.valid) {\n _addError(diagnostics, path, result.error ?? `Operation \"${declarationModel.operation}\" is invalid.`);\n }\n } catch (error) {\n _addError(diagnostics, path, (error as Error).message);\n }\n }\n for (const [key, value] of Object.entries(node.values ?? {})) {\n if (declarationModel.support === \"unsupported-extension\" && !declarationModel.source.inputValueSockets?.[key]) {\n _addError(diagnostics, `${path}/values/${key}`, `Input value socket \"${key}\" is not defined by operation \"${declarationModel.operation}\".`);\n }\n if (\"node\" in value) {\n if (\"value\" in value) {\n _addError(diagnostics, `${path}/values/${key}`, \"An input value socket cannot define both inline and node sources.\");\n }\n if (!_isValidIndex(value.node, graph.nodes?.length ?? 0)) {\n _addError(diagnostics, `${path}/values/${key}/node`, `Node index ${String(value.node)} is out of range.`);\n continue;\n }\n if (value.node >= nodeIndex) {\n _addError(diagnostics, `${path}/values/${key}/node`, \"Value connections must reference an earlier node.\");\n }\n if (value.type !== undefined) {\n _validateTypeIndex(value.type, graph, diagnostics, `${path}/values/${key}/type`);\n }\n const sourceNode = graph.nodes![value.node];\n if (_isValidIndex(sourceNode.declaration, declarations.length)) {\n const sourceDeclaration = declarations[sourceNode.declaration];\n const sourceMapping =\n sourceDeclaration.support === \"unsupported-extension\"\n ? getNoOpMappingForDeclaration(sourceDeclaration.source)\n : getMappingForDeclaration(sourceDeclaration.source, false);\n const sourceSocket = value.socket ?? \"value\";\n const hasMappedSocket = _matchesOutputSocket(sourceMapping?.outputs?.values, sourceSocket, sourceDeclaration, sourceNode, graph, \"value\");\n if (sourceMapping && !hasMappedSocket) {\n _addError(diagnostics, `${path}/values/${key}/socket`, `Output value socket \"${sourceSocket}\" does not exist on node ${value.node}.`);\n }\n const declaredOutputType = sourceDeclaration.source.outputValueSockets?.[sourceSocket]?.type;\n const effectiveOutputType = declaredOutputType ?? _resolveOutputTypeIndex(value.node, sourceSocket, graph, declarations);\n if (value.type !== undefined && effectiveOutputType !== undefined && value.type !== effectiveOutputType) {\n _addError(diagnostics, `${path}/values/${key}/type`, `Type assertion does not match output socket \"${sourceSocket}\".`);\n }\n }\n } else {\n _validateValue(value, graph, diagnostics, `${path}/values/${key}`);\n }\n }\n\n for (const [key, flow] of Object.entries(node.flows ?? {})) {\n const allowedDynamicSockets = _getAllowedDynamicFlowOutputSockets(node, mapping, graph, assetNodeCount);\n if (!_matchesFlowOutputSocket(mapping, key, allowedDynamicSockets)) {\n _addError(diagnostics, `${path}/flows/${key}`, `Output flow socket \"${key}\" is not defined by operation \"${declarationModel.operation}\".`);\n }\n if (!_isValidIndex(flow.node, graph.nodes?.length ?? 0)) {\n _addError(diagnostics, `${path}/flows/${key}/node`, `Node index ${String(flow.node)} is out of range.`);\n continue;\n }\n if (flow.node <= nodeIndex) {\n _addError(diagnostics, `${path}/flows/${key}/node`, \"Flow connections must reference a later node.\");\n }\n }\n}\n\n/**\n * Creates and validates a canonical copy of one KHR_interactivity graph.\n * @param graph source graph\n * @param index graph index in the root extension\n * @param supportedExtensions enabled extensions that may provide executable operations\n * @param assetNodeCount number of nodes in the containing glTF asset\n * @returns the canonical graph model\n */\nexport function CreateKHRInteractivityGraphModel(\n graph: IKHRInteractivity_Graph | null | undefined,\n index: number = 0,\n supportedExtensions?: ReadonlySet<string>,\n assetNodeCount?: number\n): IKHRInteractivityGraphModel {\n const diagnostics: IKHRInteractivityDiagnostic[] = [];\n const path = `/extensions/KHR_interactivity/graphs/${index}`;\n if (graph === null || typeof graph !== \"object\" || Array.isArray(graph)) {\n _addError(diagnostics, path, \"Behavior graph must be an object.\");\n graph = {};\n } else {\n graph = CloneKHRInteractivityGraph(graph);\n }\n const invalidEntryDefaults = {\n types: () => ({ signature: \"custom\" }),\n variables: () => ({ type: -1 }),\n events: () => ({}),\n declarations: () => ({ op: \"\" }),\n nodes: () => ({ declaration: -1 }),\n } as const;\n for (const key of [\"types\", \"variables\", \"events\", \"declarations\", \"nodes\"] as const) {\n const collection = graph[key] as unknown;\n if (collection !== undefined && !Array.isArray(collection)) {\n _addError(diagnostics, `${path}/${key}`, `\"${key}\" must be an array when present.`);\n (graph as any)[key] = [];\n } else if (Array.isArray(collection) && collection.length === 0) {\n _addError(diagnostics, `${path}/${key}`, `\"${key}\" must contain at least one item when present.`);\n } else if (Array.isArray(collection)) {\n (graph as any)[key] = collection.map((entry, entryIndex) => {\n if (entry === null || typeof entry !== \"object\" || Array.isArray(entry)) {\n _addError(diagnostics, `${path}/${key}/${entryIndex}`, `Each \"${key}\" item must be an object.`);\n return invalidEntryDefaults[key]();\n }\n return entry;\n });\n }\n }\n for (let eventIndex = 0; eventIndex < (graph.events?.length ?? 0); eventIndex++) {\n if (graph.events![eventIndex].values && Object.keys(graph.events![eventIndex].values!).length === 0) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values`, '\"values\" must contain at least one property when present.');\n }\n }\n for (let declarationIndex = 0; declarationIndex < (graph.declarations?.length ?? 0); declarationIndex++) {\n const declaration = graph.declarations![declarationIndex];\n for (const key of [\"inputValueSockets\", \"outputValueSockets\"] as const) {\n if (declaration[key] && Object.keys(declaration[key]!).length === 0) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/${key}`, `\"${key}\" must contain at least one property when present.`);\n }\n }\n }\n for (let nodeIndex = 0; nodeIndex < (graph.nodes?.length ?? 0); nodeIndex++) {\n const node = graph.nodes![nodeIndex];\n for (const key of [\"configuration\", \"values\", \"flows\"] as const) {\n if (node[key] && Object.keys(node[key]!).length === 0) {\n _addError(diagnostics, `${path}/nodes/${nodeIndex}/${key}`, `\"${key}\" must contain at least one property when present.`);\n }\n }\n }\n const declarationKeys = new Set<string>();\n const declarations = (graph.declarations ?? []).map((declaration, declarationIndex) => {\n const inputSockets = Object.keys(declaration.inputValueSockets ?? {})\n .sort()\n .map((key) => `${JSON.stringify(key)}:${declaration.inputValueSockets![key].type}`)\n .join(\",\");\n const declarationKey = `${JSON.stringify(declaration.op)}:${JSON.stringify(declaration.extension ?? \"\")}:${inputSockets}`;\n if (declarationKeys.has(declarationKey)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}`, \"Duplicate equivalent declaration.\");\n }\n declarationKeys.add(declarationKey);\n const { support } = _getDeclarationMapping(declaration, graph, supportedExtensions);\n if (support === \"unknown-core\") {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/op`, `Unknown core operation \"${declaration.op}\".`);\n }\n if (!declaration.extension && (declaration.inputValueSockets || declaration.outputValueSockets)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}`, \"Core operation declarations cannot define dynamic value sockets.\");\n }\n for (const [socket, definition] of Object.entries(declaration.inputValueSockets ?? {})) {\n _validateTypeIndex(definition.type, graph, diagnostics, `${path}/declarations/${declarationIndex}/inputValueSockets/${socket}/type`);\n }\n for (const [socket, definition] of Object.entries(declaration.outputValueSockets ?? {})) {\n _validateTypeIndex(definition.type, graph, diagnostics, `${path}/declarations/${declarationIndex}/outputValueSockets/${socket}/type`);\n }\n return {\n index: declarationIndex,\n operation: declaration.extension ? `${declaration.op}:${declaration.extension}` : declaration.op,\n support,\n source: declaration,\n };\n });\n\n const signatures = new Set<string>();\n for (let typeIndex = 0; typeIndex < (graph.types?.length ?? 0); typeIndex++) {\n const signature = graph.types![typeIndex].signature;\n if (signature !== \"custom\" && signatures.has(signature)) {\n _addError(diagnostics, `${path}/types/${typeIndex}/signature`, `Duplicate built-in type signature \"${signature}\".`);\n }\n signatures.add(signature);\n if (signature !== \"custom\" && !gltfTypeToBabylonType[signature]) {\n _addError(diagnostics, `${path}/types/${typeIndex}/signature`, `Unknown built-in type signature \"${signature}\".`);\n }\n }\n\n for (let variableIndex = 0; variableIndex < (graph.variables?.length ?? 0); variableIndex++) {\n _validateValue(graph.variables![variableIndex], graph, diagnostics, `${path}/variables/${variableIndex}`);\n }\n for (let eventIndex = 0; eventIndex < (graph.events?.length ?? 0); eventIndex++) {\n const eventId = graph.events![eventIndex].id;\n if (eventId !== undefined && graph.events!.slice(0, eventIndex).some((event) => event.id === eventId)) {\n _addError(diagnostics, `${path}/events/${eventIndex}/id`, `Duplicate event id \"${eventId}\".`);\n }\n if (graph.events![eventIndex].values && Object.prototype.hasOwnProperty.call(graph.events![eventIndex].values, \"event\")) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values/event`, 'Custom event value socket id \"event\" is reserved.');\n }\n for (const [socket, value] of Object.entries(graph.events![eventIndex].values ?? {})) {\n _validateValue(value, graph, diagnostics, `${path}/events/${eventIndex}/values/${socket}`);\n }\n }\n for (let nodeIndex = 0; nodeIndex < (graph.nodes?.length ?? 0); nodeIndex++) {\n _validateNode(graph.nodes![nodeIndex], nodeIndex, graph, declarations, diagnostics, path, assetNodeCount);\n }\n\n return {\n index,\n path,\n name: graph.name ?? `Graph ${index + 1}`,\n source: graph,\n effectiveSource: CreateEffectiveKHRInteractivityGraph(graph, declarations, assetNodeCount),\n declarations,\n diagnostics,\n valid: !diagnostics.some((diagnostic) => diagnostic.severity === \"error\"),\n };\n}\n\n/**\n * Creates an immutable canonical KHR_interactivity document and validates all graph-local references.\n * @param extension source extension object from the glTF document\n * @param supportedExtensions enabled extensions that may provide executable operations\n * @param assetNodeCount number of nodes in the containing glTF asset\n * @returns the canonical document\n */\nexport function CreateKHRInteractivityDocument(extension: IKHRInteractivity, supportedExtensions?: ReadonlySet<string>, assetNodeCount?: number): IKHRInteractivityDocument {\n const source = _cloneJson(extension);\n const diagnostics: IKHRInteractivityDiagnostic[] = [];\n if (!Array.isArray(source.graphs)) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graphs\", '\"graphs\" must be an array.');\n source.graphs = [];\n }\n if (source.graphs.length === 0) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graphs\", \"At least one behavior graph is required.\");\n }\n const requestedDefaultGraphIndex = source.graph ?? 0;\n const defaultGraphIndex = _isValidIndex(requestedDefaultGraphIndex, source.graphs.length) ? requestedDefaultGraphIndex : -1;\n if (defaultGraphIndex === -1) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graph\", `Default graph index ${String(requestedDefaultGraphIndex)} is out of range.`);\n }\n const graphs = source.graphs.map((graph, index) => CreateKHRInteractivityGraphModel(graph, index, supportedExtensions, assetNodeCount));\n source.graphs = graphs.map((graph) => graph.source);\n\n return {\n specificationCommit: KHR_INTERACTIVITY_SPECIFICATION_COMMIT,\n source,\n defaultGraphIndex,\n graphs,\n diagnostics,\n };\n}\n"]}
|
|
@@ -3,6 +3,7 @@ import { type IGLTF } from "../../glTFLoaderInterfaces.js";
|
|
|
3
3
|
import { type IGLTFToFlowGraphMapping } from "./declarationMapper.js";
|
|
4
4
|
import { type ISerializedFlowGraph, type ISerializedFlowGraphBlock } from "@babylonjs/core/FlowGraph/typeDefinitions.js";
|
|
5
5
|
import { FlowGraphTypes } from "@babylonjs/core/FlowGraph/flowGraphRichTypes.js";
|
|
6
|
+
import { type IKHRInteractivityDeclarationModel } from "./interactivityGraphModel.js";
|
|
6
7
|
/**
|
|
7
8
|
* Description of a KHR_interactivity custom event, as parsed from the
|
|
8
9
|
* glTF `events` array. Used by the importer to register the event with the
|
|
@@ -24,13 +25,7 @@ export interface InteractivityEvent {
|
|
|
24
25
|
value?: any;
|
|
25
26
|
}[];
|
|
26
27
|
}
|
|
27
|
-
export
|
|
28
|
-
[key: string]: {
|
|
29
|
-
length: number;
|
|
30
|
-
flowGraphType: FlowGraphTypes;
|
|
31
|
-
elementType: "number" | "boolean" | "string";
|
|
32
|
-
};
|
|
33
|
-
};
|
|
28
|
+
export { gltfTypeToBabylonType } from "./interactivityGraphModel.js";
|
|
34
29
|
/**
|
|
35
30
|
* Parses a KHR_interactivity graph definition (the raw glTF JSON object) into
|
|
36
31
|
* the serialized FlowGraph form consumed by {@link ParseFlowGraphAsync}.
|
|
@@ -40,9 +35,11 @@ export declare const gltfTypeToBabylonType: {
|
|
|
40
35
|
* {@link serializeToFlowGraph}.
|
|
41
36
|
*/
|
|
42
37
|
export declare class InteractivityGraphToFlowGraphParser {
|
|
43
|
-
private _interactivityGraph;
|
|
44
38
|
private _gltf;
|
|
45
39
|
_animationTargetFps: number;
|
|
40
|
+
private _graphIndex;
|
|
41
|
+
private _supportedExtensions?;
|
|
42
|
+
private _declarationModels?;
|
|
46
43
|
/**
|
|
47
44
|
* Note - the graph should be rejected if the same type is defined twice.
|
|
48
45
|
* We currently don't validate that.
|
|
@@ -60,16 +57,22 @@ export declare class InteractivityGraphToFlowGraphParser {
|
|
|
60
57
|
* the last block) is not disturbed, then concatenated into the serialized graph.
|
|
61
58
|
*/
|
|
62
59
|
private _insertedBlocks;
|
|
63
|
-
constructor(
|
|
60
|
+
constructor(interactivityGraph: IKHRInteractivity_Graph, _gltf: IGLTF, _animationTargetFps?: number, _graphIndex?: number, _supportedExtensions?: ReadonlySet<string> | undefined, _declarationModels?: readonly IKHRInteractivityDeclarationModel[] | undefined);
|
|
61
|
+
private _interactivityGraph;
|
|
62
|
+
private get _strictValidation();
|
|
63
|
+
private _hasDefaultFlowInput;
|
|
64
|
+
private _getAllowedDynamicValueSockets;
|
|
65
|
+
private _getAllowedDynamicFlowSockets;
|
|
64
66
|
get arrays(): {
|
|
65
67
|
types: {
|
|
66
68
|
length: number;
|
|
67
69
|
flowGraphType: FlowGraphTypes;
|
|
68
|
-
elementType: "number" | "boolean" | "string";
|
|
70
|
+
elementType: "number" | "boolean" | "string" | "any";
|
|
69
71
|
}[];
|
|
70
72
|
mappings: {
|
|
71
73
|
flowGraphMapping: IGLTFToFlowGraphMapping;
|
|
72
74
|
fullOperationName: string;
|
|
75
|
+
declaration: IKHRInteractivityDeclarationModel;
|
|
73
76
|
}[];
|
|
74
77
|
staticVariables: {
|
|
75
78
|
type: FlowGraphTypes;
|
|
@@ -85,12 +88,15 @@ export declare class InteractivityGraphToFlowGraphParser {
|
|
|
85
88
|
private _parseDeclarations;
|
|
86
89
|
private _parseVariables;
|
|
87
90
|
private _parseVariable;
|
|
91
|
+
private _normalizeStaticReference;
|
|
88
92
|
private _parseEvents;
|
|
89
93
|
private _parseNodes;
|
|
90
94
|
private _getEmptyBlock;
|
|
95
|
+
private _createUnsupportedExtensionBlock;
|
|
91
96
|
private _parseNodeConfiguration;
|
|
92
97
|
private _parseNodeConnections;
|
|
93
98
|
private _createNewSocketConnection;
|
|
99
|
+
private _isUnsupportedExtensionBlock;
|
|
94
100
|
/**
|
|
95
101
|
* Wires an upstream data output into a downstream data input through a runtime multiply block that
|
|
96
102
|
* scales the value by the animation target fps. This converts a KHR animation time (seconds),
|
|
@@ -100,6 +106,8 @@ export declare class InteractivityGraphToFlowGraphParser {
|
|
|
100
106
|
* @param context the serialized flow graph context that stores literal socket values
|
|
101
107
|
* @param upstreamOutput the data output socket providing the time value (in seconds)
|
|
102
108
|
* @param downstreamInput the data input socket that expects the time in frames
|
|
109
|
+
* @param nodeIndex source node receiving the converted value
|
|
110
|
+
* @param declarationIndex source declaration used by the receiving node
|
|
103
111
|
*/
|
|
104
112
|
private _connectWithSecondsToFramesConversion;
|
|
105
113
|
private _connectFlowGraphNodes;
|