@babylonjs/loaders 9.26.2 → 9.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +1 -1
  2. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -1
  3. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +1 -1
  4. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -1
  5. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +33 -0
  6. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +166 -37
  7. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -1
  8. package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +1 -0
  9. package/glTF/2.0/Extensions/KHR_interactivity/index.js +1 -0
  10. package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -1
  11. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.d.ts +243 -0
  12. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.js +2335 -0
  13. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.js.map +1 -0
  14. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.d.ts +82 -1
  15. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js +180 -34
  16. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js.map +1 -1
  17. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +14 -2
  18. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +220 -34
  19. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -1
  20. package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +1 -0
  21. package/glTF/2.0/Extensions/KHR_interactivity/pure.js +1 -0
  22. package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -1
  23. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +4 -0
  24. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +6 -2
  25. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
  26. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +1 -1
  27. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -1
  28. package/glTF/2.0/glTFLoader.pure.d.ts +2 -1
  29. package/glTF/2.0/glTFLoader.pure.js +41 -4
  30. package/glTF/2.0/glTFLoader.pure.js.map +1 -1
  31. package/glTF/2.0/glTFLoaderInterfaces.d.ts +9 -0
  32. package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -1
  33. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"declarationMapper.js","sourceRoot":"","sources":["../../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { type IKHRInteractivity_Declaration, type IKHRInteractivity_Graph, type IKHRInteractivity_Node } from \"babylonjs-gltf2interface\";\nimport { FlowGraphBlockNames } from \"core/FlowGraph/Blocks/flowGraphBlockNames\";\nimport { Logger } from \"core/Misc/logger\";\nimport { type ISerializedFlowGraphBlock, type ISerializedFlowGraphContext } from \"core/FlowGraph/typeDefinitions\";\nimport { type InteractivityEvent, type InteractivityGraphToFlowGraphParser } from \"./interactivityGraphParser\";\nimport { type IGLTF } from \"../../glTFLoaderInterfaces\";\nimport { FlowGraphTypes, getAnimationTypeByFlowGraphType } from \"core/FlowGraph/flowGraphRichTypes\";\n\n// Per-block runaway-loop guard for KHR_interactivity for-loops. Interactivity assets may run large\n// finite loops (e.g. the math/random Monte Carlo conformance asset iterates 10k times), so this is\n// set above the FlowGraphForLoopBlock process-wide default while staying low enough that the guard is\n// still meaningful — every iteration runs a full synchronous sub-graph, so a much larger value (and\n// especially nested loops) could lock the main thread before the guard trips. Applied per for-loop\n// block via the flow/for extraProcessor rather than by mutating the shared static.\nconst InteractivityForLoopMaxIterations = 20000;\n\n/**\n * Describes how one KHR_interactivity configuration or socket property maps to FlowGraph.\n *\n * The same contract is used for fixed sockets, wildcard sockets, configuration validation,\n * defaulting, and multi-block routing during strict graph lowering.\n */\nexport interface IGLTFToFlowGraphMappingObject {\n /**\n * The name of the property in the FlowGraph block.\n */\n name: string;\n\n /**\n * Whether this socket mapping exists only for pre-ratification compatibility input.\n */\n compatibilityOnly?: boolean;\n\n /**\n * The type of the property in the glTF specs.\n * If not provided will be inferred.\n */\n gltfType?: string;\n\n /**\n * The type of the property in the FlowGraph block.\n * If not defined it equals the glTF type.\n */\n flowGraphType?: string;\n\n /**\n * A function that transforms the data from the glTF to the FlowGraph block.\n */\n dataTransformer?: (data: any, parser: InteractivityGraphToFlowGraphParser) => any;\n\n /**\n * If the property can contain multiple values.\n */\n isArray?: boolean;\n\n /**\n * If the property is in the options passed to the constructor of the block.\n */\n inOptions?: boolean;\n\n /**\n * If the property is an index to a value.\n * if defined this will be the name of the array to find the object in.\n */\n isVariable?: boolean;\n\n /**\n * the name of the class type this value will be mapped to.\n * This is used if we generate more than one block for a single glTF node.\n * Defaults to the first block in the mapping.\n */\n toBlock?: FlowGraphBlockNames | string;\n\n /**\n * Used in configuration values. If defined, this will be the default value, if no value is provided.\n */\n defaultValue?: any;\n\n /**\n * When the input value comes from a connection (an upstream node output) rather than a literal,\n * the parse-time {@link dataTransformer} cannot run. If this is `true`, the importer inserts a\n * runtime multiply block that scales the connected value by the animation target fps, converting\n * a KHR animation time (seconds) into Babylon animation frames. Literal values keep using the\n * {@link dataTransformer}. Used by `animation/start` / `animation/stopAt` time inputs, which may\n * be fed by a `pointer/get` (e.g. the read-only `maxTime` animation pointer).\n */\n convertConnectedTimeToFrames?: boolean;\n\n /**\n * KHR configuration value type used by canonical validation.\n */\n configurationType?: \"bool\" | \"int\" | \"int[]\" | \"string\";\n\n /**\n * Whether this configuration entry exists only for canonical validation.\n */\n validationOnly?: boolean;\n\n /**\n * Whether an operation without a complete default configuration requires this property.\n */\n required?: boolean;\n\n /**\n * Graph array referenced by an integer configuration value.\n */\n indexSource?: \"types\" | \"variables\" | \"events\" | \"nodes\" | \"assetNodes\";\n\n /**\n * Minimum number of values required for an array configuration.\n */\n minItems?: number;\n\n /**\n * Whether the configured indices generate required input value sockets.\n */\n generatesInputValueSockets?: boolean;\n\n /**\n * Whether integer case values generate required input value sockets.\n */\n generatesCaseInputValueSockets?: boolean;\n\n /**\n * Whether this string configuration generates JSON Pointer Template sockets.\n */\n pointerTemplate?: boolean;\n\n /**\n * Whether an invalid value falls back to the operation's default configuration.\n */\n invalidUsesDefault?: boolean;\n\n /**\n * Allowed KHR type signatures for a type-index configuration.\n */\n allowedSignatures?: readonly (\"bool\" | \"float\" | \"float2\" | \"float3\" | \"float4\" | \"float2x2\" | \"float3x3\" | \"float4x4\" | \"int\" | \"ref\" | \"custom\")[];\n\n /**\n * Input socket whose effective type determines this output socket type.\n */\n typeSourceInput?: string;\n\n /** Inclusive minimum for an integer configuration value. */\n minimum?: number;\n\n /** Inclusive maximum for an integer configuration value. */\n maximum?: number;\n\n /**\n * Whether this configuration value generates numbered input flow sockets.\n */\n generatesInputFlowSockets?: boolean;\n\n /**\n * Whether this configuration array generates output flow sockets.\n */\n generatesOutputFlowSockets?: boolean;\n\n /**\n * Properties in the same group fall back to their defaults together when any member is\n * missing or invalid.\n */\n configurationGroup?: string;\n\n /**\n * Whether duplicate array values are removed from the effective configuration.\n */\n uniqueValues?: boolean;\n\n /**\n * Whether a string configuration value is a `debug/log` message template.\n */\n debugLogTemplate?: boolean;\n}\n\n/**\n * Description of how a KHR_interactivity declaration (op such as\n * `pointer/get`, `event/onSelect`, `math/add`) maps to one or more\n * FlowGraph blocks. Used by {@link InteractivityGraphToFlowGraphParser}\n * to translate the source glTF graph into the serialized FlowGraph form.\n */\nexport interface IGLTFToFlowGraphMapping {\n /**\n * The type of the FlowGraph block(s).\n * Typically will be a single element in an array.\n * When adding blocks defined in this module use the KHR_interactivity prefix.\n */\n blocks: (FlowGraphBlockNames | string)[];\n\n /**\n * Exact value socket contract for an operation supplied by another extension.\n */\n declarationSchema?: {\n inputValueSockets: Record<string, \"bool\" | \"float\" | \"float2\" | \"float3\" | \"float4\" | \"float2x2\" | \"float3x3\" | \"float4x4\" | \"int\" | \"ref\" | \"custom\">;\n outputValueSockets: Record<string, \"bool\" | \"float\" | \"float2\" | \"float3\" | \"float4\" | \"float2x2\" | \"float3x3\" | \"float4x4\" | \"int\" | \"ref\" | \"custom\">;\n };\n /**\n * The inputs of the glTF node mapped to the FlowGraph block.\n */\n inputs?: {\n /**\n * The value inputs of the glTF node mapped to the FlowGraph block.\n */\n values?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n /**\n * The flow inputs of the glTF node mapped to the FlowGraph block.\n */\n flows?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n };\n /**\n * The outputs of the glTF node mapped to the FlowGraph block.\n */\n outputs?: {\n /**\n * The value outputs of the glTF node mapped to the FlowGraph block.\n */\n values?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n /**\n * The flow outputs of the glTF node mapped to the FlowGraph block.\n */\n flows?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n };\n /**\n * The configuration of the glTF node mapped to the FlowGraph block.\n * This information is usually passed to the constructor of the block.\n */\n configuration?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n\n /**\n * If we generate more than one block for a single glTF node, this mapping will be used to map\n * between the flowGraph classes.\n */\n typeToTypeMapping?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n\n /**\n * The connections between two or more blocks.\n * This is used to connect the blocks in the graph\n */\n interBlockConnectors?: {\n /**\n * The name of the input connection in the first block.\n */\n input: string;\n /**\n * The name of the output connection in the second block.\n */\n output: string;\n\n /**\n * The index of the block in the array of blocks that corresponds to the input.\n */\n inputBlockIndex: number;\n /**\n * The index of the block in the array of blocks that corresponds to the output.\n */\n outputBlockIndex: number;\n /**\n * If the connection is a variable connection or a flow connection.\n */\n isVariable?: boolean;\n }[];\n\n /**\n * This optional function will allow to validate the node, according to the glTF specs.\n * For example, if a node has a configuration object, it must be present and correct.\n * This is a basic node-based validation.\n * This function is expected to return false and log the error if the node is not valid.\n * Note that this function can also modify the node, if needed.\n *\n * @param gltfBlock the glTF node to validate\n * @param interactivityGraph the interactivity graph\n * @param glTFObject the glTF object\n * @returns true if validated, false if not.\n */\n validation?: (gltfBlock: IKHRInteractivity_Node, interactivityGraph: IKHRInteractivity_Graph, glTFObject?: IGLTF) => { valid: boolean; error?: string };\n\n /**\n * This is used if we need extra information for the constructor/options that is not provided directly by the glTF node.\n * This function can return more than one node, if extra nodes are needed for this block to function correctly.\n * Returning more than one block will usually happen when a json pointer was provided.\n *\n * @param gltfBlock the glTF node\n * @param declaration the declaration object\n * @param mapping the mapping object\n * @param parser the interactivity graph parser\n * @param serializedObjects the serialized objects\n * @param context the serialized flow graph context\n * @param globalGLTF the global gltf object\n * @returns an array of serialized nodes that will be added to the graph.\n */\n extraProcessor?: (\n gltfBlock: IKHRInteractivity_Node,\n declaration: IKHRInteractivity_Declaration,\n mapping: IGLTFToFlowGraphMapping,\n parser: InteractivityGraphToFlowGraphParser,\n serializedObjects: ISerializedFlowGraphBlock[],\n context: ISerializedFlowGraphContext,\n globalGLTF?: IGLTF\n ) => ISerializedFlowGraphBlock[];\n}\n\nexport function getMappingForFullOperationName(fullOperationName: string) {\n const [op, extension] = fullOperationName.split(\":\");\n return getMappingForDeclaration({ op, extension });\n}\n\nexport function getMappingForDeclaration(declaration: IKHRInteractivity_Declaration, returnNoOpIfNotAvailable: boolean = true): IGLTFToFlowGraphMapping | undefined {\n const mapping = declaration.extension ? gltfExtensionsToFlowGraphMapping[declaration.extension]?.[declaration.op] : gltfToFlowGraphMapping[declaration.op];\n if (!mapping) {\n if (returnNoOpIfNotAvailable) {\n Logger.Warn(`No mapping found for operation ${declaration.op} and extension ${declaration.extension || \"KHR_interactivity\"}`);\n return getNoOpMappingForDeclaration(declaration);\n }\n }\n return mapping;\n}\n\n/**\n * Creates the typed no-op mapping required for an unsupported extension declaration.\n * @param declaration unsupported extension declaration\n * @returns a mapping that preserves the declared value sockets\n */\nexport function getNoOpMappingForDeclaration(declaration: IKHRInteractivity_Declaration): IGLTFToFlowGraphMapping {\n const inputs: IGLTFToFlowGraphMapping[\"inputs\"] = {};\n const outputs: IGLTFToFlowGraphMapping[\"outputs\"] = {\n flows: {},\n };\n if (declaration.inputValueSockets) {\n inputs.values = {};\n for (const key in declaration.inputValueSockets) {\n inputs.values[key] = {\n name: key,\n };\n }\n }\n if (declaration.outputValueSockets) {\n outputs.values = {};\n Object.keys(declaration.outputValueSockets).forEach((key) => {\n outputs.values![key] = {\n name: key,\n };\n });\n }\n return {\n blocks: [],\n inputs,\n outputs,\n };\n}\n\n/**\n * This function will add new mapping to glTF interactivity.\n * Other extensions can define new types of blocks, this is the way to let interactivity know how to parse them.\n * @param key the type of node, i.e. \"variable/get\"\n * @param extension the extension of the interactivity operation, i.e. \"KHR_selectability\"\n * @param mapping The mapping object. See documentation or examples below.\n */\nexport function addNewInteractivityFlowGraphMapping(key: string, extension: string, mapping: IGLTFToFlowGraphMapping) {\n gltfExtensionsToFlowGraphMapping[extension] ||= {};\n gltfExtensionsToFlowGraphMapping[extension][key] = mapping;\n}\n\nconst gltfExtensionsToFlowGraphMapping: { [extension: string]: { [key: string]: IGLTFToFlowGraphMapping } } = {\n /**\n * This is the BABYLON extension for glTF interactivity.\n * It defines babylon-specific blocks and operations.\n */\n BABYLON: {\n /**\n * flow/log is a flow node that logs input to the console.\n * It has \"in\" and \"out\" flows, and takes a message as input.\n * The message can be any type of value.\n * The message is logged to the console when the \"in\" flow is triggered.\n * The \"out\" flow is triggered when the message is logged.\n */\n \"flow/log\": {\n blocks: [FlowGraphBlockNames.ConsoleLog],\n inputs: {\n values: {\n message: { name: \"message\" },\n \"[segment]\": { name: \"$1\", compatibilityOnly: true },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\", compatibilityOnly: true },\n },\n },\n },\n },\n};\n\n// this mapper is just a way to convert the glTF nodes to FlowGraph nodes in terms of input/output connection names and values.\nconst gltfToFlowGraphMapping: { [key: string]: IGLTFToFlowGraphMapping } = {\n \"event/onStart\": {\n blocks: [FlowGraphBlockNames.SceneReadyEvent],\n outputs: {\n values: {\n // KHR_interactivity `ref event` output (the event reference).\n event: { name: \"event\" },\n },\n flows: {\n out: { name: \"done\" },\n },\n },\n },\n \"event/onTick\": {\n blocks: [FlowGraphBlockNames.SceneTickEvent],\n inputs: {},\n outputs: {\n values: {\n timeSinceStart: { name: \"timeSinceStart\", gltfType: \"number\" },\n timeSinceLastTick: { name: \"deltaTime\", gltfType: \"number\" /*, dataTransformer: (time: number) => time / 1000*/ },\n // KHR_interactivity `ref event` output (the event reference).\n event: { name: \"event\" },\n },\n flows: {\n out: { name: \"done\" },\n },\n },\n },\n \"event/send\": {\n blocks: [FlowGraphBlockNames.SendCustomEvent],\n configuration: {\n event: {\n name: \"eventId\",\n configurationType: \"int\",\n required: true,\n indexSource: \"events\",\n validationOnly: true,\n },\n },\n inputs: {\n values: {\n \"[segment]\": { name: \"$1\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n extraProcessor(gltfBlock, declaration, _mapping, parser, serializedObjects) {\n // set eventId and eventData. The configuration object of the glTF should have a single object.\n // validate that we are running it on the right block.\n if (declaration.op !== \"event/send\" || !gltfBlock.configuration?.event) {\n throw new Error(\"Send event should have a single configuration object, the event itself\");\n }\n const eventConfiguration = gltfBlock.configuration[\"event\"];\n const eventId = eventConfiguration.value?.[0];\n if (typeof eventId !== \"number\") {\n throw new Error(\"Event id should be a number\");\n }\n const event: InteractivityEvent = parser.arrays.events[eventId];\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.eventId = event.eventId;\n serializedObject.config.eventData = event.eventData;\n return serializedObjects;\n },\n },\n \"event/receive\": {\n blocks: [FlowGraphBlockNames.ReceiveCustomEvent],\n configuration: {\n event: {\n name: \"eventId\",\n configurationType: \"int\",\n required: true,\n indexSource: \"events\",\n validationOnly: true,\n },\n },\n outputs: {\n values: {\n // KHR_interactivity `ref event` output (the event reference).\n event: { name: \"event\" },\n \"[segment]\": { name: \"$1\" },\n },\n flows: {\n out: { name: \"done\" },\n },\n },\n validation(gltfBlock, interactivityGraph) {\n if (!gltfBlock.configuration) {\n Logger.Error(\"Receive event should have a configuration object\");\n return { valid: false, error: \"Receive event should have a configuration object\" };\n }\n const eventConfiguration = gltfBlock.configuration[\"event\"];\n if (!eventConfiguration) {\n Logger.Error(\"Receive event should have a single configuration object, the event itself\");\n return { valid: false, error: \"Receive event should have a single configuration object, the event itself\" };\n }\n const eventId = eventConfiguration.value?.[0];\n if (typeof eventId !== \"number\") {\n Logger.Error(\"Event id should be a number\");\n return { valid: false, error: \"Event id should be a number\" };\n }\n const event = interactivityGraph.events?.[eventId];\n if (!event) {\n Logger.Error(`Event with id ${eventId} not found`);\n return { valid: false, error: `Event with id ${eventId} not found` };\n }\n return { valid: true };\n },\n extraProcessor(gltfBlock, declaration, _mapping, parser, serializedObjects) {\n // set eventId and eventData. The configuration object of the glTF should have a single object.\n // validate that we are running it on the right block.\n if (declaration.op !== \"event/receive\" || !gltfBlock.configuration?.event) {\n throw new Error(\"Receive event should have a single configuration object, the event itself\");\n }\n const eventConfiguration = gltfBlock.configuration[\"event\"];\n const eventId = eventConfiguration.value?.[0];\n if (typeof eventId !== \"number\") {\n throw new Error(\"Event id should be a number\");\n }\n const event: InteractivityEvent = parser.arrays.events[eventId];\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.eventId = event.eventId;\n serializedObject.config.eventData = event.eventData;\n return serializedObjects;\n },\n },\n \"event/stopPropagation\": {\n blocks: [FlowGraphBlockNames.StopEventPropagation],\n inputs: {\n values: {\n event: { name: \"event\" },\n stopImmediate: { name: \"stopImmediate\" },\n },\n flows: {\n in: { name: \"in\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n },\n \"math/E\": getSimpleInputMapping(FlowGraphBlockNames.E, []),\n \"math/Pi\": getSimpleInputMapping(FlowGraphBlockNames.PI, []),\n \"math/Tau\": getSimpleInputMapping(FlowGraphBlockNames.Tau, []),\n \"math/Inf\": getSimpleInputMapping(FlowGraphBlockNames.Inf, []),\n \"math/NaN\": getSimpleInputMapping(FlowGraphBlockNames.NaN, []),\n \"math/abs\": getSimpleInputMapping(FlowGraphBlockNames.Abs),\n \"math/sign\": getSimpleInputMapping(FlowGraphBlockNames.Sign),\n \"math/trunc\": getSimpleInputMapping(FlowGraphBlockNames.Trunc),\n \"math/floor\": getSimpleInputMapping(FlowGraphBlockNames.Floor),\n \"math/ceil\": getSimpleInputMapping(FlowGraphBlockNames.Ceil),\n \"math/round\": {\n blocks: [FlowGraphBlockNames.Round],\n configuration: {},\n inputs: {\n values: {\n a: { name: \"a\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(gltfBlock, declaration, _mapping, parser, serializedObjects) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.roundHalfAwayFromZero = true;\n return serializedObjects;\n },\n },\n \"math/fract\": getSimpleInputMapping(FlowGraphBlockNames.Fraction),\n \"math/neg\": getSimpleInputMapping(FlowGraphBlockNames.Negation),\n \"math/add\": getSimpleInputMapping(FlowGraphBlockNames.Add, [\"a\", \"b\"], true),\n \"math/sub\": getSimpleInputMapping(FlowGraphBlockNames.Subtract, [\"a\", \"b\"], true),\n \"math/mul\": {\n blocks: [FlowGraphBlockNames.Multiply],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.useMatrixPerComponent = true;\n serializedObjects[0].config.preventIntegerFloatArithmetic = true;\n // try to infer the type or fallback to Integer\n // check the gltf block for the inputs, see if they have a type\n let type = -1;\n Object.keys(_gltfBlock.values || {}).find((value) => {\n if (_gltfBlock.values?.[value].type !== undefined) {\n type = _gltfBlock.values[value].type;\n return true;\n }\n return false;\n });\n if (type !== -1) {\n serializedObjects[0].config.type = _parser.arrays.types[type].flowGraphType;\n }\n return serializedObjects;\n },\n validation(gltfBlock) {\n if (gltfBlock.values) {\n // make sure types are the same\n return ValidateTypes(gltfBlock);\n }\n return { valid: true };\n },\n },\n \"math/div\": getSimpleInputMapping(FlowGraphBlockNames.Divide, [\"a\", \"b\"], true),\n \"math/rem\": getSimpleInputMapping(FlowGraphBlockNames.Modulo, [\"a\", \"b\"]),\n \"math/min\": getSimpleInputMapping(FlowGraphBlockNames.Min, [\"a\", \"b\"]),\n \"math/max\": getSimpleInputMapping(FlowGraphBlockNames.Max, [\"a\", \"b\"]),\n \"math/clamp\": getSimpleInputMapping(FlowGraphBlockNames.Clamp, [\"a\", \"b\", \"c\"]),\n \"math/saturate\": getSimpleInputMapping(FlowGraphBlockNames.Saturate),\n \"math/mix\": getSimpleInputMapping(FlowGraphBlockNames.MathInterpolation, [\"a\", \"b\", \"c\"]),\n // Smooth-step (Hermite interpolation): edges a/b and value c.\n \"math/smoothStep\": getSimpleInputMapping(FlowGraphBlockNames.SmoothStep, [\"a\", \"b\", \"c\"]),\n // Linear sRGB <-> OkLCh (Oklab polar form). Scalar r/g/b inputs map to l/c/h\n // outputs (hue in radians) and vice-versa.\n \"math/rgbToOkLCh\": {\n blocks: [FlowGraphBlockNames.RGBToOkLCh],\n inputs: {\n values: {\n r: { name: \"r\", gltfType: \"number\" },\n g: { name: \"g\", gltfType: \"number\" },\n b: { name: \"b\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n l: { name: \"l\" },\n c: { name: \"c\" },\n h: { name: \"h\" },\n },\n },\n },\n \"math/rgbFromOkLCh\": {\n blocks: [FlowGraphBlockNames.RGBFromOkLCh],\n inputs: {\n values: {\n l: { name: \"l\", gltfType: \"number\" },\n c: { name: \"c\", gltfType: \"number\" },\n h: { name: \"h\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n r: { name: \"r\" },\n g: { name: \"g\" },\n b: { name: \"b\" },\n },\n },\n },\n // Quaternion spherical-linear interpolation. Inputs are two unit\n // quaternions and an unclamped float coefficient.\n \"math/quatSlerp\": getSimpleInputMapping(FlowGraphBlockNames.MathSlerp, [\"a\", \"b\", \"c\"]),\n // Vector spherical-linear interpolation (float2/float3). Inputs are two\n // vectors and an unclamped float coefficient.\n \"math/slerp\": getSimpleInputMapping(FlowGraphBlockNames.VectorSlerp, [\"a\", \"b\", \"c\"]),\n \"math/eq\": getSimpleInputMapping(FlowGraphBlockNames.Equality, [\"a\", \"b\"]),\n // Reference equality. The spec defines `ref/eq` as: true if both refs are\n // null, true if both refer to the same object (regardless of whether it\n // exists), false otherwise. FlowGraphEqualityBlock falls through to a\n // strict `===` comparison for non-vector/matrix/numeric types, which\n // already produces the spec-defined behaviour for Babylon object refs.\n \"ref/eq\": getSimpleInputMapping(FlowGraphBlockNames.Equality, [\"a\", \"b\"]),\n \"math/lt\": getSimpleInputMapping(FlowGraphBlockNames.LessThan, [\"a\", \"b\"]),\n \"math/le\": getSimpleInputMapping(FlowGraphBlockNames.LessThanOrEqual, [\"a\", \"b\"]),\n \"math/gt\": getSimpleInputMapping(FlowGraphBlockNames.GreaterThan, [\"a\", \"b\"]),\n \"math/ge\": getSimpleInputMapping(FlowGraphBlockNames.GreaterThanOrEqual, [\"a\", \"b\"]),\n \"math/isNaN\": getSimpleInputMapping(FlowGraphBlockNames.IsNaN),\n \"math/isInf\": getSimpleInputMapping(FlowGraphBlockNames.IsInfinity),\n \"math/select\": {\n blocks: [FlowGraphBlockNames.Conditional],\n inputs: {\n values: {\n condition: { name: \"condition\" },\n // Should we validate those have the same type here, or assume it is already validated?\n a: { name: \"onTrue\" },\n b: { name: \"onFalse\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"output\", typeSourceInput: \"a\" },\n },\n },\n },\n \"math/random\": {\n blocks: [FlowGraphBlockNames.Random],\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/sin\": getSimpleInputMapping(FlowGraphBlockNames.Sin),\n \"math/cos\": getSimpleInputMapping(FlowGraphBlockNames.Cos),\n \"math/tan\": getSimpleInputMapping(FlowGraphBlockNames.Tan),\n \"math/asin\": getSimpleInputMapping(FlowGraphBlockNames.Asin),\n \"math/acos\": getSimpleInputMapping(FlowGraphBlockNames.Acos),\n \"math/atan\": getSimpleInputMapping(FlowGraphBlockNames.Atan),\n \"math/atan2\": getSimpleInputMapping(FlowGraphBlockNames.Atan2, [\"a\", \"b\"]),\n \"math/sinh\": getSimpleInputMapping(FlowGraphBlockNames.Sinh),\n \"math/cosh\": getSimpleInputMapping(FlowGraphBlockNames.Cosh),\n \"math/tanh\": getSimpleInputMapping(FlowGraphBlockNames.Tanh),\n \"math/asinh\": getSimpleInputMapping(FlowGraphBlockNames.Asinh),\n \"math/acosh\": getSimpleInputMapping(FlowGraphBlockNames.Acosh),\n \"math/atanh\": getSimpleInputMapping(FlowGraphBlockNames.Atanh),\n \"math/exp\": getSimpleInputMapping(FlowGraphBlockNames.Exponential),\n \"math/log\": getSimpleInputMapping(FlowGraphBlockNames.Log),\n \"math/log2\": getSimpleInputMapping(FlowGraphBlockNames.Log2),\n \"math/log10\": getSimpleInputMapping(FlowGraphBlockNames.Log10),\n \"math/sqrt\": getSimpleInputMapping(FlowGraphBlockNames.SquareRoot),\n \"math/cbrt\": getSimpleInputMapping(FlowGraphBlockNames.CubeRoot),\n \"math/pow\": getSimpleInputMapping(FlowGraphBlockNames.Power, [\"a\", \"b\"]),\n \"math/length\": getSimpleInputMapping(FlowGraphBlockNames.Length),\n \"math/normalize\": {\n ...getSimpleInputMapping(FlowGraphBlockNames.Normalize),\n outputs: {\n values: {\n value: { name: \"value\" },\n isValid: { name: \"isValid\", gltfType: \"bool\" },\n },\n },\n },\n \"math/dot\": getSimpleInputMapping(FlowGraphBlockNames.Dot, [\"a\", \"b\"]),\n \"math/cross\": getSimpleInputMapping(FlowGraphBlockNames.Cross, [\"a\", \"b\"]),\n \"math/rotate2D\": {\n blocks: [FlowGraphBlockNames.Rotate2D],\n inputs: {\n values: {\n a: { name: \"a\" },\n angle: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/rotate3D\": {\n blocks: [FlowGraphBlockNames.Rotate3D],\n inputs: {\n values: {\n a: { name: \"a\" },\n rotation: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/transform\": {\n // glTF transform is vectorN with matrixN\n blocks: [FlowGraphBlockNames.TransformVector],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/combine2\": {\n blocks: [FlowGraphBlockNames.CombineVector2],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/combine3\": {\n blocks: [FlowGraphBlockNames.CombineVector3],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/combine4\": {\n blocks: [FlowGraphBlockNames.CombineVector4],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n // one input, N outputs! outputs named using numbers.\n \"math/extract2\": {\n blocks: [FlowGraphBlockNames.ExtractVector2],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n },\n },\n },\n \"math/extract3\": {\n blocks: [FlowGraphBlockNames.ExtractVector3],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n },\n },\n },\n \"math/extract4\": {\n blocks: [FlowGraphBlockNames.ExtractVector4],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n },\n },\n },\n \"math/transpose\": getSimpleInputMapping(FlowGraphBlockNames.Transpose),\n \"math/determinant\": getSimpleInputMapping(FlowGraphBlockNames.Determinant),\n \"math/inverse\": {\n ...getSimpleInputMapping(FlowGraphBlockNames.InvertMatrix),\n outputs: {\n values: {\n value: { name: \"value\" },\n isValid: { name: \"isValid\", gltfType: \"bool\" },\n },\n },\n },\n \"math/matMul\": getSimpleInputMapping(FlowGraphBlockNames.MatrixMultiplication, [\"a\", \"b\"]),\n \"math/matCompose\": {\n blocks: [FlowGraphBlockNames.MatrixCompose],\n inputs: {\n values: {\n translation: { name: \"position\", gltfType: \"float3\" },\n rotation: { name: \"rotationQuaternion\", gltfType: \"float4\" },\n scale: { name: \"scaling\", gltfType: \"float3\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4x4\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n const d = serializedObjects[0].dataInputs.find((input) => input.name === \"rotationQuaternion\");\n if (!d) {\n throw new Error(\"Rotation quaternion input not found\");\n }\n // if value is defined, set the type to quaternion\n if (context._connectionValues[d.uniqueId]) {\n context._connectionValues[d.uniqueId].type = FlowGraphTypes.Quaternion;\n }\n return serializedObjects;\n },\n },\n \"math/matDecompose\": {\n blocks: [FlowGraphBlockNames.MatrixDecompose],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n translation: { name: \"position\" },\n rotation: { name: \"rotationQuaternion\" },\n scale: { name: \"scaling\" },\n scaling: { name: \"scaling\", compatibilityOnly: true },\n isValid: { name: \"isValid\", compatibilityOnly: true },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n // KHR_interactivity step 4 of the matDecompose algorithm requires a non-decomposable matrix to still\n // report the extracted translation and the raw column lengths, instead of the type defaults the\n // FlowGraph block emits by default. The block has no `isValid` output in glTF, so the caller can only\n // observe those values.\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.keepDegenerateComponents = true;\n return serializedObjects;\n },\n },\n \"math/quatConjugate\": getSimpleInputMapping(FlowGraphBlockNames.Conjugate, [\"a\"]),\n \"math/quatMul\": {\n blocks: [FlowGraphBlockNames.Multiply],\n inputs: {\n values: {\n a: { name: \"a\", gltfType: \"vector4\" },\n b: { name: \"b\", gltfType: \"vector4\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.type = FlowGraphTypes.Quaternion;\n return serializedObjects;\n },\n },\n \"math/quatAngleBetween\": getSimpleInputMapping(FlowGraphBlockNames.AngleBetween, [\"a\", \"b\"]),\n \"math/quatFromAxisAngle\": {\n blocks: [FlowGraphBlockNames.QuaternionFromAxisAngle],\n inputs: {\n values: {\n axis: { name: \"a\", gltfType: \"float3\" },\n angle: { name: \"b\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/quatToAxisAngle\": {\n blocks: [FlowGraphBlockNames.AxisAngleFromQuaternion],\n inputs: {\n values: {\n a: { name: \"a\", gltfType: \"float4\" },\n },\n },\n outputs: {\n values: {\n axis: { name: \"axis\", gltfType: \"float3\" },\n angle: { name: \"angle\", gltfType: \"float\" },\n },\n },\n },\n \"math/quatFromDirections\": getSimpleInputMapping(FlowGraphBlockNames.QuaternionFromDirections, [\"a\", \"b\"]),\n \"math/quatFromUpForward\": {\n blocks: [FlowGraphBlockNames.QuaternionFromUpForward],\n inputs: {\n values: {\n up: { name: \"a\", gltfType: \"float3\" },\n forward: { name: \"b\", gltfType: \"float3\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n // Tait–Bryan intrinsic Euler angles (x/y/z, in radians) to a rotation quaternion. The rotation\n // order is selected by the `order` configuration string (default `yxz`).\n \"math/quatFromAngles\": {\n blocks: [FlowGraphBlockNames.QuaternionFromAngles],\n configuration: {\n order: { name: \"order\", defaultValue: [\"yxz\"] },\n },\n inputs: {\n values: {\n x: { name: \"a\", gltfType: \"number\" },\n y: { name: \"b\", gltfType: \"number\" },\n z: { name: \"c\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/combine2x2\": {\n blocks: [FlowGraphBlockNames.CombineMatrix2D],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/extract2x2\": {\n blocks: [FlowGraphBlockNames.ExtractMatrix2D],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"float2x2\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n },\n },\n },\n \"math/combine3x3\": {\n blocks: [FlowGraphBlockNames.CombineMatrix3D],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n e: { name: \"input_4\", gltfType: \"number\" },\n f: { name: \"input_5\", gltfType: \"number\" },\n g: { name: \"input_6\", gltfType: \"number\" },\n h: { name: \"input_7\", gltfType: \"number\" },\n i: { name: \"input_8\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/extract3x3\": {\n blocks: [FlowGraphBlockNames.ExtractMatrix3D],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"float3x3\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n \"4\": { name: \"output_4\" },\n \"5\": { name: \"output_5\" },\n \"6\": { name: \"output_6\" },\n \"7\": { name: \"output_7\" },\n \"8\": { name: \"output_8\" },\n },\n },\n },\n \"math/combine4x4\": {\n blocks: [FlowGraphBlockNames.CombineMatrix],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n e: { name: \"input_4\", gltfType: \"number\" },\n f: { name: \"input_5\", gltfType: \"number\" },\n g: { name: \"input_6\", gltfType: \"number\" },\n h: { name: \"input_7\", gltfType: \"number\" },\n i: { name: \"input_8\", gltfType: \"number\" },\n j: { name: \"input_9\", gltfType: \"number\" },\n k: { name: \"input_10\", gltfType: \"number\" },\n l: { name: \"input_11\", gltfType: \"number\" },\n m: { name: \"input_12\", gltfType: \"number\" },\n n: { name: \"input_13\", gltfType: \"number\" },\n o: { name: \"input_14\", gltfType: \"number\" },\n p: { name: \"input_15\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"math/extract4x4\": {\n blocks: [FlowGraphBlockNames.ExtractMatrix],\n configuration: {},\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n \"4\": { name: \"output_4\" },\n \"5\": { name: \"output_5\" },\n \"6\": { name: \"output_6\" },\n \"7\": { name: \"output_7\" },\n \"8\": { name: \"output_8\" },\n \"9\": { name: \"output_9\" },\n \"10\": { name: \"output_10\" },\n \"11\": { name: \"output_11\" },\n \"12\": { name: \"output_12\" },\n \"13\": { name: \"output_13\" },\n \"14\": { name: \"output_14\" },\n \"15\": { name: \"output_15\" },\n },\n },\n },\n \"math/not\": {\n blocks: [FlowGraphBlockNames.BitwiseNot],\n inputs: {\n values: {\n a: { name: \"a\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketIn = serializedObjects[0].dataInputs[0];\n serializedObjects[0].config.valueType = context._connectionValues[socketIn.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/and\": {\n blocks: [FlowGraphBlockNames.BitwiseAnd],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketInA = serializedObjects[0].dataInputs[0];\n const socketInB = serializedObjects[0].dataInputs[1];\n serializedObjects[0].config.valueType =\n context._connectionValues[socketInA.uniqueId]?.type ?? context._connectionValues[socketInB.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/or\": {\n blocks: [FlowGraphBlockNames.BitwiseOr],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketInA = serializedObjects[0].dataInputs[0];\n const socketInB = serializedObjects[0].dataInputs[1];\n serializedObjects[0].config.valueType =\n context._connectionValues[socketInA.uniqueId]?.type ?? context._connectionValues[socketInB.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/xor\": {\n blocks: [FlowGraphBlockNames.BitwiseXor],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketInA = serializedObjects[0].dataInputs[0];\n const socketInB = serializedObjects[0].dataInputs[1];\n serializedObjects[0].config.valueType =\n context._connectionValues[socketInA.uniqueId]?.type ?? context._connectionValues[socketInB.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/asr\": getSimpleInputMapping(FlowGraphBlockNames.BitwiseRightShift, [\"a\", \"b\"]),\n \"math/lsl\": getSimpleInputMapping(FlowGraphBlockNames.BitwiseLeftShift, [\"a\", \"b\"]),\n \"math/clz\": getSimpleInputMapping(FlowGraphBlockNames.LeadingZeros),\n \"math/ctz\": getSimpleInputMapping(FlowGraphBlockNames.TrailingZeros),\n \"math/popcnt\": getSimpleInputMapping(FlowGraphBlockNames.OneBitsCounter),\n \"math/rad\": getSimpleInputMapping(FlowGraphBlockNames.DegToRad),\n \"math/deg\": getSimpleInputMapping(FlowGraphBlockNames.RadToDeg),\n \"type/boolToInt\": getSimpleInputMapping(FlowGraphBlockNames.BooleanToInt),\n \"type/boolToFloat\": getSimpleInputMapping(FlowGraphBlockNames.BooleanToFloat),\n \"type/intToBool\": getSimpleInputMapping(FlowGraphBlockNames.IntToBoolean),\n \"type/intToFloat\": getSimpleInputMapping(FlowGraphBlockNames.IntToFloat),\n \"type/floatToInt\": getSimpleInputMapping(FlowGraphBlockNames.FloatToInt),\n \"type/floatToBool\": getSimpleInputMapping(FlowGraphBlockNames.FloatToBoolean),\n\n // flows\n \"flow/sequence\": {\n blocks: [FlowGraphBlockNames.Sequence],\n outputs: {\n flows: {\n \"[segment]\": { name: \"$1\" },\n },\n },\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects) {\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.outputSignalCount = Object.keys(gltfBlock.flows || []).length;\n serializedObject.signalOutputs.forEach((output, index) => {\n output.name = \"out_\" + index;\n });\n return serializedObjects;\n },\n },\n \"flow/branch\": {\n blocks: [FlowGraphBlockNames.Branch],\n inputs: {\n values: {\n condition: { name: \"condition\", gltfType: \"boolean\" },\n },\n },\n outputs: {\n flows: {\n true: { name: \"onTrue\" },\n false: { name: \"onFalse\" },\n },\n },\n },\n \"flow/switch\": {\n blocks: [FlowGraphBlockNames.Switch],\n configuration: {\n cases: {\n name: \"cases\",\n isArray: true,\n inOptions: true,\n defaultValue: [],\n configurationType: \"int[]\",\n invalidUsesDefault: true,\n generatesOutputFlowSockets: true,\n uniqueValues: true,\n },\n },\n inputs: {\n values: {\n selection: { name: \"case\" },\n default: { name: \"default\" },\n },\n },\n outputs: {\n flows: {\n default: { name: \"default\" },\n \"[segment]\": { name: \"$1\" },\n },\n },\n validation(gltfBlock) {\n const cases = gltfBlock.configuration?.cases;\n if (cases && cases.value) {\n const onlyIntegers = cases.value.every(\n (caseValue) => typeof caseValue === \"number\" && Number.isInteger(caseValue) && caseValue >= -2147483648 && caseValue <= 2147483647\n );\n if (!onlyIntegers) {\n Logger.Warn(\"Switch cases should be integers. Using empty array instead.\");\n cases.value = [] as number[];\n return { valid: true };\n }\n // check for duplicates\n const uniqueCases = new Set(cases.value);\n cases.value = Array.from(uniqueCases) as number[];\n }\n return { valid: true };\n },\n extraProcessor(gltfBlock, declaration, _mapping, _arrays, serializedObjects) {\n // convert all names of output flow to out_$1 apart from \"default\"\n if (declaration.op !== \"flow/switch\" || !gltfBlock.flows || Object.keys(gltfBlock.flows).length === 0) {\n throw new Error(\"Switch should have a single configuration object, the cases array\");\n }\n const serializedObject = serializedObjects[0];\n serializedObject.signalOutputs.forEach((output) => {\n if (output.name !== \"default\") {\n output.name = \"out_\" + output.name;\n }\n });\n return serializedObjects;\n },\n },\n \"flow/while\": {\n blocks: [FlowGraphBlockNames.WhileLoop],\n inputs: {\n values: {\n condition: { name: \"condition\", gltfType: \"boolean\" },\n },\n },\n outputs: {\n flows: {\n loopBody: { name: \"executionFlow\" },\n completed: { name: \"completed\" },\n },\n },\n },\n \"flow/for\": {\n blocks: [FlowGraphBlockNames.ForLoop],\n configuration: {\n initialIndex: {\n name: \"initialIndex\",\n gltfType: \"int\",\n inOptions: true,\n defaultValue: 0,\n configurationType: \"int\",\n invalidUsesDefault: true,\n },\n },\n inputs: {\n values: {\n startIndex: { name: \"startIndex\", gltfType: \"int\" },\n endIndex: { name: \"endIndex\", gltfType: \"int\" },\n },\n },\n outputs: {\n values: {\n index: { name: \"index\" },\n },\n flows: {\n loopBody: { name: \"executionFlow\" },\n completed: { name: \"completed\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects) {\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.incrementIndexWhenLoopDone = true;\n // KHR_interactivity assets may run large finite loops (e.g. the math/random Monte Carlo\n // conformance asset iterates 10k times), well above the block's conservative default guard.\n // Raise the cap for interactivity for-loops only, per block, instead of mutating the\n // process-wide FlowGraphForLoopBlock.MaxLoopIterations that every other FlowGraph relies on.\n serializedObject.config.maxLoopIterations = InteractivityForLoopMaxIterations;\n return serializedObjects;\n },\n },\n \"flow/doN\": {\n blocks: [FlowGraphBlockNames.DoN],\n configuration: {},\n inputs: {\n values: {\n n: { name: \"maxExecutions\", gltfType: \"int\" },\n },\n flows: {\n reset: { name: \"reset\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n values: {\n currentCount: { name: \"executionCount\" },\n },\n },\n },\n \"flow/multiGate\": {\n blocks: [FlowGraphBlockNames.MultiGate],\n inputs: {\n flows: {\n reset: { name: \"reset\" },\n },\n },\n configuration: {\n isRandom: {\n name: \"isRandom\",\n gltfType: \"boolean\",\n inOptions: true,\n defaultValue: false,\n configurationType: \"bool\",\n invalidUsesDefault: true,\n configurationGroup: \"multiGate\",\n },\n isLoop: {\n name: \"isLoop\",\n gltfType: \"boolean\",\n inOptions: true,\n defaultValue: false,\n configurationType: \"bool\",\n invalidUsesDefault: true,\n configurationGroup: \"multiGate\",\n },\n },\n outputs: {\n flows: {\n \"[segment]\": { name: \"$1\" },\n },\n values: {\n lastIndex: { name: \"lastIndex\", gltfType: \"int\" },\n },\n },\n extraProcessor(gltfBlock, declaration, _mapping, _arrays, serializedObjects) {\n if (declaration.op !== \"flow/multiGate\") {\n throw new Error(\"Invalid operation for MultiGate mapping\");\n }\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.outputSignalCount = Object.keys(gltfBlock.flows ?? {}).length;\n serializedObject.signalOutputs.forEach((output, index) => {\n output.name = \"out_\" + index;\n });\n return serializedObjects;\n },\n },\n \"flow/waitAll\": {\n blocks: [FlowGraphBlockNames.WaitAll],\n configuration: {\n inputFlows: {\n name: \"inputSignalCount\",\n gltfType: \"number\",\n inOptions: true,\n defaultValue: [0],\n configurationType: \"int\",\n invalidUsesDefault: true,\n minimum: 0,\n maximum: 64,\n generatesInputFlowSockets: true,\n },\n },\n inputs: {\n flows: {\n reset: { name: \"reset\" },\n \"[segment]\": { name: \"in_$1\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n completed: { name: \"completed\" },\n },\n values: {\n remainingInputs: { name: \"remainingInputs\", gltfType: \"int\" },\n },\n },\n validation(gltfBlock) {\n const inputFlowsConfiguration = gltfBlock.configuration?.inputFlows?.value;\n const inputFlows = inputFlowsConfiguration?.[0];\n if (inputFlowsConfiguration?.length !== 1 || typeof inputFlows !== \"number\" || !Number.isInteger(inputFlows) || inputFlows < 0 || inputFlows > 64) {\n gltfBlock.configuration = gltfBlock.configuration || {\n inputFlows: { value: [0] },\n };\n gltfBlock.configuration.inputFlows.value = [0];\n }\n return { valid: true };\n },\n },\n \"flow/throttle\": {\n blocks: [FlowGraphBlockNames.Throttle],\n inputs: {\n values: {\n duration: { name: \"duration\", gltfType: \"number\" },\n },\n flows: {\n reset: { name: \"reset\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n },\n values: {\n lastRemainingTime: { name: \"lastRemainingTime\", gltfType: \"number\" },\n },\n },\n },\n \"flow/setDelay\": {\n blocks: [FlowGraphBlockNames.SetDelay],\n inputs: {\n values: {\n duration: { name: \"duration\", gltfType: \"number\" },\n },\n flows: {\n cancel: { name: \"cancel\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n done: { name: \"done\" },\n },\n values: {\n // New spec renames this output to `lastDelay` (ref). Internally we still produce a\n // FlowGraphInteger; the index is unique per delay so it acts as the opaque handle.\n lastDelay: { name: \"lastDelayIndex\" },\n lastDelayIndex: { name: \"lastDelayIndex\", compatibilityOnly: true },\n },\n },\n },\n \"flow/cancelDelay\": {\n blocks: [FlowGraphBlockNames.CancelDelay],\n inputs: {\n values: {\n delay: { name: \"delayIndex\", gltfType: \"ref\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n },\n \"variable/get\": {\n blocks: [FlowGraphBlockNames.GetVariable],\n validation(gltfBlock) {\n if (!gltfBlock.configuration?.variable?.value) {\n Logger.Error(\"Variable get block should have a variable configuration\");\n return { valid: false, error: \"Variable get block should have a variable configuration\" };\n }\n return { valid: true };\n },\n configuration: {\n variable: {\n name: \"variable\",\n gltfType: \"number\",\n configurationType: \"int\",\n required: true,\n indexSource: \"variables\",\n flowGraphType: \"string\",\n inOptions: true,\n isVariable: true,\n dataTransformer(index, parser) {\n return parser.getVariableName(index);\n },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"variable/set\": {\n blocks: [FlowGraphBlockNames.SetVariable],\n inputs: {\n values: {\n \"[segment]\": { name: \"$1\" },\n },\n },\n configuration: {\n variables: {\n name: \"variables\",\n gltfType: \"number\",\n configurationType: \"int[]\",\n required: true,\n indexSource: \"variables\",\n minItems: 1,\n generatesInputValueSockets: true,\n flowGraphType: \"string\",\n inOptions: true,\n isArray: true,\n dataTransformer(index: number[], parser): string[] {\n return index.map((i) => parser.getVariableName(i));\n },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\", compatibilityOnly: true },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n // variable/get configuration\n const serializedGetVariable = serializedObjects[0];\n serializedGetVariable.dataInputs.forEach((input) => {\n input.name = parser.getVariableName(+input.name);\n });\n\n return serializedObjects;\n },\n },\n \"variable/interpolate\": {\n blocks: [\n FlowGraphBlockNames.ValueInterpolation,\n FlowGraphBlockNames.Context,\n FlowGraphBlockNames.PlayAnimation,\n FlowGraphBlockNames.BezierCurveEasing,\n FlowGraphBlockNames.GetVariable,\n ],\n configuration: {\n variable: {\n name: \"propertyName\",\n configurationType: \"int\",\n required: true,\n indexSource: \"variables\",\n inOptions: true,\n isVariable: true,\n dataTransformer(index, parser) {\n return parser.getVariableName(index);\n },\n },\n useSlerp: {\n name: \"animationType\",\n configurationType: \"bool\",\n required: true,\n inOptions: true,\n dataTransformer(value) {\n return value === true ? FlowGraphTypes.Quaternion : undefined;\n },\n },\n },\n inputs: {\n values: {\n value: { name: \"value_1\" },\n duration: { name: \"duration_1\", gltfType: \"number\" },\n p1: { name: \"controlPoint1\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n p2: { name: \"controlPoint2\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n },\n flows: {\n in: { name: \"in\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n outputs: {\n flows: {\n err: { name: \"error\", toBlock: FlowGraphBlockNames.PlayAnimation },\n out: { name: \"out\", toBlock: FlowGraphBlockNames.PlayAnimation },\n done: { name: \"done\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"userVariables\",\n inputBlockIndex: 2,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"animation\",\n output: \"animation\",\n inputBlockIndex: 2,\n outputBlockIndex: 0,\n isVariable: true,\n },\n {\n input: \"easingFunction\",\n output: \"easingFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 3,\n isVariable: true,\n },\n {\n input: \"value_0\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 4,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n // is useSlerp is used, animationType should be set to be quaternion!\n const serializedValueInterpolation = serializedObjects[0];\n const propertyIndex = gltfBlock.configuration?.variable.value?.[0];\n if (typeof propertyIndex !== \"number\") {\n Logger.Error(\"Variable index is not defined for variable interpolation block\");\n throw new Error(\"Variable index is not defined for variable interpolation block\");\n }\n const variable = parser.arrays.staticVariables[propertyIndex];\n // if not set by useSlerp\n if (typeof serializedValueInterpolation.config?.animationType?.value === \"undefined\") {\n serializedValueInterpolation.config ||= {};\n serializedValueInterpolation.config.animationType ||= {};\n serializedValueInterpolation.config.animationType.value = getAnimationTypeByFlowGraphType(variable.type);\n }\n\n // variable/get configuration\n const serializedGetVariable = serializedObjects[4];\n serializedGetVariable.config ||= {};\n serializedGetVariable.config.variable ||= {};\n serializedGetVariable.config.variable.value = parser.getVariableName(propertyIndex);\n\n return serializedObjects;\n },\n },\n \"pointer/get\": {\n blocks: [FlowGraphBlockNames.GetProperty, FlowGraphBlockNames.JsonPointerParser],\n validation: (node) => ValidateJsonPointerTemplate(node),\n configuration: {\n pointer: { name: \"jsonPointer\", toBlock: FlowGraphBlockNames.JsonPointerParser, configurationType: \"string\", required: true, pointerTemplate: true },\n type: {\n name: \"type\",\n configurationType: \"int\",\n required: true,\n validationOnly: true,\n indexSource: \"types\",\n },\n },\n inputs: {\n values: {\n \"[segment]\": { name: \"$1\", toBlock: FlowGraphBlockNames.JsonPointerParser },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n isValid: { name: \"isValid\", gltfType: \"bool\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"object\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"propertyName\",\n output: \"propertyName\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"customGetFunction\",\n output: \"getFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n serializedObjects.forEach((serializedObject) => {\n // check if it is the json pointer block\n if (serializedObject.className === FlowGraphBlockNames.JsonPointerParser) {\n serializedObject.config ||= {};\n serializedObject.config.outputValue = true;\n }\n });\n return serializedObjects;\n },\n },\n \"pointer/set\": {\n blocks: [FlowGraphBlockNames.SetProperty, FlowGraphBlockNames.JsonPointerParser],\n validation: (node) => ValidateJsonPointerTemplate(node, new Set([\"value\"])),\n configuration: {\n pointer: { name: \"jsonPointer\", toBlock: FlowGraphBlockNames.JsonPointerParser, configurationType: \"string\", required: true, pointerTemplate: true },\n type: {\n name: \"type\",\n configurationType: \"int\",\n required: true,\n validationOnly: true,\n indexSource: \"types\",\n },\n },\n inputs: {\n values: {\n // must be defined due to the array taking over\n value: { name: \"value\" },\n \"[segment]\": { name: \"$1\", toBlock: FlowGraphBlockNames.JsonPointerParser },\n },\n },\n outputs: {\n flows: {\n err: { name: \"error\" },\n out: { name: \"out\", compatibilityOnly: true },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"object\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"propertyName\",\n output: \"propertyName\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"customSetFunction\",\n output: \"setFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n serializedObjects.forEach((serializedObject) => {\n // check if it is the json pointer block\n if (serializedObject.className === FlowGraphBlockNames.JsonPointerParser) {\n serializedObject.config ||= {};\n serializedObject.config.outputValue = true;\n }\n });\n return serializedObjects;\n },\n },\n \"pointer/interpolate\": {\n // interpolate, parse the pointer and play the animation generated. 3 blocks!\n blocks: [FlowGraphBlockNames.ValueInterpolation, FlowGraphBlockNames.JsonPointerParser, FlowGraphBlockNames.PlayAnimation, FlowGraphBlockNames.BezierCurveEasing],\n validation: (node) => ValidateJsonPointerTemplate(node, new Set([\"value\", \"duration\", \"p1\", \"p2\"])),\n configuration: {\n pointer: { name: \"jsonPointer\", toBlock: FlowGraphBlockNames.JsonPointerParser, configurationType: \"string\", required: true, pointerTemplate: true },\n type: {\n name: \"type\",\n configurationType: \"int\",\n required: true,\n validationOnly: true,\n indexSource: \"types\",\n allowedSignatures: [\"float\", \"float2\", \"float3\", \"float4\", \"float2x2\", \"float3x3\", \"float4x4\"],\n },\n },\n inputs: {\n values: {\n value: { name: \"value_1\" },\n \"[segment]\": { name: \"$1\", toBlock: FlowGraphBlockNames.JsonPointerParser },\n duration: { name: \"duration_1\", gltfType: \"number\" /*, inOptions: true */ },\n p1: { name: \"controlPoint1\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n p2: { name: \"controlPoint2\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n },\n flows: {\n in: { name: \"in\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n outputs: {\n flows: {\n err: { name: \"error\", toBlock: FlowGraphBlockNames.PlayAnimation },\n out: { name: \"out\", toBlock: FlowGraphBlockNames.PlayAnimation },\n done: { name: \"done\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"object\",\n inputBlockIndex: 2,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"propertyName\",\n output: \"propertyName\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"customBuildAnimation\",\n output: \"generateAnimationsFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"animation\",\n output: \"animation\",\n inputBlockIndex: 2,\n outputBlockIndex: 0,\n isVariable: true,\n },\n {\n input: \"easingFunction\",\n output: \"easingFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 3,\n isVariable: true,\n },\n {\n input: \"value_0\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n serializedObjects.forEach((serializedObject) => {\n // check if it is the json pointer block\n if (serializedObject.className === FlowGraphBlockNames.JsonPointerParser) {\n serializedObject.config ||= {};\n serializedObject.config.outputValue = true;\n } else if (serializedObject.className === FlowGraphBlockNames.ValueInterpolation) {\n serializedObject.config ||= {};\n Object.keys(gltfBlock.values || []).forEach((key) => {\n const value = gltfBlock.values?.[key];\n if (key === \"value\" && value) {\n // get the type of the value\n const type = value.type;\n if (type !== undefined) {\n serializedObject.config.animationType = parser.arrays.types[type].flowGraphType;\n }\n }\n });\n }\n });\n return serializedObjects;\n },\n },\n \"animation/start\": {\n blocks: [FlowGraphBlockNames.PlayAnimation, FlowGraphBlockNames.ArrayIndex, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\n inputs: {\n values: {\n animation: { name: \"index\", gltfType: \"ref\", toBlock: FlowGraphBlockNames.ArrayIndex },\n speed: { name: \"speed\", gltfType: \"number\" },\n startTime: {\n name: \"from\",\n gltfType: \"number\",\n convertConnectedTimeToFrames: true,\n dataTransformer: (time: number[], parser) => [time[0] * parser._animationTargetFps],\n },\n endTime: {\n name: \"to\",\n gltfType: \"number\",\n convertConnectedTimeToFrames: true,\n dataTransformer: (time: number[], parser) => [time[0] * parser._animationTargetFps],\n },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n done: { name: \"done\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"animationGroup\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"array\",\n output: \"animationGroups\",\n inputBlockIndex: 1,\n outputBlockIndex: 2,\n isVariable: true,\n },\n ],\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects, _context, globalGLTF) {\n const playAnimationBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.PlayAnimation);\n if (playAnimationBlock) {\n playAnimationBlock.config.useVirtualTimeline = true;\n }\n const arrayIndexBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.ArrayIndex);\n if (arrayIndexBlock) {\n arrayIndexBlock.config.referenceCollection = \"animations\";\n }\n // add the glTF to the configuration of the last serialized object\n const serializedObject = serializedObjects[serializedObjects.length - 1];\n serializedObject.config ||= {};\n serializedObject.config.glTF = globalGLTF;\n return serializedObjects;\n },\n },\n \"animation/stop\": {\n blocks: [FlowGraphBlockNames.StopAnimation, FlowGraphBlockNames.ArrayIndex, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\n inputs: {\n values: {\n animation: { name: \"index\", gltfType: \"ref\", toBlock: FlowGraphBlockNames.ArrayIndex },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"animationGroup\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"array\",\n output: \"animationGroups\",\n inputBlockIndex: 1,\n outputBlockIndex: 2,\n isVariable: true,\n },\n ],\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects, _context, globalGLTF) {\n const stopAnimationBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.StopAnimation);\n if (stopAnimationBlock) {\n stopAnimationBlock.config.skipOnAnimationEnd = true;\n }\n const arrayIndexBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.ArrayIndex);\n if (arrayIndexBlock) {\n arrayIndexBlock.config.referenceCollection = \"animations\";\n }\n // add the glTF to the configuration of the last serialized object\n const serializedObject = serializedObjects[serializedObjects.length - 1];\n serializedObject.config ||= {};\n serializedObject.config.glTF = globalGLTF;\n return serializedObjects;\n },\n },\n \"animation/stopAt\": {\n blocks: [FlowGraphBlockNames.StopAnimation, FlowGraphBlockNames.ArrayIndex, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\n configuration: {},\n inputs: {\n values: {\n animation: { name: \"index\", gltfType: \"ref\", toBlock: FlowGraphBlockNames.ArrayIndex },\n stopTime: {\n name: \"stopAtFrame\",\n gltfType: \"number\",\n convertConnectedTimeToFrames: true,\n dataTransformer: (time: number[], parser) => [time[0] * parser._animationTargetFps],\n },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n done: { name: \"done\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"animationGroup\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"array\",\n output: \"animationGroups\",\n inputBlockIndex: 1,\n outputBlockIndex: 2,\n isVariable: true,\n },\n ],\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects, _context, globalGLTF) {\n const stopAnimationBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.StopAnimation);\n if (stopAnimationBlock) {\n stopAnimationBlock.config.useVirtualStopAt = true;\n stopAnimationBlock.config.skipOnAnimationEnd = true;\n }\n const arrayIndexBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.ArrayIndex);\n if (arrayIndexBlock) {\n arrayIndexBlock.config.referenceCollection = \"animations\";\n }\n // add the glTF to the configuration of the last serialized object\n const serializedObject = serializedObjects[serializedObjects.length - 1];\n serializedObject.config ||= {};\n serializedObject.config.glTF = globalGLTF;\n return serializedObjects;\n },\n },\n \"math/switch\": {\n blocks: [FlowGraphBlockNames.DataSwitch],\n configuration: {\n cases: {\n name: \"cases\",\n isArray: true,\n inOptions: true,\n defaultValue: [],\n configurationType: \"int[]\",\n invalidUsesDefault: true,\n generatesCaseInputValueSockets: true,\n uniqueValues: true,\n },\n },\n inputs: {\n values: {\n selection: { name: \"case\", gltfType: \"int\" },\n default: { name: \"default\" },\n \"[case]\": { name: \"$1\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n validation(gltfBlock) {\n const cases = gltfBlock.configuration?.cases;\n if (cases && cases.value) {\n const onlyIntegers = cases.value.every((caseValue) => {\n // case value should be an integer. Since Number.isInteger(1.0) is true, we need to check if toString has only digits.\n return typeof caseValue === \"number\" && /^-?\\d+$/.test(caseValue.toString());\n });\n if (!onlyIntegers) {\n Logger.Warn(\"Switch cases should be integers. Using empty array instead.\");\n cases.value = [] as number[];\n return { valid: true };\n }\n // check for duplicates\n const uniqueCases = new Set(cases.value);\n cases.value = Array.from(uniqueCases) as number[];\n }\n return { valid: true };\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects) {\n const serializedObject = serializedObjects[0];\n serializedObject.dataInputs.forEach((input) => {\n if (input.name !== \"default\" && input.name !== \"case\") {\n input.name = \"in_\" + input.name;\n }\n });\n serializedObject.config ||= {};\n serializedObject.config.treatCasesAsIntegers = true;\n return serializedObjects;\n },\n },\n \"debug/log\": {\n blocks: [FlowGraphBlockNames.ConsoleLog],\n inputs: {\n flows: {\n in: { name: \"in\" },\n },\n values: {\n \"[parameter]\": { name: \"$1\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n configuration: {\n severity: {\n name: \"severity\",\n configurationType: \"int\",\n defaultValue: 0,\n invalidUsesDefault: true,\n validationOnly: true,\n configurationGroup: \"debugLog\",\n },\n message: {\n name: \"messageTemplate\",\n configurationType: \"string\",\n defaultValue: \"\",\n invalidUsesDefault: true,\n inOptions: true,\n configurationGroup: \"debugLog\",\n debugLogTemplate: true,\n },\n },\n },\n};\n\nfunction getSimpleInputMapping(type: FlowGraphBlockNames, inputs: string[] = [\"a\"], inferType?: boolean): IGLTFToFlowGraphMapping {\n return {\n blocks: [type],\n inputs: {\n values: inputs.reduce(\n (acc, input) => {\n acc[input] = { name: input };\n return acc;\n },\n {} as { [key: string]: { name: string } }\n ),\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: inputs[0] },\n },\n },\n extraProcessor(gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n if (inferType) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.preventIntegerFloatArithmetic = true;\n // try to infer the type or fallback to Integer\n // check the gltf block for the inputs, see if they have a type\n let type = -1;\n Object.keys(gltfBlock.values || {}).find((value) => {\n if (gltfBlock.values?.[value].type !== undefined) {\n type = gltfBlock.values[value].type;\n return true;\n }\n return false;\n });\n if (type !== -1) {\n serializedObjects[0].config.type = _parser.arrays.types[type].flowGraphType;\n }\n }\n return serializedObjects;\n },\n validation(gltfBlock) {\n if (inferType) {\n // make sure types are the same\n return ValidateTypes(gltfBlock);\n }\n return { valid: true };\n },\n };\n}\n\nfunction ValidateTypes(gltfBlock: IKHRInteractivity_Node): { valid: boolean; error?: string } {\n if (gltfBlock.values) {\n const types = Object.keys(gltfBlock.values)\n .map((key) => gltfBlock.values![key].type)\n .filter((type) => type !== undefined);\n const allSameType = types.every((type) => type === types[0]);\n if (!allSameType) {\n return { valid: false, error: \"All inputs must be of the same type\" };\n }\n }\n return { valid: true };\n}\n\n/**\n * Returns whether a literal path segment has an odd number of consecutive occurrences of any bracket character.\n * Brackets used literally inside a path segment must be doubled, so an odd run means the segment is malformed.\n * @param segment the literal path segment\n * @returns true when the segment contains an odd run of brackets\n */\nfunction HasOddBracketRun(segment: string): boolean {\n for (let index = 0; index < segment.length; index++) {\n const character = segment[index];\n if (\"[]{}\".indexOf(character) === -1) {\n continue;\n }\n\n let runLength = 1;\n while (segment[index + runLength] === character) {\n runLength++;\n }\n if (runLength % 2 !== 0) {\n return true;\n }\n index += runLength - 1;\n }\n return false;\n}\n\n/**\n * Result of parsing a ratified `debug/log` message template.\n */\nexport interface IDebugLogTemplateParseResult {\n /** Whether all literal braces are doubled and every parameter is well formed. */\n valid: boolean;\n /** Unique parameter socket ids in first-occurrence order. */\n sockets: string[];\n}\n\n/**\n * Parses a ratified `debug/log` message template.\n * Literal braces must be doubled; non-empty text inside a single brace pair defines a socket id.\n * @param message message template to parse\n * @returns template validity and its exact dynamic socket ids\n */\nexport function ParseDebugLogTemplate(message: string): IDebugLogTemplateParseResult {\n let state = 0;\n let parameterStart = -1;\n const sockets: string[] = [];\n const seen = new Set<string>();\n for (let index = 0; index < message.length; index++) {\n const character = message[index];\n if (character === \"{\") {\n if (state === 0) {\n state = 1;\n } else if (state === 1) {\n state = 0;\n } else {\n return { valid: false, sockets: [] };\n }\n } else if (character === \"}\") {\n if (state === 0) {\n state = 3;\n } else if (state === 3) {\n state = 0;\n } else if (state === 2) {\n const socket = message.substring(parameterStart + 1, index);\n if (!seen.has(socket)) {\n seen.add(socket);\n sockets.push(socket);\n }\n state = 0;\n } else {\n return { valid: false, sockets: [] };\n }\n } else if (state === 1) {\n parameterStart = index - 1;\n state = 2;\n } else if (state === 3) {\n return { valid: false, sockets: [] };\n }\n }\n return { valid: state === 0, sockets: state === 0 ? sockets : [] };\n}\n\n/**\n * Validates the `pointer` configuration value of a `pointer/*` operation, following the JSON Pointer Template\n * Parsing steps of the KHR_interactivity specification. A template parameter must span an entire path segment, so\n * a template such as `/materials/{materialRef}pbrMetallicRoughness/...` is a syntax error, and the specification\n * requires the whole behavior graph to be rejected.\n * @param gltfBlock the glTF interactivity node\n * @param reservedSocketIds input ids owned by the operation rather than template parameters\n * @returns the validation result\n */\nfunction ValidateJsonPointerTemplate(gltfBlock: IKHRInteractivity_Node, reservedSocketIds: ReadonlySet<string> = new Set()): { valid: boolean; error?: string } {\n const pointer = gltfBlock.configuration?.pointer?.value?.[0];\n if (typeof pointer !== \"string\") {\n return { valid: false, error: \"A pointer operation requires a string `pointer` configuration value\" };\n }\n // A JSON Pointer (RFC 6901) is either empty or a sequence of `/`-prefixed reference tokens.\n if (pointer.length !== 0 && pointer[0] !== \"/\") {\n return { valid: false, error: `The JSON Pointer Template \"${pointer}\" is not a syntactically valid JSON Pointer` };\n }\n\n const invalid = (reason: string) => ({ valid: false, error: `The JSON Pointer Template \"${pointer}\" is invalid: ${reason}` });\n const socketIds = new Set<string>();\n for (const segment of pointer.split(\"/\")) {\n if (/~(?:[^01]|$)/.test(segment)) {\n return invalid(`the path segment \"${segment}\" contains an invalid RFC 6901 escape`);\n }\n const isIntegerParameter = segment[0] === \"[\" && segment[1] !== \"[\";\n const isReferenceParameter = segment[0] === \"{\" && segment[1] !== \"{\";\n if (!isIntegerParameter && !isReferenceParameter) {\n if (HasOddBracketRun(segment)) {\n return invalid(`the path segment \"${segment}\" contains an odd number of consecutive brackets`);\n }\n continue;\n }\n\n const closingBracket = isIntegerParameter ? \"]\" : \"}\";\n const body = segment.substring(1, segment.length - 1);\n if (segment.length < 3 || segment[segment.length - 1] !== closingBracket || /[[{]/.test(body) || /[\\]}]/.test(body)) {\n return invalid(`the template parameter path segment \"${segment}\" is malformed`);\n }\n\n const socketId = body.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n if (reservedSocketIds.has(socketId)) {\n return invalid(`the template parameter \"${socketId}\" uses a reserved input socket id`);\n }\n if (socketIds.has(socketId)) {\n return invalid(`the template parameter \"${socketId}\" is used more than once`);\n }\n socketIds.add(socketId);\n }\n\n return { valid: true };\n}\n\nexport function getAllSupportedNativeNodeTypes(): string[] {\n return Object.keys(gltfToFlowGraphMapping);\n}\n\n/**\n * \n * These are the nodes from the specs:\n\n### Math Nodes\n1. **Constants**\n - E (`math/E`) FlowGraphBlockNames.E\n - Pi (`math/Pi`) FlowGraphBlockNames.PI\n - Infinity (`math/Inf`) FlowGraphBlockNames.Inf\n - Not a Number (`math/NaN`) FlowGraphBlockNames.NaN\n2. **Arithmetic Nodes**\n - Absolute Value (`math/abs`) FlowGraphBlockNames.Abs\n - Sign (`math/sign`) FlowGraphBlockNames.Sign\n - Truncate (`math/trunc`) FlowGraphBlockNames.Trunc\n - Floor (`math/floor`) FlowGraphBlockNames.Floor\n - Ceil (`math/ceil`) FlowGraphBlockNames.Ceil\n - Round (`math/round`) FlowGraphBlockNames.Round\n - Fraction (`math/fract`) FlowGraphBlockNames.Fract\n - Negation (`math/neg`) FlowGraphBlockNames.Negation\n - Addition (`math/add`) FlowGraphBlockNames.Add\n - Subtraction (`math/sub`) FlowGraphBlockNames.Subtract\n - Multiplication (`math/mul`) FlowGraphBlockNames.Multiply\n - Division (`math/div`) FlowGraphBlockNames.Divide\n - Remainder (`math/rem`) FlowGraphBlockNames.Modulo\n - Minimum (`math/min`) FlowGraphBlockNames.Min\n - Maximum (`math/max`) FlowGraphBlockNames.Max\n - Clamp (`math/clamp`) FlowGraphBlockNames.Clamp\n - Saturate (`math/saturate`) FlowGraphBlockNames.Saturate\n - Interpolate (`math/mix`) FlowGraphBlockNames.MathInterpolation\n3. **Comparison Nodes**\n - Equality (`math/eq`) FlowGraphBlockNames.Equality\n - Less Than (`math/lt`) FlowGraphBlockNames.LessThan\n - Less Than Or Equal To (`math/le`) FlowGraphBlockNames.LessThanOrEqual\n - Greater Than (`math/gt`) FlowGraphBlockNames.GreaterThan\n - Greater Than Or Equal To (`math/ge`) FlowGraphBlockNames.GreaterThanOrEqual\n4. **Special Nodes**\n - Is Not a Number (`math/isNaN`) FlowGraphBlockNames.IsNaN\n - Is Infinity (`math/isInf`) FlowGraphBlockNames.IsInfinity\n - Select (`math/select`) FlowGraphBlockNames.Conditional\n - Switch (`math/switch`) FlowGraphBlockNames.DataSwitch\n - Random (`math/random`) FlowGraphBlockNames.Random\n5. **Angle and Trigonometry Nodes**\n - Degrees-To-Radians (`math/rad`) FlowGraphBlockNames.DegToRad\n - Radians-To-Degrees (`math/deg`) FlowGraphBlockNames.RadToDeg\n - Sine (`math/sin`) FlowGraphBlockNames.Sin\n - Cosine (`math/cos`) FlowGraphBlockNames.Cos\n - Tangent (`math/tan`) FlowGraphBlockNames.Tan\n - Arcsine (`math/asin`) FlowGraphBlockNames.Asin\n - Arccosine (`math/acos`) FlowGraphBlockNames.Acos\n - Arctangent (`math/atan`) FlowGraphBlockNames.Atan\n - Arctangent 2 (`math/atan2`) FlowGraphBlockNames.Atan2\n6. **Hyperbolic Nodes**\n - Hyperbolic Sine (`math/sinh`) FlowGraphBlockNames.Sinh\n - Hyperbolic Cosine (`math/cosh`) FlowGraphBlockNames.Cosh\n - Hyperbolic Tangent (`math/tanh`) FlowGraphBlockNames.Tanh\n - Inverse Hyperbolic Sine (`math/asinh`) FlowGraphBlockNames.Asinh\n - Inverse Hyperbolic Cosine (`math/acosh`) FlowGraphBlockNames.Acosh\n - Inverse Hyperbolic Tangent (`math/atanh`) FlowGraphBlockNames.Atanh\n7. **Exponential Nodes**\n - Exponent (`math/exp`) FlowGraphBlockNames.Exponential\n - Natural Logarithm (`math/log`) FlowGraphBlockNames.Log\n - Base-2 Logarithm (`math/log2`) FlowGraphBlockNames.Log2\n - Base-10 Logarithm (`math/log10`) FlowGraphBlockNames.Log10\n - Square Root (`math/sqrt`) FlowGraphBlockNames.SquareRoot\n - Cube Root (`math/cbrt`) FlowGraphBlockNames.CubeRoot\n - Power (`math/pow`) FlowGraphBlockNames.Power\n8. **Vector Nodes**\n - Length (`math/length`) FlowGraphBlockNames.Length\n - Normalize (`math/normalize`) FlowGraphBlockNames.Normalize\n - Dot Product (`math/dot`) FlowGraphBlockNames.Dot\n - Cross Product (`math/cross`) FlowGraphBlockNames.Cross\n - Rotate 2D (`math/rotate2D`) FlowGraphBlockNames.Rotate2D\n - Rotate 3D (`math/rotate3D`) FlowGraphBlockNames.Rotate3D\n - Transform (`math/transform`) FlowGraphBlockNames.TransformVector\n9. **Matrix Nodes**\n - Transpose (`math/transpose`) FlowGraphBlockNames.Transpose\n - Determinant (`math/determinant`) FlowGraphBlockNames.Determinant\n - Inverse (`math/inverse`) FlowGraphBlockNames.InvertMatrix\n - Multiplication (`math/matMul`) FlowGraphBlockNames.MatrixMultiplication\n - Compose (`math/matCompose`) FlowGraphBlockNames.MatrixCompose\n - Decompose (`math/matDecompose`) FlowGraphBlockNames.MatrixDecompose\n10. **Quaternion Nodes**\n - Conjugate (`math/quatConjugate`) FlowGraphBlockNames.Conjugate\n - Multiplication (`math/quatMul`) FlowGraphBlockNames.Multiply\n - Angle Between Quaternions (`math/quatAngleBetween`) FlowGraphBlockNames.AngleBetween\n - Quaternion From Axis Angle (`math/quatFromAxisAngle`) FlowGraphBlockNames.QuaternionFromAxisAngle\n - Quaternion To Axis Angle (`math/quatToAxisAngle`) FlowGraphBlockNames.QuaternionToAxisAngle\n - Quaternion From Two Directional Vectors (`math/quatFromDirections`) FlowGraphBlockNames.QuaternionFromDirections\n11. **Swizzle Nodes**\n - Combine (`math/combine2`, `math/combine3`, `math/combine4`, `math/combine2x2`, `math/combine3x3`, `math/combine4x4`)\n FlowGraphBlockNames.CombineVector2, FlowGraphBlockNames.CombineVector3, FlowGraphBlockNames.CombineVector4\n FlowGraphBlockNames.CombineMatrix2D, FlowGraphBlockNames.CombineMatrix3D, FlowGraphBlockNames.CombineMatrix\n - Extract (`math/extract2`, `math/extract3`, `math/extract4`, `math/extract2x2`, `math/extract3x3`, `math/extract4x4`)\n FlowGraphBlockNames.ExtractVector2, FlowGraphBlockNames.ExtractVector3, FlowGraphBlockNames.ExtractVector4\n FlowGraphBlockNames.ExtractMatrix2D, FlowGraphBlockNames.ExtractMatrix3D, FlowGraphBlockNames.ExtractMatrix\n12. **Integer Arithmetic Nodes**\n - Absolute Value (`math/abs`) FlowGraphBlockNames.Abs\n - Sign (`math/sign`) FlowGraphBlockNames.Sign\n - Negation (`math/neg`) FlowGraphBlockNames.Negation\n - Addition (`math/add`) FlowGraphBlockNames.Add\n - Subtraction (`math/sub`) FlowGraphBlockNames.Subtract\n - Multiplication (`math/mul`) FlowGraphBlockNames.Multiply\n - Division (`math/div`) FlowGraphBlockNames.Divide\n - Remainder (`math/rem`) FlowGraphBlockNames.Modulo\n - Minimum (`math/min`) FlowGraphBlockNames.Min\n - Maximum (`math/max`) FlowGraphBlockNames.Max\n - Clamp (`math/clamp`) FlowGraphBlockNames.Clamp\n13. **Integer Comparison Nodes**\n - Equality (`math/eq`) FlowGraphBlockNames.Equality\n - Less Than (`math/lt`) FlowGraphBlockNames.LessThan\n - Less Than Or Equal To (`math/le`) FlowGraphBlockNames.LessThanOrEqual\n - Greater Than (`math/gt`) FlowGraphBlockNames.GreaterThan\n - Greater Than Or Equal To (`math/ge`) FlowGraphBlockNames.GreaterThanOrEqual\n14. **Integer Bitwise Nodes**\n - Bitwise NOT (`math/not`) FlowGraphBlockNames.BitwiseNot\n - Bitwise AND (`math/and`) FlowGraphBlockNames.BitwiseAnd\n - Bitwise OR (`math/or`) FlowGraphBlockNames.BitwiseOr\n - Bitwise XOR (`math/xor`) FlowGraphBlockNames.BitwiseXor\n - Right Shift (`math/asr`) FlowGraphBlockNames.BitwiseRightShift\n - Left Shift (`math/lsl`) FlowGraphBlockNames.BitwiseLeftShift\n - Count Leading Zeros (`math/clz`) FlowGraphBlockNames.LeadingZeros\n - Count Trailing Zeros (`math/ctz`) FlowGraphBlockNames.TrailingZeros\n - Count One Bits (`math/popcnt`) FlowGraphBlockNames.OneBitsCounter\n15. **Boolean Arithmetic Nodes**\n - Equality (`math/eq`) FlowGraphBlockNames.Equality\n - Boolean NOT (`math/not`) FlowGraphBlockNames.BitwiseNot\n - Boolean AND (`math/and`) FlowGraphBlockNames.BitwiseAnd\n - Boolean OR (`math/or`) FlowGraphBlockNames.BitwiseOr\n - Boolean XOR (`math/xor`) FlowGraphBlockNames.BitwiseXor\n\n### Type Conversion Nodes\n1. **Boolean Conversion Nodes**\n - Boolean to Integer (`type/boolToInt`) FlowGraphBlockNames.BooleanToInt\n - Boolean to Float (`type/boolToFloat`) FlowGraphBlockNames.BooleanToFloat\n2. **Integer Conversion Nodes**\n - Integer to Boolean (`type/intToBool`) FlowGraphBlockNames.IntToBoolean\n - Integer to Float (`type/intToFloat`) FlowGraphBlockNames.IntToFloat\n3. **Float Conversion Nodes**\n - Float to Boolean (`type/floatToBool`) FlowGraphBlockNames.FloatToBoolean\n - Float to Integer (`type/floatToInt`) FlowGraphBlockNames.FloatToInt\n\n### Control Flow Nodes\n1. **Sync Nodes**\n - Sequence (`flow/sequence`) FlowGraphBlockNames.Sequence\n - Branch (`flow/branch`) FlowGraphBlockNames.Branch\n - Switch (`flow/switch`) FlowGraphBlockNames.Switch\n - While Loop (`flow/while`) FlowGraphBlockNames.WhileLoop\n - For Loop (`flow/for`) FlowGraphBlockNames.ForLoop\n - Do N (`flow/doN`) FlowGraphBlockNames.DoN\n - Multi Gate (`flow/multiGate`) FlowGraphBlockNames.MultiGate\n - Wait All (`flow/waitAll`) FlowGraphBlockNames.WaitAll\n - Throttle (`flow/throttle`) FlowGraphBlockNames.Throttle\n2. **Delay Nodes**\n - Set Delay (`flow/setDelay`) FlowGraphBlockNames.SetDelay\n - Cancel Delay (`flow/cancelDelay`) FlowGraphBlockNames.CancelDelay\n\n### State Manipulation Nodes\n1. **Custom Variable Access**\n - Variable Get (`variable/get`) FlowGraphBlockNames.GetVariable\n - Variable Set (`variable/set`) FlowGraphBlockNames.SetVariable\n - Variable Interpolate (`variable/interpolate`)\n2. **Object Model Access** // TODO fully test this!!!\n - JSON Pointer Template Parsing (`pointer/get`) [FlowGraphBlockNames.GetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Effective JSON Pointer Generation (`pointer/set`) [FlowGraphBlockNames.SetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Pointer Get (`pointer/get`) [FlowGraphBlockNames.GetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Pointer Set (`pointer/set`) [FlowGraphBlockNames.SetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Pointer Interpolate (`pointer/interpolate`) [FlowGraphBlockNames.ValueInterpolation, FlowGraphBlockNames.JsonPointerParser, FlowGraphBlockNames.PlayAnimation, FlowGraphBlockNames.BezierCurveEasing]\n\n### Animation Control Nodes\n1. **Animation Play** (`animation/start`) FlowGraphBlockNames.PlayAnimation\n2. **Animation Stop** (`animation/stop`) FlowGraphBlockNames.StopAnimation \n3. **Animation Stop At** (`animation/stopAt`) FlowGraphBlockNames.StopAnimation \n\n### Event Nodes\n1. **Lifecycle Event Nodes**\n - On Start (`event/onStart`) FlowGraphBlockNames.SceneReadyEvent\n - On Tick (`event/onTick`) FlowGraphBlockNames.SceneTickEvent\n2. **Custom Event Nodes**\n - Receive (`event/receive`) FlowGraphBlockNames.ReceiveCustomEvent\n - Send (`event/send`) FlowGraphBlockNames.SendCustomEvent\n\n */\n"]}
1
+ {"version":3,"file":"declarationMapper.js","sourceRoot":"","sources":["../../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { type IKHRInteractivity_Declaration, type IKHRInteractivity_Graph, type IKHRInteractivity_Node } from \"babylonjs-gltf2interface\";\nimport { FlowGraphBlockNames } from \"core/FlowGraph/Blocks/flowGraphBlockNames\";\nimport { Logger } from \"core/Misc/logger\";\nimport { type ISerializedFlowGraphBlock, type ISerializedFlowGraphContext } from \"core/FlowGraph/typeDefinitions\";\nimport { type InteractivityEvent, type InteractivityGraphToFlowGraphParser } from \"./interactivityGraphParser\";\nimport { type IGLTF } from \"../../glTFLoaderInterfaces\";\nimport { FlowGraphTypes, getAnimationTypeByFlowGraphType } from \"core/FlowGraph/flowGraphRichTypes\";\n\n// Per-block runaway-loop guard for KHR_interactivity for-loops. Interactivity assets may run large\n// finite loops (e.g. the math/random Monte Carlo conformance asset iterates 10k times), so this is\n// set above the FlowGraphForLoopBlock process-wide default while staying low enough that the guard is\n// still meaningful — every iteration runs a full synchronous sub-graph, so a much larger value (and\n// especially nested loops) could lock the main thread before the guard trips. Applied per for-loop\n// block via the flow/for extraProcessor rather than by mutating the shared static.\nconst InteractivityForLoopMaxIterations = 20000;\n\n/**\n * Describes how one KHR_interactivity configuration or socket property maps to FlowGraph.\n *\n * The same contract is used for fixed sockets, wildcard sockets, configuration validation,\n * defaulting, and multi-block routing during strict graph lowering.\n */\nexport interface IGLTFToFlowGraphMappingObject {\n /**\n * The name of the property in the FlowGraph block.\n */\n name: string;\n\n /**\n * Whether this socket mapping exists only for pre-ratification compatibility input.\n */\n compatibilityOnly?: boolean;\n\n /**\n * The type of the property in the glTF specs.\n * If not provided will be inferred.\n */\n gltfType?: string;\n\n /**\n * The type of the property in the FlowGraph block.\n * If not defined it equals the glTF type.\n */\n flowGraphType?: string;\n\n /**\n * A function that transforms the data from the glTF to the FlowGraph block.\n */\n dataTransformer?: (data: any, parser: InteractivityGraphToFlowGraphParser) => any;\n\n /**\n * If the property can contain multiple values.\n */\n isArray?: boolean;\n\n /**\n * If the property is in the options passed to the constructor of the block.\n */\n inOptions?: boolean;\n\n /**\n * If the property is an index to a value.\n * if defined this will be the name of the array to find the object in.\n */\n isVariable?: boolean;\n\n /**\n * the name of the class type this value will be mapped to.\n * This is used if we generate more than one block for a single glTF node.\n * Defaults to the first block in the mapping.\n */\n toBlock?: FlowGraphBlockNames | string;\n\n /**\n * Used in configuration values. If defined, this will be the default value, if no value is provided.\n */\n defaultValue?: any;\n\n /**\n * When the input value comes from a connection (an upstream node output) rather than a literal,\n * the parse-time {@link dataTransformer} cannot run. If this is `true`, the importer inserts a\n * runtime multiply block that scales the connected value by the animation target fps, converting\n * a KHR animation time (seconds) into Babylon animation frames. Literal values keep using the\n * {@link dataTransformer}. Used by `animation/start` / `animation/stopAt` time inputs, which may\n * be fed by a `pointer/get` (e.g. the read-only `maxTime` animation pointer).\n */\n convertConnectedTimeToFrames?: boolean;\n\n /**\n * KHR configuration value type used by canonical validation.\n */\n configurationType?: \"bool\" | \"int\" | \"int[]\" | \"string\";\n\n /**\n * Whether this configuration entry exists only for canonical validation.\n */\n validationOnly?: boolean;\n\n /**\n * Whether an operation without a complete default configuration requires this property.\n */\n required?: boolean;\n\n /**\n * Graph array referenced by an integer configuration value.\n */\n indexSource?: \"types\" | \"variables\" | \"events\" | \"nodes\" | \"assetNodes\";\n\n /**\n * Minimum number of values required for an array configuration.\n */\n minItems?: number;\n\n /**\n * Whether the configured indices generate required input value sockets.\n */\n generatesInputValueSockets?: boolean;\n\n /**\n * Whether integer case values generate required input value sockets.\n */\n generatesCaseInputValueSockets?: boolean;\n\n /**\n * Whether this string configuration generates JSON Pointer Template sockets.\n */\n pointerTemplate?: boolean;\n\n /**\n * Whether an invalid value falls back to the operation's default configuration.\n */\n invalidUsesDefault?: boolean;\n\n /**\n * Allowed KHR type signatures for a type-index configuration.\n */\n allowedSignatures?: readonly (\"bool\" | \"float\" | \"float2\" | \"float3\" | \"float4\" | \"float2x2\" | \"float3x3\" | \"float4x4\" | \"int\" | \"ref\" | \"custom\")[];\n\n /** Allowed literal values for this configuration property. */\n allowedValues?: readonly (boolean | number | string)[];\n\n /**\n * Input socket whose effective type determines this output socket type.\n */\n typeSourceInput?: string;\n\n /** Inclusive minimum for an integer configuration value. */\n minimum?: number;\n\n /** Inclusive maximum for an integer configuration value. */\n maximum?: number;\n\n /**\n * Whether this configuration value generates numbered input flow sockets.\n */\n generatesInputFlowSockets?: boolean;\n\n /**\n * Whether this configuration array generates output flow sockets.\n */\n generatesOutputFlowSockets?: boolean;\n\n /**\n * Properties in the same group fall back to their defaults together when any member is\n * missing or invalid.\n */\n configurationGroup?: string;\n\n /**\n * Whether duplicate array values are removed from the effective configuration.\n */\n uniqueValues?: boolean;\n\n /**\n * Whether a string configuration value is a `debug/log` message template.\n */\n debugLogTemplate?: boolean;\n}\n\n/**\n * Description of how a KHR_interactivity declaration (op such as\n * `pointer/get`, `event/onSelect`, `math/add`) maps to one or more\n * FlowGraph blocks. Used by {@link InteractivityGraphToFlowGraphParser}\n * to translate the source glTF graph into the serialized FlowGraph form.\n */\nexport interface IGLTFToFlowGraphMapping {\n /**\n * The type of the FlowGraph block(s).\n * Typically will be a single element in an array.\n * When adding blocks defined in this module use the KHR_interactivity prefix.\n */\n blocks: (FlowGraphBlockNames | string)[];\n\n /**\n * Exact value socket contract for an operation supplied by another extension.\n */\n declarationSchema?: {\n inputValueSockets: Record<string, \"bool\" | \"float\" | \"float2\" | \"float3\" | \"float4\" | \"float2x2\" | \"float3x3\" | \"float4x4\" | \"int\" | \"ref\" | \"custom\">;\n outputValueSockets: Record<string, \"bool\" | \"float\" | \"float2\" | \"float3\" | \"float4\" | \"float2x2\" | \"float3x3\" | \"float4x4\" | \"int\" | \"ref\" | \"custom\">;\n };\n /**\n * The inputs of the glTF node mapped to the FlowGraph block.\n */\n inputs?: {\n /**\n * The value inputs of the glTF node mapped to the FlowGraph block.\n */\n values?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n /**\n * The flow inputs of the glTF node mapped to the FlowGraph block.\n */\n flows?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n };\n /**\n * The outputs of the glTF node mapped to the FlowGraph block.\n */\n outputs?: {\n /**\n * The value outputs of the glTF node mapped to the FlowGraph block.\n */\n values?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n /**\n * The flow outputs of the glTF node mapped to the FlowGraph block.\n */\n flows?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n };\n /**\n * The configuration of the glTF node mapped to the FlowGraph block.\n * This information is usually passed to the constructor of the block.\n */\n configuration?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n\n /**\n * If we generate more than one block for a single glTF node, this mapping will be used to map\n * between the flowGraph classes.\n */\n typeToTypeMapping?: { [originName: string]: IGLTFToFlowGraphMappingObject };\n\n /**\n * The connections between two or more blocks.\n * This is used to connect the blocks in the graph\n */\n interBlockConnectors?: {\n /**\n * The name of the input connection in the first block.\n */\n input: string;\n /**\n * The name of the output connection in the second block.\n */\n output: string;\n\n /**\n * The index of the block in the array of blocks that corresponds to the input.\n */\n inputBlockIndex: number;\n /**\n * The index of the block in the array of blocks that corresponds to the output.\n */\n outputBlockIndex: number;\n /**\n * If the connection is a variable connection or a flow connection.\n */\n isVariable?: boolean;\n }[];\n\n /**\n * This optional function will allow to validate the node, according to the glTF specs.\n * For example, if a node has a configuration object, it must be present and correct.\n * This is a basic node-based validation.\n * This function is expected to return false and log the error if the node is not valid.\n * Note that this function can also modify the node, if needed.\n *\n * @param gltfBlock the glTF node to validate\n * @param interactivityGraph the interactivity graph\n * @param glTFObject the glTF object\n * @returns true if validated, false if not.\n */\n validation?: (gltfBlock: IKHRInteractivity_Node, interactivityGraph: IKHRInteractivity_Graph, glTFObject?: IGLTF) => { valid: boolean; error?: string };\n\n /**\n * This is used if we need extra information for the constructor/options that is not provided directly by the glTF node.\n * This function can return more than one node, if extra nodes are needed for this block to function correctly.\n * Returning more than one block will usually happen when a json pointer was provided.\n *\n * @param gltfBlock the glTF node\n * @param declaration the declaration object\n * @param mapping the mapping object\n * @param parser the interactivity graph parser\n * @param serializedObjects the serialized objects\n * @param context the serialized flow graph context\n * @param globalGLTF the global gltf object\n * @returns an array of serialized nodes that will be added to the graph.\n */\n extraProcessor?: (\n gltfBlock: IKHRInteractivity_Node,\n declaration: IKHRInteractivity_Declaration,\n mapping: IGLTFToFlowGraphMapping,\n parser: InteractivityGraphToFlowGraphParser,\n serializedObjects: ISerializedFlowGraphBlock[],\n context: ISerializedFlowGraphContext,\n globalGLTF?: IGLTF\n ) => ISerializedFlowGraphBlock[];\n}\n\nexport function getMappingForFullOperationName(fullOperationName: string) {\n const [op, extension] = fullOperationName.split(\":\");\n return getMappingForDeclaration({ op, extension });\n}\n\n/**\n * Returns whether a KHR operation accepts the conventional `in` flow socket when the registry\n * does not need a renamed or dynamic input mapping.\n * @param operation full KHR operation name\n * @returns true when the operation accepts the conventional input flow\n */\nexport function HasDefaultInteractivityFlowInput(operation: string): boolean {\n if (operation === \"flow/waitAll\") {\n return false;\n }\n return (\n operation.startsWith(\"flow/\") ||\n operation.startsWith(\"animation/\") ||\n operation === \"pointer/set\" ||\n operation === \"pointer/interpolate\" ||\n operation === \"variable/set\" ||\n operation === \"variable/interpolate\" ||\n operation === \"event/send\" ||\n operation === \"event/stopPropagation\" ||\n operation === \"flow/log:BABYLON\"\n );\n}\n\n/**\n * Normalizes serialized or runtime FlowGraph custom-event configuration for inverse comparison.\n * @param value serialized event-data entries or the runtime event-data dictionary\n * @returns stable event-data entries sorted by socket id\n */\nexport function NormalizeInteractivityEventDataConfiguration(value: unknown): unknown {\n const normalizeValue = (entry: unknown): unknown => {\n if (Array.isArray(entry)) {\n return entry.slice();\n }\n if (entry !== null && typeof entry === \"object\") {\n if (typeof (entry as { asArray?: () => ArrayLike<unknown> }).asArray === \"function\") {\n return Array.from((entry as { asArray: () => ArrayLike<unknown> }).asArray());\n }\n if (Object.prototype.hasOwnProperty.call(entry, \"value\")) {\n const nested = (entry as { value: unknown }).value;\n return Array.isArray(nested) ? nested.slice() : [nested];\n }\n }\n return [entry];\n };\n if (Array.isArray(value)) {\n return value\n .filter((entry): entry is { id: string; type: string; value?: unknown } => entry !== null && typeof entry === \"object\" && typeof entry.id === \"string\")\n .map((entry) => ({\n id: entry.id,\n type: entry.type,\n ...(entry.value === undefined ? {} : { value: normalizeValue(entry.value) }),\n }))\n .sort((left, right) => left.id.localeCompare(right.id));\n }\n if (value !== null && typeof value === \"object\") {\n return Object.entries(value as Record<string, unknown>)\n .map(([id, entry]) => {\n if (entry === null || typeof entry !== \"object\") {\n return { id, malformed: true };\n }\n const definition = entry as { type?: { typeName?: string } | string; value?: unknown };\n return {\n id,\n type: typeof definition.type === \"string\" ? definition.type : definition.type?.typeName,\n ...(definition.value === undefined ? {} : { value: normalizeValue(definition.value) }),\n };\n })\n .sort((left, right) => left.id.localeCompare(right.id));\n }\n return value;\n}\n\nexport function getMappingForDeclaration(declaration: IKHRInteractivity_Declaration, returnNoOpIfNotAvailable: boolean = true): IGLTFToFlowGraphMapping | undefined {\n const extensionMappings = declaration.extension ? _GetOwnRegistryValue(gltfExtensionsToFlowGraphMapping, declaration.extension) : undefined;\n const mapping = declaration.extension ? _GetOwnRegistryValue(extensionMappings, declaration.op) : _GetOwnRegistryValue(gltfToFlowGraphMapping, declaration.op);\n if (!mapping) {\n if (returnNoOpIfNotAvailable) {\n Logger.Warn(`No mapping found for operation ${declaration.op} and extension ${declaration.extension || \"KHR_interactivity\"}`);\n return getNoOpMappingForDeclaration(declaration);\n }\n }\n return mapping;\n}\n\n/**\n * Creates the typed no-op mapping required for an unsupported extension declaration.\n * @param declaration unsupported extension declaration\n * @returns a mapping that preserves the declared value sockets\n */\nexport function getNoOpMappingForDeclaration(declaration: IKHRInteractivity_Declaration): IGLTFToFlowGraphMapping {\n const inputs: IGLTFToFlowGraphMapping[\"inputs\"] = {};\n const outputs: IGLTFToFlowGraphMapping[\"outputs\"] = {\n flows: {},\n };\n if (declaration.inputValueSockets) {\n inputs.values = Object.create(null);\n for (const key in declaration.inputValueSockets) {\n if (Object.prototype.hasOwnProperty.call(declaration.inputValueSockets, key)) {\n Object.defineProperty(inputs.values, key, {\n configurable: true,\n enumerable: true,\n value: { name: key },\n writable: true,\n });\n }\n }\n }\n if (declaration.outputValueSockets) {\n outputs.values = Object.create(null);\n Object.keys(declaration.outputValueSockets).forEach((key) => {\n Object.defineProperty(outputs.values!, key, {\n configurable: true,\n enumerable: true,\n value: { name: key },\n writable: true,\n });\n });\n }\n return {\n blocks: [],\n inputs,\n outputs,\n };\n}\n\n/**\n * This function will add new mapping to glTF interactivity.\n * Other extensions can define new types of blocks, this is the way to let interactivity know how to parse them.\n * @param key the type of node, i.e. \"variable/get\"\n * @param extension the extension of the interactivity operation, i.e. \"KHR_selectability\"\n * @param mapping The mapping object. See documentation or examples below.\n */\nexport function addNewInteractivityFlowGraphMapping(key: string, extension: string, mapping: IGLTFToFlowGraphMapping) {\n let extensionMappings = _GetOwnRegistryValue(gltfExtensionsToFlowGraphMapping, extension);\n if (!extensionMappings) {\n extensionMappings = Object.create(null);\n Object.defineProperty(gltfExtensionsToFlowGraphMapping, extension, {\n configurable: true,\n enumerable: true,\n value: extensionMappings,\n writable: true,\n });\n }\n Object.defineProperty(extensionMappings, key, {\n configurable: true,\n enumerable: true,\n value: mapping,\n writable: true,\n });\n}\n\nfunction _GetOwnRegistryValue<T>(registry: Record<string, T> | undefined, key: string): T | undefined {\n return registry && Object.prototype.hasOwnProperty.call(registry, key) ? registry[key] : undefined;\n}\n\n/**\n * One operation entry in the shared KHR_interactivity-to-FlowGraph registry.\n */\nexport interface IKHRInteractivityOperationRegistryEntry {\n /** Ratified operation identifier. */\n op: string;\n /** Extension defining the operation, when it is not a KHR_interactivity core operation. */\n extension?: string;\n /** Bidirectional structural mapping used by import and export. */\n mapping: IGLTFToFlowGraphMapping;\n}\n\n/**\n * Gets a deterministic snapshot of the registered KHR_interactivity operation mappings.\n * Export analysis uses this same registry as import lowering so the two directions cannot\n * independently drift.\n * @returns registered mappings sorted by extension and operation\n */\nexport function GetInteractivityOperationRegistry(): readonly IKHRInteractivityOperationRegistryEntry[] {\n const entries: IKHRInteractivityOperationRegistryEntry[] = Object.keys(gltfToFlowGraphMapping).map((op) => ({\n op,\n mapping: gltfToFlowGraphMapping[op],\n }));\n for (const extension of Object.keys(gltfExtensionsToFlowGraphMapping).sort()) {\n for (const op of Object.keys(gltfExtensionsToFlowGraphMapping[extension]).sort()) {\n entries.push({\n op,\n extension,\n mapping: gltfExtensionsToFlowGraphMapping[extension][op],\n });\n }\n }\n return entries.sort((left, right) => `${left.extension ?? \"\"}:${left.op}`.localeCompare(`${right.extension ?? \"\"}:${right.op}`));\n}\n\nconst gltfExtensionsToFlowGraphMapping: { [extension: string]: { [key: string]: IGLTFToFlowGraphMapping } } = {\n /**\n * This is the BABYLON extension for glTF interactivity.\n * It defines babylon-specific blocks and operations.\n */\n BABYLON: {\n /**\n * flow/log is a flow node that logs input to the console.\n * It has \"in\" and \"out\" flows, and takes a message as input.\n * The message can be any type of value.\n * The message is logged to the console when the \"in\" flow is triggered.\n * The \"out\" flow is triggered when the message is logged.\n */\n \"flow/log\": {\n blocks: [FlowGraphBlockNames.ConsoleLog],\n inputs: {\n values: {\n message: { name: \"message\" },\n \"[segment]\": { name: \"$1\", compatibilityOnly: true },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\", compatibilityOnly: true },\n },\n },\n },\n },\n};\n\n// this mapper is just a way to convert the glTF nodes to FlowGraph nodes in terms of input/output connection names and values.\nconst gltfToFlowGraphMapping: { [key: string]: IGLTFToFlowGraphMapping } = {\n \"event/onStart\": {\n blocks: [FlowGraphBlockNames.SceneReadyEvent],\n outputs: {\n values: {\n // KHR_interactivity `ref event` output (the event reference).\n event: { name: \"event\" },\n },\n flows: {\n out: { name: \"done\" },\n },\n },\n },\n \"event/onTick\": {\n blocks: [FlowGraphBlockNames.SceneTickEvent],\n inputs: {},\n outputs: {\n values: {\n timeSinceStart: { name: \"timeSinceStart\", gltfType: \"number\" },\n timeSinceLastTick: { name: \"deltaTime\", gltfType: \"number\" /*, dataTransformer: (time: number) => time / 1000*/ },\n // KHR_interactivity `ref event` output (the event reference).\n event: { name: \"event\" },\n },\n flows: {\n out: { name: \"done\" },\n },\n },\n },\n \"event/send\": {\n blocks: [FlowGraphBlockNames.SendCustomEvent],\n configuration: {\n event: {\n name: \"eventId\",\n configurationType: \"int\",\n required: true,\n indexSource: \"events\",\n validationOnly: true,\n },\n },\n inputs: {\n values: {\n \"[segment]\": { name: \"$1\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n extraProcessor(gltfBlock, declaration, _mapping, parser, serializedObjects) {\n // set eventId and eventData. The configuration object of the glTF should have a single object.\n // validate that we are running it on the right block.\n if (declaration.op !== \"event/send\" || !gltfBlock.configuration?.event) {\n throw new Error(\"Send event should have a single configuration object, the event itself\");\n }\n const eventConfiguration = gltfBlock.configuration[\"event\"];\n const eventId = eventConfiguration.value?.[0];\n if (typeof eventId !== \"number\") {\n throw new Error(\"Event id should be a number\");\n }\n const event: InteractivityEvent = parser.arrays.events[eventId];\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.eventId = event.eventId;\n serializedObject.config.eventData = event.eventData;\n return serializedObjects;\n },\n },\n \"event/receive\": {\n blocks: [FlowGraphBlockNames.ReceiveCustomEvent],\n configuration: {\n event: {\n name: \"eventId\",\n configurationType: \"int\",\n required: true,\n indexSource: \"events\",\n validationOnly: true,\n },\n },\n outputs: {\n values: {\n // KHR_interactivity `ref event` output (the event reference).\n event: { name: \"event\" },\n \"[segment]\": { name: \"$1\" },\n },\n flows: {\n out: { name: \"done\" },\n },\n },\n validation(gltfBlock, interactivityGraph) {\n if (!gltfBlock.configuration) {\n Logger.Error(\"Receive event should have a configuration object\");\n return { valid: false, error: \"Receive event should have a configuration object\" };\n }\n const eventConfiguration = gltfBlock.configuration[\"event\"];\n if (!eventConfiguration) {\n Logger.Error(\"Receive event should have a single configuration object, the event itself\");\n return { valid: false, error: \"Receive event should have a single configuration object, the event itself\" };\n }\n const eventId = eventConfiguration.value?.[0];\n if (typeof eventId !== \"number\") {\n Logger.Error(\"Event id should be a number\");\n return { valid: false, error: \"Event id should be a number\" };\n }\n const event = interactivityGraph.events?.[eventId];\n if (!event) {\n Logger.Error(`Event with id ${eventId} not found`);\n return { valid: false, error: `Event with id ${eventId} not found` };\n }\n return { valid: true };\n },\n extraProcessor(gltfBlock, declaration, _mapping, parser, serializedObjects) {\n // set eventId and eventData. The configuration object of the glTF should have a single object.\n // validate that we are running it on the right block.\n if (declaration.op !== \"event/receive\" || !gltfBlock.configuration?.event) {\n throw new Error(\"Receive event should have a single configuration object, the event itself\");\n }\n const eventConfiguration = gltfBlock.configuration[\"event\"];\n const eventId = eventConfiguration.value?.[0];\n if (typeof eventId !== \"number\") {\n throw new Error(\"Event id should be a number\");\n }\n const event: InteractivityEvent = parser.arrays.events[eventId];\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.eventId = event.eventId;\n serializedObject.config.eventData = event.eventData;\n return serializedObjects;\n },\n },\n \"event/stopPropagation\": {\n blocks: [FlowGraphBlockNames.StopEventPropagation],\n inputs: {\n values: {\n event: { name: \"event\" },\n stopImmediate: { name: \"stopImmediate\" },\n },\n flows: {\n in: { name: \"in\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n },\n \"math/E\": getSimpleInputMapping(FlowGraphBlockNames.E, []),\n \"math/Pi\": getSimpleInputMapping(FlowGraphBlockNames.PI, []),\n \"math/Tau\": getSimpleInputMapping(FlowGraphBlockNames.Tau, []),\n \"math/Inf\": getSimpleInputMapping(FlowGraphBlockNames.Inf, []),\n \"math/NaN\": getSimpleInputMapping(FlowGraphBlockNames.NaN, []),\n \"math/abs\": getSimpleInputMapping(FlowGraphBlockNames.Abs),\n \"math/sign\": getSimpleInputMapping(FlowGraphBlockNames.Sign),\n \"math/trunc\": getSimpleInputMapping(FlowGraphBlockNames.Trunc),\n \"math/floor\": getSimpleInputMapping(FlowGraphBlockNames.Floor),\n \"math/ceil\": getSimpleInputMapping(FlowGraphBlockNames.Ceil),\n \"math/round\": {\n blocks: [FlowGraphBlockNames.Round],\n configuration: {},\n inputs: {\n values: {\n a: { name: \"a\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n extraProcessor(gltfBlock, declaration, _mapping, parser, serializedObjects) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.roundHalfAwayFromZero = true;\n return serializedObjects;\n },\n },\n \"math/fract\": getSimpleInputMapping(FlowGraphBlockNames.Fraction),\n \"math/neg\": getSimpleInputMapping(FlowGraphBlockNames.Negation),\n \"math/add\": getSimpleInputMapping(FlowGraphBlockNames.Add, [\"a\", \"b\"], true),\n \"math/sub\": getSimpleInputMapping(FlowGraphBlockNames.Subtract, [\"a\", \"b\"], true),\n \"math/mul\": {\n blocks: [FlowGraphBlockNames.Multiply],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.useMatrixPerComponent = true;\n serializedObjects[0].config.preventIntegerFloatArithmetic = true;\n // try to infer the type or fallback to Integer\n // check the gltf block for the inputs, see if they have a type\n let type = -1;\n Object.keys(_gltfBlock.values || {}).find((value) => {\n if (_gltfBlock.values?.[value].type !== undefined) {\n type = _gltfBlock.values[value].type;\n return true;\n }\n return false;\n });\n if (type !== -1) {\n serializedObjects[0].config.type = _parser.arrays.types[type].flowGraphType;\n }\n return serializedObjects;\n },\n validation(gltfBlock) {\n if (gltfBlock.values) {\n // make sure types are the same\n return ValidateTypes(gltfBlock);\n }\n return { valid: true };\n },\n },\n \"math/div\": getSimpleInputMapping(FlowGraphBlockNames.Divide, [\"a\", \"b\"], true),\n \"math/rem\": getSimpleInputMapping(FlowGraphBlockNames.Modulo, [\"a\", \"b\"]),\n \"math/min\": getSimpleInputMapping(FlowGraphBlockNames.Min, [\"a\", \"b\"]),\n \"math/max\": getSimpleInputMapping(FlowGraphBlockNames.Max, [\"a\", \"b\"]),\n \"math/clamp\": getSimpleInputMapping(FlowGraphBlockNames.Clamp, [\"a\", \"b\", \"c\"]),\n \"math/saturate\": getSimpleInputMapping(FlowGraphBlockNames.Saturate),\n \"math/mix\": getSimpleInputMapping(FlowGraphBlockNames.MathInterpolation, [\"a\", \"b\", \"c\"]),\n // Smooth-step (Hermite interpolation): edges a/b and value c.\n \"math/smoothStep\": getSimpleInputMapping(FlowGraphBlockNames.SmoothStep, [\"a\", \"b\", \"c\"]),\n // Linear sRGB <-> OkLCh (Oklab polar form). Scalar r/g/b inputs map to l/c/h\n // outputs (hue in radians) and vice-versa.\n \"math/rgbToOkLCh\": {\n blocks: [FlowGraphBlockNames.RGBToOkLCh],\n inputs: {\n values: {\n r: { name: \"r\", gltfType: \"number\" },\n g: { name: \"g\", gltfType: \"number\" },\n b: { name: \"b\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n l: { name: \"l\" },\n c: { name: \"c\" },\n h: { name: \"h\" },\n },\n },\n },\n \"math/rgbFromOkLCh\": {\n blocks: [FlowGraphBlockNames.RGBFromOkLCh],\n inputs: {\n values: {\n l: { name: \"l\", gltfType: \"number\" },\n c: { name: \"c\", gltfType: \"number\" },\n h: { name: \"h\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n r: { name: \"r\" },\n g: { name: \"g\" },\n b: { name: \"b\" },\n },\n },\n },\n // Quaternion spherical-linear interpolation. Inputs are two unit\n // quaternions and an unclamped float coefficient.\n \"math/quatSlerp\": getSimpleInputMapping(FlowGraphBlockNames.MathSlerp, [\"a\", \"b\", \"c\"]),\n // Vector spherical-linear interpolation (float2/float3). Inputs are two\n // vectors and an unclamped float coefficient.\n \"math/slerp\": getSimpleInputMapping(FlowGraphBlockNames.VectorSlerp, [\"a\", \"b\", \"c\"]),\n \"math/eq\": getSimpleInputMapping(FlowGraphBlockNames.Equality, [\"a\", \"b\"]),\n // Reference equality. The spec defines `ref/eq` as: true if both refs are\n // null, true if both refer to the same object (regardless of whether it\n // exists), false otherwise. FlowGraphEqualityBlock falls through to a\n // strict `===` comparison for non-vector/matrix/numeric types, which\n // already produces the spec-defined behaviour for Babylon object refs.\n \"ref/eq\": getSimpleInputMapping(FlowGraphBlockNames.Equality, [\"a\", \"b\"]),\n \"math/lt\": getSimpleInputMapping(FlowGraphBlockNames.LessThan, [\"a\", \"b\"]),\n \"math/le\": getSimpleInputMapping(FlowGraphBlockNames.LessThanOrEqual, [\"a\", \"b\"]),\n \"math/gt\": getSimpleInputMapping(FlowGraphBlockNames.GreaterThan, [\"a\", \"b\"]),\n \"math/ge\": getSimpleInputMapping(FlowGraphBlockNames.GreaterThanOrEqual, [\"a\", \"b\"]),\n \"math/isNaN\": getSimpleInputMapping(FlowGraphBlockNames.IsNaN),\n \"math/isInf\": getSimpleInputMapping(FlowGraphBlockNames.IsInfinity),\n \"math/select\": {\n blocks: [FlowGraphBlockNames.Conditional],\n inputs: {\n values: {\n condition: { name: \"condition\" },\n // Should we validate those have the same type here, or assume it is already validated?\n a: { name: \"onTrue\" },\n b: { name: \"onFalse\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"output\", typeSourceInput: \"a\" },\n },\n },\n },\n \"math/random\": {\n blocks: [FlowGraphBlockNames.Random],\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float\" },\n },\n },\n },\n \"math/sin\": getSimpleInputMapping(FlowGraphBlockNames.Sin),\n \"math/cos\": getSimpleInputMapping(FlowGraphBlockNames.Cos),\n \"math/tan\": getSimpleInputMapping(FlowGraphBlockNames.Tan),\n \"math/asin\": getSimpleInputMapping(FlowGraphBlockNames.Asin),\n \"math/acos\": getSimpleInputMapping(FlowGraphBlockNames.Acos),\n \"math/atan\": getSimpleInputMapping(FlowGraphBlockNames.Atan),\n \"math/atan2\": getSimpleInputMapping(FlowGraphBlockNames.Atan2, [\"a\", \"b\"]),\n \"math/sinh\": getSimpleInputMapping(FlowGraphBlockNames.Sinh),\n \"math/cosh\": getSimpleInputMapping(FlowGraphBlockNames.Cosh),\n \"math/tanh\": getSimpleInputMapping(FlowGraphBlockNames.Tanh),\n \"math/asinh\": getSimpleInputMapping(FlowGraphBlockNames.Asinh),\n \"math/acosh\": getSimpleInputMapping(FlowGraphBlockNames.Acosh),\n \"math/atanh\": getSimpleInputMapping(FlowGraphBlockNames.Atanh),\n \"math/exp\": getSimpleInputMapping(FlowGraphBlockNames.Exponential),\n \"math/log\": getSimpleInputMapping(FlowGraphBlockNames.Log),\n \"math/log2\": getSimpleInputMapping(FlowGraphBlockNames.Log2),\n \"math/log10\": getSimpleInputMapping(FlowGraphBlockNames.Log10),\n \"math/sqrt\": getSimpleInputMapping(FlowGraphBlockNames.SquareRoot),\n \"math/cbrt\": getSimpleInputMapping(FlowGraphBlockNames.CubeRoot),\n \"math/pow\": getSimpleInputMapping(FlowGraphBlockNames.Power, [\"a\", \"b\"]),\n \"math/length\": getSimpleInputMapping(FlowGraphBlockNames.Length),\n \"math/normalize\": {\n ...getSimpleInputMapping(FlowGraphBlockNames.Normalize),\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n isValid: { name: \"isValid\", gltfType: \"bool\" },\n },\n },\n },\n \"math/dot\": getSimpleInputMapping(FlowGraphBlockNames.Dot, [\"a\", \"b\"]),\n \"math/cross\": getSimpleInputMapping(FlowGraphBlockNames.Cross, [\"a\", \"b\"]),\n \"math/rotate2D\": {\n blocks: [FlowGraphBlockNames.Rotate2D],\n inputs: {\n values: {\n a: { name: \"a\" },\n angle: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n },\n \"math/rotate3D\": {\n blocks: [FlowGraphBlockNames.Rotate3D],\n inputs: {\n values: {\n a: { name: \"a\" },\n rotation: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n },\n \"math/transform\": {\n // glTF transform is vectorN with matrixN\n blocks: [FlowGraphBlockNames.TransformVector],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n },\n \"math/combine2\": {\n blocks: [FlowGraphBlockNames.CombineVector2],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float2\" },\n },\n },\n },\n \"math/combine3\": {\n blocks: [FlowGraphBlockNames.CombineVector3],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float3\" },\n },\n },\n },\n \"math/combine4\": {\n blocks: [FlowGraphBlockNames.CombineVector4],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4\" },\n },\n },\n },\n // one input, N outputs! outputs named using numbers.\n \"math/extract2\": {\n blocks: [FlowGraphBlockNames.ExtractVector2],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n },\n },\n },\n \"math/extract3\": {\n blocks: [FlowGraphBlockNames.ExtractVector3],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n },\n },\n },\n \"math/extract4\": {\n blocks: [FlowGraphBlockNames.ExtractVector4],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n },\n },\n },\n \"math/transpose\": getSimpleInputMapping(FlowGraphBlockNames.Transpose),\n \"math/determinant\": getSimpleInputMapping(FlowGraphBlockNames.Determinant),\n \"math/inverse\": {\n ...getSimpleInputMapping(FlowGraphBlockNames.InvertMatrix),\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n isValid: { name: \"isValid\", gltfType: \"bool\" },\n },\n },\n },\n \"math/matMul\": getSimpleInputMapping(FlowGraphBlockNames.MatrixMultiplication, [\"a\", \"b\"]),\n \"math/matCompose\": {\n blocks: [FlowGraphBlockNames.MatrixCompose],\n inputs: {\n values: {\n translation: { name: \"position\", gltfType: \"float3\" },\n rotation: { name: \"rotationQuaternion\", gltfType: \"float4\" },\n scale: { name: \"scaling\", gltfType: \"float3\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4x4\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n const d = serializedObjects[0].dataInputs.find((input) => input.name === \"rotationQuaternion\");\n if (!d) {\n throw new Error(\"Rotation quaternion input not found\");\n }\n // if value is defined, set the type to quaternion\n if (context._connectionValues[d.uniqueId]) {\n context._connectionValues[d.uniqueId].type = FlowGraphTypes.Quaternion;\n }\n return serializedObjects;\n },\n },\n \"math/matDecompose\": {\n blocks: [FlowGraphBlockNames.MatrixDecompose],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n translation: { name: \"position\" },\n rotation: { name: \"rotationQuaternion\" },\n scale: { name: \"scaling\" },\n scaling: { name: \"scaling\", compatibilityOnly: true },\n isValid: { name: \"isValid\", compatibilityOnly: true },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n // KHR_interactivity step 4 of the matDecompose algorithm requires a non-decomposable matrix to still\n // report the extracted translation and the raw column lengths, instead of the type defaults the\n // FlowGraph block emits by default. The block has no `isValid` output in glTF, so the caller can only\n // observe those values.\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.keepDegenerateComponents = true;\n return serializedObjects;\n },\n },\n \"math/quatConjugate\": getSimpleInputMapping(FlowGraphBlockNames.Conjugate, [\"a\"]),\n \"math/quatMul\": {\n blocks: [FlowGraphBlockNames.Multiply],\n inputs: {\n values: {\n a: { name: \"a\", gltfType: \"float4\" },\n b: { name: \"b\", gltfType: \"float4\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.type = FlowGraphTypes.Quaternion;\n return serializedObjects;\n },\n },\n \"math/quatAngleBetween\": getSimpleInputMapping(FlowGraphBlockNames.AngleBetween, [\"a\", \"b\"]),\n \"math/quatFromAxisAngle\": {\n blocks: [FlowGraphBlockNames.QuaternionFromAxisAngle],\n inputs: {\n values: {\n axis: { name: \"a\", gltfType: \"float3\" },\n angle: { name: \"b\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4\" },\n },\n },\n },\n \"math/quatToAxisAngle\": {\n blocks: [FlowGraphBlockNames.AxisAngleFromQuaternion],\n inputs: {\n values: {\n a: { name: \"a\", gltfType: \"float4\" },\n },\n },\n outputs: {\n values: {\n axis: { name: \"axis\", gltfType: \"float3\" },\n angle: { name: \"angle\", gltfType: \"float\" },\n },\n },\n },\n \"math/quatFromDirections\": {\n ...getSimpleInputMapping(FlowGraphBlockNames.QuaternionFromDirections, [\"a\", \"b\"]),\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4\" },\n },\n },\n },\n \"math/quatFromUpForward\": {\n blocks: [FlowGraphBlockNames.QuaternionFromUpForward],\n inputs: {\n values: {\n up: { name: \"a\", gltfType: \"float3\" },\n forward: { name: \"b\", gltfType: \"float3\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4\" },\n },\n },\n },\n // Tait–Bryan intrinsic Euler angles (x/y/z, in radians) to a rotation quaternion. The rotation\n // order is selected by the `order` configuration string (default `yxz`).\n \"math/quatFromAngles\": {\n blocks: [FlowGraphBlockNames.QuaternionFromAngles],\n configuration: {\n order: {\n name: \"order\",\n defaultValue: [\"yxz\"],\n configurationType: \"string\",\n invalidUsesDefault: true,\n allowedValues: [\"xyz\", \"xzy\", \"yxz\", \"yzx\", \"zxy\", \"zyx\"],\n },\n },\n inputs: {\n values: {\n x: { name: \"a\", gltfType: \"number\" },\n y: { name: \"b\", gltfType: \"number\" },\n z: { name: \"c\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4\" },\n },\n },\n },\n \"math/combine2x2\": {\n blocks: [FlowGraphBlockNames.CombineMatrix2D],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float2x2\" },\n },\n },\n },\n \"math/extract2x2\": {\n blocks: [FlowGraphBlockNames.ExtractMatrix2D],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"float2x2\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n },\n },\n },\n \"math/combine3x3\": {\n blocks: [FlowGraphBlockNames.CombineMatrix3D],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n e: { name: \"input_4\", gltfType: \"number\" },\n f: { name: \"input_5\", gltfType: \"number\" },\n g: { name: \"input_6\", gltfType: \"number\" },\n h: { name: \"input_7\", gltfType: \"number\" },\n i: { name: \"input_8\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float3x3\" },\n },\n },\n },\n \"math/extract3x3\": {\n blocks: [FlowGraphBlockNames.ExtractMatrix3D],\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"float3x3\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n \"4\": { name: \"output_4\" },\n \"5\": { name: \"output_5\" },\n \"6\": { name: \"output_6\" },\n \"7\": { name: \"output_7\" },\n \"8\": { name: \"output_8\" },\n },\n },\n },\n \"math/combine4x4\": {\n blocks: [FlowGraphBlockNames.CombineMatrix],\n inputs: {\n values: {\n a: { name: \"input_0\", gltfType: \"number\" },\n b: { name: \"input_1\", gltfType: \"number\" },\n c: { name: \"input_2\", gltfType: \"number\" },\n d: { name: \"input_3\", gltfType: \"number\" },\n e: { name: \"input_4\", gltfType: \"number\" },\n f: { name: \"input_5\", gltfType: \"number\" },\n g: { name: \"input_6\", gltfType: \"number\" },\n h: { name: \"input_7\", gltfType: \"number\" },\n i: { name: \"input_8\", gltfType: \"number\" },\n j: { name: \"input_9\", gltfType: \"number\" },\n k: { name: \"input_10\", gltfType: \"number\" },\n l: { name: \"input_11\", gltfType: \"number\" },\n m: { name: \"input_12\", gltfType: \"number\" },\n n: { name: \"input_13\", gltfType: \"number\" },\n o: { name: \"input_14\", gltfType: \"number\" },\n p: { name: \"input_15\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", gltfType: \"float4x4\" },\n },\n },\n },\n \"math/extract4x4\": {\n blocks: [FlowGraphBlockNames.ExtractMatrix],\n configuration: {},\n inputs: {\n values: {\n a: { name: \"input\", gltfType: \"number\" },\n },\n },\n outputs: {\n values: {\n \"0\": { name: \"output_0\" },\n \"1\": { name: \"output_1\" },\n \"2\": { name: \"output_2\" },\n \"3\": { name: \"output_3\" },\n \"4\": { name: \"output_4\" },\n \"5\": { name: \"output_5\" },\n \"6\": { name: \"output_6\" },\n \"7\": { name: \"output_7\" },\n \"8\": { name: \"output_8\" },\n \"9\": { name: \"output_9\" },\n \"10\": { name: \"output_10\" },\n \"11\": { name: \"output_11\" },\n \"12\": { name: \"output_12\" },\n \"13\": { name: \"output_13\" },\n \"14\": { name: \"output_14\" },\n \"15\": { name: \"output_15\" },\n },\n },\n },\n \"math/not\": {\n blocks: [FlowGraphBlockNames.BitwiseNot],\n inputs: {\n values: {\n a: { name: \"a\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketIn = serializedObjects[0].dataInputs[0];\n serializedObjects[0].config.valueType = context._connectionValues[socketIn.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/and\": {\n blocks: [FlowGraphBlockNames.BitwiseAnd],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketInA = serializedObjects[0].dataInputs[0];\n const socketInB = serializedObjects[0].dataInputs[1];\n serializedObjects[0].config.valueType =\n context._connectionValues[socketInA.uniqueId]?.type ?? context._connectionValues[socketInB.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/or\": {\n blocks: [FlowGraphBlockNames.BitwiseOr],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketInA = serializedObjects[0].dataInputs[0];\n const socketInB = serializedObjects[0].dataInputs[1];\n serializedObjects[0].config.valueType =\n context._connectionValues[socketInA.uniqueId]?.type ?? context._connectionValues[socketInB.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/xor\": {\n blocks: [FlowGraphBlockNames.BitwiseXor],\n inputs: {\n values: {\n a: { name: \"a\" },\n b: { name: \"b\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: \"a\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _parser, serializedObjects, context) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n // try to infer the type or fallback to Integer\n const socketInA = serializedObjects[0].dataInputs[0];\n const socketInB = serializedObjects[0].dataInputs[1];\n serializedObjects[0].config.valueType =\n context._connectionValues[socketInA.uniqueId]?.type ?? context._connectionValues[socketInB.uniqueId]?.type ?? FlowGraphTypes.Integer;\n return serializedObjects;\n },\n },\n \"math/asr\": getSimpleInputMapping(FlowGraphBlockNames.BitwiseRightShift, [\"a\", \"b\"]),\n \"math/lsl\": getSimpleInputMapping(FlowGraphBlockNames.BitwiseLeftShift, [\"a\", \"b\"]),\n \"math/clz\": getSimpleInputMapping(FlowGraphBlockNames.LeadingZeros),\n \"math/ctz\": getSimpleInputMapping(FlowGraphBlockNames.TrailingZeros),\n \"math/popcnt\": getSimpleInputMapping(FlowGraphBlockNames.OneBitsCounter),\n \"math/rad\": getSimpleInputMapping(FlowGraphBlockNames.DegToRad),\n \"math/deg\": getSimpleInputMapping(FlowGraphBlockNames.RadToDeg),\n \"type/boolToInt\": getSimpleInputMapping(FlowGraphBlockNames.BooleanToInt),\n \"type/boolToFloat\": getSimpleInputMapping(FlowGraphBlockNames.BooleanToFloat),\n \"type/intToBool\": getSimpleInputMapping(FlowGraphBlockNames.IntToBoolean),\n \"type/intToFloat\": getSimpleInputMapping(FlowGraphBlockNames.IntToFloat),\n \"type/floatToInt\": getSimpleInputMapping(FlowGraphBlockNames.FloatToInt),\n \"type/floatToBool\": getSimpleInputMapping(FlowGraphBlockNames.FloatToBoolean),\n\n // flows\n \"flow/sequence\": {\n blocks: [FlowGraphBlockNames.Sequence],\n outputs: {\n flows: {\n \"[segment]\": { name: \"$1\" },\n },\n },\n extraProcessor(gltfBlock, _declaration, _mapping, _arrays, serializedObjects) {\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.outputSignalCount = Object.keys(gltfBlock.flows || []).length;\n serializedObject.signalOutputs.forEach((output, index) => {\n output.name = \"out_\" + index;\n });\n return serializedObjects;\n },\n },\n \"flow/branch\": {\n blocks: [FlowGraphBlockNames.Branch],\n inputs: {\n values: {\n condition: { name: \"condition\", gltfType: \"boolean\" },\n },\n },\n outputs: {\n flows: {\n true: { name: \"onTrue\" },\n false: { name: \"onFalse\" },\n },\n },\n },\n \"flow/switch\": {\n blocks: [FlowGraphBlockNames.Switch],\n configuration: {\n cases: {\n name: \"cases\",\n isArray: true,\n inOptions: true,\n defaultValue: [],\n configurationType: \"int[]\",\n invalidUsesDefault: true,\n generatesOutputFlowSockets: true,\n uniqueValues: true,\n },\n },\n inputs: {\n values: {\n selection: { name: \"case\" },\n default: { name: \"default\" },\n },\n },\n outputs: {\n flows: {\n default: { name: \"default\" },\n \"[segment]\": { name: \"$1\" },\n },\n },\n validation(gltfBlock) {\n const cases = gltfBlock.configuration?.cases;\n if (cases && cases.value) {\n const onlyIntegers = cases.value.every(\n (caseValue) => typeof caseValue === \"number\" && Number.isInteger(caseValue) && caseValue >= -2147483648 && caseValue <= 2147483647\n );\n if (!onlyIntegers) {\n Logger.Warn(\"Switch cases should be integers. Using empty array instead.\");\n cases.value = [] as number[];\n return { valid: true };\n }\n // check for duplicates\n const uniqueCases = new Set(cases.value);\n cases.value = Array.from(uniqueCases) as number[];\n }\n return { valid: true };\n },\n extraProcessor(gltfBlock, declaration, _mapping, _arrays, serializedObjects) {\n // convert all names of output flow to out_$1 apart from \"default\"\n if (declaration.op !== \"flow/switch\" || !gltfBlock.flows || Object.keys(gltfBlock.flows).length === 0) {\n throw new Error(\"Switch should have a single configuration object, the cases array\");\n }\n const serializedObject = serializedObjects[0];\n serializedObject.signalOutputs.forEach((output) => {\n if (output.name !== \"default\") {\n output.name = \"out_\" + output.name;\n }\n });\n return serializedObjects;\n },\n },\n \"flow/while\": {\n blocks: [FlowGraphBlockNames.WhileLoop],\n inputs: {\n values: {\n condition: { name: \"condition\", gltfType: \"boolean\" },\n },\n },\n outputs: {\n flows: {\n loopBody: { name: \"executionFlow\" },\n completed: { name: \"completed\" },\n },\n },\n },\n \"flow/for\": {\n blocks: [FlowGraphBlockNames.ForLoop],\n configuration: {\n initialIndex: {\n name: \"initialIndex\",\n gltfType: \"int\",\n inOptions: true,\n defaultValue: 0,\n configurationType: \"int\",\n invalidUsesDefault: true,\n },\n },\n inputs: {\n values: {\n startIndex: { name: \"startIndex\", gltfType: \"int\" },\n endIndex: { name: \"endIndex\", gltfType: \"int\" },\n },\n },\n outputs: {\n values: {\n index: { name: \"index\" },\n },\n flows: {\n loopBody: { name: \"executionFlow\" },\n completed: { name: \"completed\" },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects) {\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.incrementIndexWhenLoopDone = true;\n // KHR_interactivity assets may run large finite loops (e.g. the math/random Monte Carlo\n // conformance asset iterates 10k times), well above the block's conservative default guard.\n // Raise the cap for interactivity for-loops only, per block, instead of mutating the\n // process-wide FlowGraphForLoopBlock.MaxLoopIterations that every other FlowGraph relies on.\n serializedObject.config.maxLoopIterations = InteractivityForLoopMaxIterations;\n return serializedObjects;\n },\n },\n \"flow/doN\": {\n blocks: [FlowGraphBlockNames.DoN],\n configuration: {},\n inputs: {\n values: {\n n: { name: \"maxExecutions\", gltfType: \"int\" },\n },\n flows: {\n reset: { name: \"reset\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n values: {\n currentCount: { name: \"executionCount\" },\n },\n },\n },\n \"flow/multiGate\": {\n blocks: [FlowGraphBlockNames.MultiGate],\n inputs: {\n flows: {\n reset: { name: \"reset\" },\n },\n },\n configuration: {\n isRandom: {\n name: \"isRandom\",\n gltfType: \"boolean\",\n inOptions: true,\n defaultValue: false,\n configurationType: \"bool\",\n invalidUsesDefault: true,\n configurationGroup: \"multiGate\",\n },\n isLoop: {\n name: \"isLoop\",\n gltfType: \"boolean\",\n inOptions: true,\n defaultValue: false,\n configurationType: \"bool\",\n invalidUsesDefault: true,\n configurationGroup: \"multiGate\",\n },\n },\n outputs: {\n flows: {\n \"[segment]\": { name: \"$1\" },\n },\n values: {\n lastIndex: { name: \"lastIndex\", gltfType: \"int\" },\n },\n },\n extraProcessor(gltfBlock, declaration, _mapping, _arrays, serializedObjects) {\n if (declaration.op !== \"flow/multiGate\") {\n throw new Error(\"Invalid operation for MultiGate mapping\");\n }\n const serializedObject = serializedObjects[0];\n serializedObject.config ||= {};\n serializedObject.config.outputSignalCount = Object.keys(gltfBlock.flows ?? {}).length;\n serializedObject.signalOutputs.forEach((output, index) => {\n output.name = \"out_\" + index;\n });\n return serializedObjects;\n },\n },\n \"flow/waitAll\": {\n blocks: [FlowGraphBlockNames.WaitAll],\n configuration: {\n inputFlows: {\n name: \"inputSignalCount\",\n gltfType: \"number\",\n inOptions: true,\n defaultValue: [0],\n configurationType: \"int\",\n invalidUsesDefault: true,\n minimum: 0,\n maximum: 64,\n generatesInputFlowSockets: true,\n },\n },\n inputs: {\n flows: {\n reset: { name: \"reset\" },\n \"[segment]\": { name: \"in_$1\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n completed: { name: \"completed\" },\n },\n values: {\n remainingInputs: { name: \"remainingInputs\", gltfType: \"int\" },\n },\n },\n validation(gltfBlock) {\n const inputFlowsConfiguration = gltfBlock.configuration?.inputFlows?.value;\n const inputFlows = inputFlowsConfiguration?.[0];\n if (inputFlowsConfiguration?.length !== 1 || typeof inputFlows !== \"number\" || !Number.isInteger(inputFlows) || inputFlows < 0 || inputFlows > 64) {\n gltfBlock.configuration = gltfBlock.configuration || {\n inputFlows: { value: [0] },\n };\n gltfBlock.configuration.inputFlows.value = [0];\n }\n return { valid: true };\n },\n },\n \"flow/throttle\": {\n blocks: [FlowGraphBlockNames.Throttle],\n inputs: {\n values: {\n duration: { name: \"duration\", gltfType: \"number\" },\n },\n flows: {\n reset: { name: \"reset\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n },\n values: {\n lastRemainingTime: { name: \"lastRemainingTime\", gltfType: \"number\" },\n },\n },\n },\n \"flow/setDelay\": {\n blocks: [FlowGraphBlockNames.SetDelay],\n inputs: {\n values: {\n duration: { name: \"duration\", gltfType: \"number\" },\n },\n flows: {\n cancel: { name: \"cancel\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n done: { name: \"done\" },\n },\n values: {\n // New spec renames this output to `lastDelay` (ref). Internally we still produce a\n // FlowGraphInteger; the index is unique per delay so it acts as the opaque handle.\n lastDelay: { name: \"lastDelayIndex\" },\n lastDelayIndex: { name: \"lastDelayIndex\", compatibilityOnly: true },\n },\n },\n },\n \"flow/cancelDelay\": {\n blocks: [FlowGraphBlockNames.CancelDelay],\n inputs: {\n values: {\n delay: { name: \"delayIndex\", gltfType: \"ref\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n },\n \"variable/get\": {\n blocks: [FlowGraphBlockNames.GetVariable],\n validation(gltfBlock) {\n if (!gltfBlock.configuration?.variable?.value) {\n Logger.Error(\"Variable get block should have a variable configuration\");\n return { valid: false, error: \"Variable get block should have a variable configuration\" };\n }\n return { valid: true };\n },\n configuration: {\n variable: {\n name: \"variable\",\n gltfType: \"number\",\n configurationType: \"int\",\n required: true,\n indexSource: \"variables\",\n flowGraphType: \"string\",\n inOptions: true,\n isVariable: true,\n dataTransformer(index, parser) {\n return parser.getVariableName(index);\n },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n },\n \"variable/set\": {\n blocks: [FlowGraphBlockNames.SetVariable],\n inputs: {\n values: {\n \"[segment]\": { name: \"$1\" },\n },\n },\n configuration: {\n variables: {\n name: \"variables\",\n gltfType: \"number\",\n configurationType: \"int[]\",\n required: true,\n indexSource: \"variables\",\n minItems: 1,\n generatesInputValueSockets: true,\n flowGraphType: \"string\",\n inOptions: true,\n isArray: true,\n dataTransformer(index: number[], parser): string[] {\n return index.map((i) => parser.getVariableName(i));\n },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\", compatibilityOnly: true },\n },\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n // variable/get configuration\n const serializedGetVariable = serializedObjects[0];\n serializedGetVariable.dataInputs.forEach((input) => {\n input.name = parser.getVariableName(+input.name);\n });\n\n return serializedObjects;\n },\n },\n \"variable/interpolate\": {\n blocks: [\n FlowGraphBlockNames.ValueInterpolation,\n FlowGraphBlockNames.Context,\n FlowGraphBlockNames.PlayAnimation,\n FlowGraphBlockNames.BezierCurveEasing,\n FlowGraphBlockNames.GetVariable,\n ],\n configuration: {\n variable: {\n name: \"propertyName\",\n configurationType: \"int\",\n required: true,\n indexSource: \"variables\",\n inOptions: true,\n isVariable: true,\n dataTransformer(index, parser) {\n return parser.getVariableName(index);\n },\n },\n useSlerp: {\n name: \"animationType\",\n configurationType: \"bool\",\n required: true,\n inOptions: true,\n dataTransformer(value) {\n return value === true ? FlowGraphTypes.Quaternion : undefined;\n },\n },\n },\n inputs: {\n values: {\n value: { name: \"value_1\" },\n duration: { name: \"duration_1\", gltfType: \"number\" },\n p1: { name: \"controlPoint1\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n p2: { name: \"controlPoint2\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n },\n flows: {\n in: { name: \"in\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n outputs: {\n flows: {\n err: { name: \"error\", toBlock: FlowGraphBlockNames.PlayAnimation },\n out: { name: \"out\", toBlock: FlowGraphBlockNames.PlayAnimation },\n done: { name: \"done\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"userVariables\",\n inputBlockIndex: 2,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"animation\",\n output: \"animation\",\n inputBlockIndex: 2,\n outputBlockIndex: 0,\n isVariable: true,\n },\n {\n input: \"easingFunction\",\n output: \"easingFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 3,\n isVariable: true,\n },\n {\n input: \"value_0\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 4,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n // is useSlerp is used, animationType should be set to be quaternion!\n const serializedValueInterpolation = serializedObjects[0];\n const propertyIndex = gltfBlock.configuration?.variable.value?.[0];\n if (typeof propertyIndex !== \"number\") {\n Logger.Error(\"Variable index is not defined for variable interpolation block\");\n throw new Error(\"Variable index is not defined for variable interpolation block\");\n }\n const variable = parser.arrays.staticVariables[propertyIndex];\n // if not set by useSlerp\n if (typeof serializedValueInterpolation.config?.animationType?.value === \"undefined\") {\n serializedValueInterpolation.config ||= {};\n serializedValueInterpolation.config.animationType ||= {};\n serializedValueInterpolation.config.animationType.value = getAnimationTypeByFlowGraphType(variable.type);\n }\n\n // variable/get configuration\n const serializedGetVariable = serializedObjects[4];\n serializedGetVariable.config ||= {};\n serializedGetVariable.config.variable ||= {};\n serializedGetVariable.config.variable.value = parser.getVariableName(propertyIndex);\n\n return serializedObjects;\n },\n },\n \"pointer/get\": {\n blocks: [FlowGraphBlockNames.GetProperty, FlowGraphBlockNames.JsonPointerParser],\n validation: (node) => ValidateJsonPointerTemplate(node),\n configuration: {\n pointer: { name: \"jsonPointer\", toBlock: FlowGraphBlockNames.JsonPointerParser, configurationType: \"string\", required: true, pointerTemplate: true },\n type: {\n name: \"type\",\n configurationType: \"int\",\n required: true,\n validationOnly: true,\n indexSource: \"types\",\n },\n },\n inputs: {\n values: {\n \"[segment]\": { name: \"$1\", toBlock: FlowGraphBlockNames.JsonPointerParser },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n isValid: { name: \"isValid\", gltfType: \"bool\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"object\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"propertyName\",\n output: \"propertyName\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"customGetFunction\",\n output: \"getFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n serializedObjects.forEach((serializedObject) => {\n // check if it is the json pointer block\n if (serializedObject.className === FlowGraphBlockNames.JsonPointerParser) {\n serializedObject.config ||= {};\n serializedObject.config.outputValue = true;\n }\n });\n return serializedObjects;\n },\n },\n \"pointer/set\": {\n blocks: [FlowGraphBlockNames.SetProperty, FlowGraphBlockNames.JsonPointerParser],\n validation: (node) => ValidateJsonPointerTemplate(node, new Set([\"value\"])),\n configuration: {\n pointer: { name: \"jsonPointer\", toBlock: FlowGraphBlockNames.JsonPointerParser, configurationType: \"string\", required: true, pointerTemplate: true },\n type: {\n name: \"type\",\n configurationType: \"int\",\n required: true,\n validationOnly: true,\n indexSource: \"types\",\n },\n },\n inputs: {\n values: {\n // must be defined due to the array taking over\n value: { name: \"value\" },\n \"[segment]\": { name: \"$1\", toBlock: FlowGraphBlockNames.JsonPointerParser },\n },\n },\n outputs: {\n flows: {\n err: { name: \"error\" },\n out: { name: \"out\", compatibilityOnly: true },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"object\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"propertyName\",\n output: \"propertyName\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"customSetFunction\",\n output: \"setFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n serializedObjects.forEach((serializedObject) => {\n // check if it is the json pointer block\n if (serializedObject.className === FlowGraphBlockNames.JsonPointerParser) {\n serializedObject.config ||= {};\n serializedObject.config.outputValue = true;\n }\n });\n return serializedObjects;\n },\n },\n \"pointer/interpolate\": {\n // interpolate, parse the pointer and play the animation generated. 3 blocks!\n blocks: [FlowGraphBlockNames.ValueInterpolation, FlowGraphBlockNames.JsonPointerParser, FlowGraphBlockNames.PlayAnimation, FlowGraphBlockNames.BezierCurveEasing],\n validation: (node) => ValidateJsonPointerTemplate(node, new Set([\"value\", \"duration\", \"p1\", \"p2\"])),\n configuration: {\n pointer: { name: \"jsonPointer\", toBlock: FlowGraphBlockNames.JsonPointerParser, configurationType: \"string\", required: true, pointerTemplate: true },\n type: {\n name: \"type\",\n configurationType: \"int\",\n required: true,\n validationOnly: true,\n indexSource: \"types\",\n allowedSignatures: [\"float\", \"float2\", \"float3\", \"float4\", \"float2x2\", \"float3x3\", \"float4x4\"],\n },\n },\n inputs: {\n values: {\n value: { name: \"value_1\" },\n \"[segment]\": { name: \"$1\", toBlock: FlowGraphBlockNames.JsonPointerParser },\n duration: { name: \"duration_1\", gltfType: \"number\" /*, inOptions: true */ },\n p1: { name: \"controlPoint1\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n p2: { name: \"controlPoint2\", toBlock: FlowGraphBlockNames.BezierCurveEasing },\n },\n flows: {\n in: { name: \"in\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n outputs: {\n flows: {\n err: { name: \"error\", toBlock: FlowGraphBlockNames.PlayAnimation },\n out: { name: \"out\", toBlock: FlowGraphBlockNames.PlayAnimation },\n done: { name: \"done\", toBlock: FlowGraphBlockNames.PlayAnimation },\n },\n },\n interBlockConnectors: [\n {\n input: \"object\",\n output: \"object\",\n inputBlockIndex: 2,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"propertyName\",\n output: \"propertyName\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"customBuildAnimation\",\n output: \"generateAnimationsFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"animation\",\n output: \"animation\",\n inputBlockIndex: 2,\n outputBlockIndex: 0,\n isVariable: true,\n },\n {\n input: \"easingFunction\",\n output: \"easingFunction\",\n inputBlockIndex: 0,\n outputBlockIndex: 3,\n isVariable: true,\n },\n {\n input: \"value_0\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n ],\n extraProcessor(gltfBlock, _declaration, _mapping, parser, serializedObjects) {\n serializedObjects.forEach((serializedObject) => {\n // check if it is the json pointer block\n if (serializedObject.className === FlowGraphBlockNames.JsonPointerParser) {\n serializedObject.config ||= {};\n serializedObject.config.outputValue = true;\n } else if (serializedObject.className === FlowGraphBlockNames.ValueInterpolation) {\n serializedObject.config ||= {};\n Object.keys(gltfBlock.values || []).forEach((key) => {\n const value = gltfBlock.values?.[key];\n if (key === \"value\" && value) {\n // get the type of the value\n const type = value.type;\n if (type !== undefined) {\n serializedObject.config.animationType = parser.arrays.types[type].flowGraphType;\n }\n }\n });\n }\n });\n return serializedObjects;\n },\n },\n \"animation/start\": {\n blocks: [FlowGraphBlockNames.PlayAnimation, FlowGraphBlockNames.ArrayIndex, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\n inputs: {\n values: {\n animation: { name: \"index\", gltfType: \"ref\", toBlock: FlowGraphBlockNames.ArrayIndex },\n speed: { name: \"speed\", gltfType: \"number\" },\n startTime: {\n name: \"from\",\n gltfType: \"number\",\n convertConnectedTimeToFrames: true,\n dataTransformer: (time: number[], parser) => [time[0] * parser._animationTargetFps],\n },\n endTime: {\n name: \"to\",\n gltfType: \"number\",\n convertConnectedTimeToFrames: true,\n dataTransformer: (time: number[], parser) => [time[0] * parser._animationTargetFps],\n },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n done: { name: \"done\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"animationGroup\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"array\",\n output: \"animationGroups\",\n inputBlockIndex: 1,\n outputBlockIndex: 2,\n isVariable: true,\n },\n ],\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects, _context, globalGLTF) {\n const playAnimationBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.PlayAnimation);\n if (playAnimationBlock) {\n playAnimationBlock.config.useVirtualTimeline = true;\n }\n const arrayIndexBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.ArrayIndex);\n if (arrayIndexBlock) {\n arrayIndexBlock.config.referenceCollection = \"animations\";\n }\n // add the glTF to the configuration of the last serialized object\n const serializedObject = serializedObjects[serializedObjects.length - 1];\n serializedObject.config ||= {};\n serializedObject.config.glTF = globalGLTF;\n return serializedObjects;\n },\n },\n \"animation/stop\": {\n blocks: [FlowGraphBlockNames.StopAnimation, FlowGraphBlockNames.ArrayIndex, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\n inputs: {\n values: {\n animation: { name: \"index\", gltfType: \"ref\", toBlock: FlowGraphBlockNames.ArrayIndex },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"animationGroup\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"array\",\n output: \"animationGroups\",\n inputBlockIndex: 1,\n outputBlockIndex: 2,\n isVariable: true,\n },\n ],\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects, _context, globalGLTF) {\n const stopAnimationBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.StopAnimation);\n if (stopAnimationBlock) {\n stopAnimationBlock.config.skipOnAnimationEnd = true;\n }\n const arrayIndexBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.ArrayIndex);\n if (arrayIndexBlock) {\n arrayIndexBlock.config.referenceCollection = \"animations\";\n }\n // add the glTF to the configuration of the last serialized object\n const serializedObject = serializedObjects[serializedObjects.length - 1];\n serializedObject.config ||= {};\n serializedObject.config.glTF = globalGLTF;\n return serializedObjects;\n },\n },\n \"animation/stopAt\": {\n blocks: [FlowGraphBlockNames.StopAnimation, FlowGraphBlockNames.ArrayIndex, \"KHR_interactivity/FlowGraphGLTFDataProvider\"],\n configuration: {},\n inputs: {\n values: {\n animation: { name: \"index\", gltfType: \"ref\", toBlock: FlowGraphBlockNames.ArrayIndex },\n stopTime: {\n name: \"stopAtFrame\",\n gltfType: \"number\",\n convertConnectedTimeToFrames: true,\n dataTransformer: (time: number[], parser) => [time[0] * parser._animationTargetFps],\n },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n err: { name: \"error\" },\n done: { name: \"done\" },\n },\n },\n interBlockConnectors: [\n {\n input: \"animationGroup\",\n output: \"value\",\n inputBlockIndex: 0,\n outputBlockIndex: 1,\n isVariable: true,\n },\n {\n input: \"array\",\n output: \"animationGroups\",\n inputBlockIndex: 1,\n outputBlockIndex: 2,\n isVariable: true,\n },\n ],\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects, _context, globalGLTF) {\n const stopAnimationBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.StopAnimation);\n if (stopAnimationBlock) {\n stopAnimationBlock.config.useVirtualStopAt = true;\n stopAnimationBlock.config.skipOnAnimationEnd = true;\n }\n const arrayIndexBlock = serializedObjects.find((block) => block.className === FlowGraphBlockNames.ArrayIndex);\n if (arrayIndexBlock) {\n arrayIndexBlock.config.referenceCollection = \"animations\";\n }\n // add the glTF to the configuration of the last serialized object\n const serializedObject = serializedObjects[serializedObjects.length - 1];\n serializedObject.config ||= {};\n serializedObject.config.glTF = globalGLTF;\n return serializedObjects;\n },\n },\n \"math/switch\": {\n blocks: [FlowGraphBlockNames.DataSwitch],\n configuration: {\n cases: {\n name: \"cases\",\n isArray: true,\n inOptions: true,\n defaultValue: [],\n configurationType: \"int[]\",\n invalidUsesDefault: true,\n generatesCaseInputValueSockets: true,\n uniqueValues: true,\n },\n },\n inputs: {\n values: {\n selection: { name: \"case\", gltfType: \"int\" },\n default: { name: \"default\" },\n \"[case]\": { name: \"$1\" },\n },\n },\n outputs: {\n values: {\n value: { name: \"value\" },\n },\n },\n validation(gltfBlock) {\n const cases = gltfBlock.configuration?.cases;\n if (cases && cases.value) {\n const onlyIntegers = cases.value.every((caseValue) => {\n // case value should be an integer. Since Number.isInteger(1.0) is true, we need to check if toString has only digits.\n return typeof caseValue === \"number\" && /^-?\\d+$/.test(caseValue.toString());\n });\n if (!onlyIntegers) {\n Logger.Warn(\"Switch cases should be integers. Using empty array instead.\");\n cases.value = [] as number[];\n return { valid: true };\n }\n // check for duplicates\n const uniqueCases = new Set(cases.value);\n cases.value = Array.from(uniqueCases) as number[];\n }\n return { valid: true };\n },\n extraProcessor(_gltfBlock, _declaration, _mapping, _arrays, serializedObjects) {\n const serializedObject = serializedObjects[0];\n serializedObject.dataInputs.forEach((input) => {\n if (input.name !== \"default\" && input.name !== \"case\") {\n input.name = \"in_\" + input.name;\n }\n });\n serializedObject.config ||= {};\n serializedObject.config.treatCasesAsIntegers = true;\n return serializedObjects;\n },\n },\n \"debug/log\": {\n blocks: [FlowGraphBlockNames.ConsoleLog],\n inputs: {\n flows: {\n in: { name: \"in\" },\n },\n values: {\n \"[parameter]\": { name: \"$1\" },\n },\n },\n outputs: {\n flows: {\n out: { name: \"out\" },\n },\n },\n configuration: {\n severity: {\n name: \"severity\",\n configurationType: \"int\",\n defaultValue: 0,\n invalidUsesDefault: true,\n validationOnly: true,\n configurationGroup: \"debugLog\",\n },\n message: {\n name: \"messageTemplate\",\n configurationType: \"string\",\n defaultValue: \"\",\n invalidUsesDefault: true,\n inOptions: true,\n configurationGroup: \"debugLog\",\n debugLogTemplate: true,\n },\n },\n },\n};\n\nfunction getSimpleInputMapping(type: FlowGraphBlockNames, inputs: string[] = [\"a\"], inferType?: boolean): IGLTFToFlowGraphMapping {\n return {\n blocks: [type],\n inputs: {\n values: inputs.reduce(\n (acc, input) => {\n acc[input] = { name: input };\n return acc;\n },\n {} as { [key: string]: { name: string } }\n ),\n },\n outputs: {\n values: {\n value: { name: \"value\", typeSourceInput: inputs[0] },\n },\n },\n extraProcessor(gltfBlock, _declaration, _mapping, _parser, serializedObjects) {\n if (inferType) {\n // configure it to work the way glTF specifies\n serializedObjects[0].config ||= {};\n serializedObjects[0].config.preventIntegerFloatArithmetic = true;\n // try to infer the type or fallback to Integer\n // check the gltf block for the inputs, see if they have a type\n let type = -1;\n Object.keys(gltfBlock.values || {}).find((value) => {\n if (gltfBlock.values?.[value].type !== undefined) {\n type = gltfBlock.values[value].type;\n return true;\n }\n return false;\n });\n if (type !== -1) {\n serializedObjects[0].config.type = _parser.arrays.types[type].flowGraphType;\n }\n }\n return serializedObjects;\n },\n validation(gltfBlock) {\n if (inferType) {\n // make sure types are the same\n return ValidateTypes(gltfBlock);\n }\n return { valid: true };\n },\n };\n}\n\nfunction ValidateTypes(gltfBlock: IKHRInteractivity_Node): { valid: boolean; error?: string } {\n if (gltfBlock.values) {\n const types = Object.keys(gltfBlock.values)\n .map((key) => gltfBlock.values![key].type)\n .filter((type) => type !== undefined);\n const allSameType = types.every((type) => type === types[0]);\n if (!allSameType) {\n return { valid: false, error: \"All inputs must be of the same type\" };\n }\n }\n return { valid: true };\n}\n\n/**\n * Returns whether a literal path segment has an odd number of consecutive occurrences of any bracket character.\n * Brackets used literally inside a path segment must be doubled, so an odd run means the segment is malformed.\n * @param segment the literal path segment\n * @returns true when the segment contains an odd run of brackets\n */\nfunction HasOddBracketRun(segment: string): boolean {\n for (let index = 0; index < segment.length; index++) {\n const character = segment[index];\n if (\"[]{}\".indexOf(character) === -1) {\n continue;\n }\n\n let runLength = 1;\n while (segment[index + runLength] === character) {\n runLength++;\n }\n if (runLength % 2 !== 0) {\n return true;\n }\n index += runLength - 1;\n }\n return false;\n}\n\n/**\n * Result of parsing a ratified `debug/log` message template.\n */\nexport interface IDebugLogTemplateParseResult {\n /** Whether all literal braces are doubled and every parameter is well formed. */\n valid: boolean;\n /** Unique parameter socket ids in first-occurrence order. */\n sockets: string[];\n}\n\n/**\n * Parses a ratified `debug/log` message template.\n * Literal braces must be doubled; non-empty text inside a single brace pair defines a socket id.\n * @param message message template to parse\n * @returns template validity and its exact dynamic socket ids\n */\nexport function ParseDebugLogTemplate(message: string): IDebugLogTemplateParseResult {\n let state = 0;\n let parameterStart = -1;\n const sockets: string[] = [];\n const seen = new Set<string>();\n for (let index = 0; index < message.length; index++) {\n const character = message[index];\n if (character === \"{\") {\n if (state === 0) {\n state = 1;\n } else if (state === 1) {\n state = 0;\n } else {\n return { valid: false, sockets: [] };\n }\n } else if (character === \"}\") {\n if (state === 0) {\n state = 3;\n } else if (state === 3) {\n state = 0;\n } else if (state === 2) {\n const socket = message.substring(parameterStart + 1, index);\n if (!seen.has(socket)) {\n seen.add(socket);\n sockets.push(socket);\n }\n state = 0;\n } else {\n return { valid: false, sockets: [] };\n }\n } else if (state === 1) {\n parameterStart = index - 1;\n state = 2;\n } else if (state === 3) {\n return { valid: false, sockets: [] };\n }\n }\n return { valid: state === 0, sockets: state === 0 ? sockets : [] };\n}\n\n/**\n * Validates the `pointer` configuration value of a `pointer/*` operation, following the JSON Pointer Template\n * Parsing steps of the KHR_interactivity specification. A template parameter must span an entire path segment, so\n * a template such as `/materials/{materialRef}pbrMetallicRoughness/...` is a syntax error, and the specification\n * requires the whole behavior graph to be rejected.\n * @param gltfBlock the glTF interactivity node\n * @param reservedSocketIds input ids owned by the operation rather than template parameters\n * @returns the validation result\n */\nfunction ValidateJsonPointerTemplate(gltfBlock: IKHRInteractivity_Node, reservedSocketIds: ReadonlySet<string> = new Set()): { valid: boolean; error?: string } {\n const pointer = gltfBlock.configuration?.pointer?.value?.[0];\n if (typeof pointer !== \"string\") {\n return { valid: false, error: \"A pointer operation requires a string `pointer` configuration value\" };\n }\n // A JSON Pointer (RFC 6901) is either empty or a sequence of `/`-prefixed reference tokens.\n if (pointer.length !== 0 && pointer[0] !== \"/\") {\n return { valid: false, error: `The JSON Pointer Template \"${pointer}\" is not a syntactically valid JSON Pointer` };\n }\n\n const invalid = (reason: string) => ({ valid: false, error: `The JSON Pointer Template \"${pointer}\" is invalid: ${reason}` });\n const socketIds = new Set<string>();\n for (const segment of pointer.split(\"/\")) {\n if (/~(?:[^01]|$)/.test(segment)) {\n return invalid(`the path segment \"${segment}\" contains an invalid RFC 6901 escape`);\n }\n const isIntegerParameter = segment[0] === \"[\" && segment[1] !== \"[\";\n const isReferenceParameter = segment[0] === \"{\" && segment[1] !== \"{\";\n if (!isIntegerParameter && !isReferenceParameter) {\n if (HasOddBracketRun(segment)) {\n return invalid(`the path segment \"${segment}\" contains an odd number of consecutive brackets`);\n }\n continue;\n }\n\n const closingBracket = isIntegerParameter ? \"]\" : \"}\";\n const body = segment.substring(1, segment.length - 1);\n if (segment.length < 3 || segment[segment.length - 1] !== closingBracket || /[[{]/.test(body) || /[\\]}]/.test(body)) {\n return invalid(`the template parameter path segment \"${segment}\" is malformed`);\n }\n\n const socketId = body.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n if (reservedSocketIds.has(socketId)) {\n return invalid(`the template parameter \"${socketId}\" uses a reserved input socket id`);\n }\n if (socketIds.has(socketId)) {\n return invalid(`the template parameter \"${socketId}\" is used more than once`);\n }\n socketIds.add(socketId);\n }\n\n return { valid: true };\n}\n\nexport function getAllSupportedNativeNodeTypes(): string[] {\n return Object.keys(gltfToFlowGraphMapping);\n}\n\n/**\n * \n * These are the nodes from the specs:\n\n### Math Nodes\n1. **Constants**\n - E (`math/E`) FlowGraphBlockNames.E\n - Pi (`math/Pi`) FlowGraphBlockNames.PI\n - Infinity (`math/Inf`) FlowGraphBlockNames.Inf\n - Not a Number (`math/NaN`) FlowGraphBlockNames.NaN\n2. **Arithmetic Nodes**\n - Absolute Value (`math/abs`) FlowGraphBlockNames.Abs\n - Sign (`math/sign`) FlowGraphBlockNames.Sign\n - Truncate (`math/trunc`) FlowGraphBlockNames.Trunc\n - Floor (`math/floor`) FlowGraphBlockNames.Floor\n - Ceil (`math/ceil`) FlowGraphBlockNames.Ceil\n - Round (`math/round`) FlowGraphBlockNames.Round\n - Fraction (`math/fract`) FlowGraphBlockNames.Fract\n - Negation (`math/neg`) FlowGraphBlockNames.Negation\n - Addition (`math/add`) FlowGraphBlockNames.Add\n - Subtraction (`math/sub`) FlowGraphBlockNames.Subtract\n - Multiplication (`math/mul`) FlowGraphBlockNames.Multiply\n - Division (`math/div`) FlowGraphBlockNames.Divide\n - Remainder (`math/rem`) FlowGraphBlockNames.Modulo\n - Minimum (`math/min`) FlowGraphBlockNames.Min\n - Maximum (`math/max`) FlowGraphBlockNames.Max\n - Clamp (`math/clamp`) FlowGraphBlockNames.Clamp\n - Saturate (`math/saturate`) FlowGraphBlockNames.Saturate\n - Interpolate (`math/mix`) FlowGraphBlockNames.MathInterpolation\n3. **Comparison Nodes**\n - Equality (`math/eq`) FlowGraphBlockNames.Equality\n - Less Than (`math/lt`) FlowGraphBlockNames.LessThan\n - Less Than Or Equal To (`math/le`) FlowGraphBlockNames.LessThanOrEqual\n - Greater Than (`math/gt`) FlowGraphBlockNames.GreaterThan\n - Greater Than Or Equal To (`math/ge`) FlowGraphBlockNames.GreaterThanOrEqual\n4. **Special Nodes**\n - Is Not a Number (`math/isNaN`) FlowGraphBlockNames.IsNaN\n - Is Infinity (`math/isInf`) FlowGraphBlockNames.IsInfinity\n - Select (`math/select`) FlowGraphBlockNames.Conditional\n - Switch (`math/switch`) FlowGraphBlockNames.DataSwitch\n - Random (`math/random`) FlowGraphBlockNames.Random\n5. **Angle and Trigonometry Nodes**\n - Degrees-To-Radians (`math/rad`) FlowGraphBlockNames.DegToRad\n - Radians-To-Degrees (`math/deg`) FlowGraphBlockNames.RadToDeg\n - Sine (`math/sin`) FlowGraphBlockNames.Sin\n - Cosine (`math/cos`) FlowGraphBlockNames.Cos\n - Tangent (`math/tan`) FlowGraphBlockNames.Tan\n - Arcsine (`math/asin`) FlowGraphBlockNames.Asin\n - Arccosine (`math/acos`) FlowGraphBlockNames.Acos\n - Arctangent (`math/atan`) FlowGraphBlockNames.Atan\n - Arctangent 2 (`math/atan2`) FlowGraphBlockNames.Atan2\n6. **Hyperbolic Nodes**\n - Hyperbolic Sine (`math/sinh`) FlowGraphBlockNames.Sinh\n - Hyperbolic Cosine (`math/cosh`) FlowGraphBlockNames.Cosh\n - Hyperbolic Tangent (`math/tanh`) FlowGraphBlockNames.Tanh\n - Inverse Hyperbolic Sine (`math/asinh`) FlowGraphBlockNames.Asinh\n - Inverse Hyperbolic Cosine (`math/acosh`) FlowGraphBlockNames.Acosh\n - Inverse Hyperbolic Tangent (`math/atanh`) FlowGraphBlockNames.Atanh\n7. **Exponential Nodes**\n - Exponent (`math/exp`) FlowGraphBlockNames.Exponential\n - Natural Logarithm (`math/log`) FlowGraphBlockNames.Log\n - Base-2 Logarithm (`math/log2`) FlowGraphBlockNames.Log2\n - Base-10 Logarithm (`math/log10`) FlowGraphBlockNames.Log10\n - Square Root (`math/sqrt`) FlowGraphBlockNames.SquareRoot\n - Cube Root (`math/cbrt`) FlowGraphBlockNames.CubeRoot\n - Power (`math/pow`) FlowGraphBlockNames.Power\n8. **Vector Nodes**\n - Length (`math/length`) FlowGraphBlockNames.Length\n - Normalize (`math/normalize`) FlowGraphBlockNames.Normalize\n - Dot Product (`math/dot`) FlowGraphBlockNames.Dot\n - Cross Product (`math/cross`) FlowGraphBlockNames.Cross\n - Rotate 2D (`math/rotate2D`) FlowGraphBlockNames.Rotate2D\n - Rotate 3D (`math/rotate3D`) FlowGraphBlockNames.Rotate3D\n - Transform (`math/transform`) FlowGraphBlockNames.TransformVector\n9. **Matrix Nodes**\n - Transpose (`math/transpose`) FlowGraphBlockNames.Transpose\n - Determinant (`math/determinant`) FlowGraphBlockNames.Determinant\n - Inverse (`math/inverse`) FlowGraphBlockNames.InvertMatrix\n - Multiplication (`math/matMul`) FlowGraphBlockNames.MatrixMultiplication\n - Compose (`math/matCompose`) FlowGraphBlockNames.MatrixCompose\n - Decompose (`math/matDecompose`) FlowGraphBlockNames.MatrixDecompose\n10. **Quaternion Nodes**\n - Conjugate (`math/quatConjugate`) FlowGraphBlockNames.Conjugate\n - Multiplication (`math/quatMul`) FlowGraphBlockNames.Multiply\n - Angle Between Quaternions (`math/quatAngleBetween`) FlowGraphBlockNames.AngleBetween\n - Quaternion From Axis Angle (`math/quatFromAxisAngle`) FlowGraphBlockNames.QuaternionFromAxisAngle\n - Quaternion To Axis Angle (`math/quatToAxisAngle`) FlowGraphBlockNames.QuaternionToAxisAngle\n - Quaternion From Two Directional Vectors (`math/quatFromDirections`) FlowGraphBlockNames.QuaternionFromDirections\n11. **Swizzle Nodes**\n - Combine (`math/combine2`, `math/combine3`, `math/combine4`, `math/combine2x2`, `math/combine3x3`, `math/combine4x4`)\n FlowGraphBlockNames.CombineVector2, FlowGraphBlockNames.CombineVector3, FlowGraphBlockNames.CombineVector4\n FlowGraphBlockNames.CombineMatrix2D, FlowGraphBlockNames.CombineMatrix3D, FlowGraphBlockNames.CombineMatrix\n - Extract (`math/extract2`, `math/extract3`, `math/extract4`, `math/extract2x2`, `math/extract3x3`, `math/extract4x4`)\n FlowGraphBlockNames.ExtractVector2, FlowGraphBlockNames.ExtractVector3, FlowGraphBlockNames.ExtractVector4\n FlowGraphBlockNames.ExtractMatrix2D, FlowGraphBlockNames.ExtractMatrix3D, FlowGraphBlockNames.ExtractMatrix\n12. **Integer Arithmetic Nodes**\n - Absolute Value (`math/abs`) FlowGraphBlockNames.Abs\n - Sign (`math/sign`) FlowGraphBlockNames.Sign\n - Negation (`math/neg`) FlowGraphBlockNames.Negation\n - Addition (`math/add`) FlowGraphBlockNames.Add\n - Subtraction (`math/sub`) FlowGraphBlockNames.Subtract\n - Multiplication (`math/mul`) FlowGraphBlockNames.Multiply\n - Division (`math/div`) FlowGraphBlockNames.Divide\n - Remainder (`math/rem`) FlowGraphBlockNames.Modulo\n - Minimum (`math/min`) FlowGraphBlockNames.Min\n - Maximum (`math/max`) FlowGraphBlockNames.Max\n - Clamp (`math/clamp`) FlowGraphBlockNames.Clamp\n13. **Integer Comparison Nodes**\n - Equality (`math/eq`) FlowGraphBlockNames.Equality\n - Less Than (`math/lt`) FlowGraphBlockNames.LessThan\n - Less Than Or Equal To (`math/le`) FlowGraphBlockNames.LessThanOrEqual\n - Greater Than (`math/gt`) FlowGraphBlockNames.GreaterThan\n - Greater Than Or Equal To (`math/ge`) FlowGraphBlockNames.GreaterThanOrEqual\n14. **Integer Bitwise Nodes**\n - Bitwise NOT (`math/not`) FlowGraphBlockNames.BitwiseNot\n - Bitwise AND (`math/and`) FlowGraphBlockNames.BitwiseAnd\n - Bitwise OR (`math/or`) FlowGraphBlockNames.BitwiseOr\n - Bitwise XOR (`math/xor`) FlowGraphBlockNames.BitwiseXor\n - Right Shift (`math/asr`) FlowGraphBlockNames.BitwiseRightShift\n - Left Shift (`math/lsl`) FlowGraphBlockNames.BitwiseLeftShift\n - Count Leading Zeros (`math/clz`) FlowGraphBlockNames.LeadingZeros\n - Count Trailing Zeros (`math/ctz`) FlowGraphBlockNames.TrailingZeros\n - Count One Bits (`math/popcnt`) FlowGraphBlockNames.OneBitsCounter\n15. **Boolean Arithmetic Nodes**\n - Equality (`math/eq`) FlowGraphBlockNames.Equality\n - Boolean NOT (`math/not`) FlowGraphBlockNames.BitwiseNot\n - Boolean AND (`math/and`) FlowGraphBlockNames.BitwiseAnd\n - Boolean OR (`math/or`) FlowGraphBlockNames.BitwiseOr\n - Boolean XOR (`math/xor`) FlowGraphBlockNames.BitwiseXor\n\n### Type Conversion Nodes\n1. **Boolean Conversion Nodes**\n - Boolean to Integer (`type/boolToInt`) FlowGraphBlockNames.BooleanToInt\n - Boolean to Float (`type/boolToFloat`) FlowGraphBlockNames.BooleanToFloat\n2. **Integer Conversion Nodes**\n - Integer to Boolean (`type/intToBool`) FlowGraphBlockNames.IntToBoolean\n - Integer to Float (`type/intToFloat`) FlowGraphBlockNames.IntToFloat\n3. **Float Conversion Nodes**\n - Float to Boolean (`type/floatToBool`) FlowGraphBlockNames.FloatToBoolean\n - Float to Integer (`type/floatToInt`) FlowGraphBlockNames.FloatToInt\n\n### Control Flow Nodes\n1. **Sync Nodes**\n - Sequence (`flow/sequence`) FlowGraphBlockNames.Sequence\n - Branch (`flow/branch`) FlowGraphBlockNames.Branch\n - Switch (`flow/switch`) FlowGraphBlockNames.Switch\n - While Loop (`flow/while`) FlowGraphBlockNames.WhileLoop\n - For Loop (`flow/for`) FlowGraphBlockNames.ForLoop\n - Do N (`flow/doN`) FlowGraphBlockNames.DoN\n - Multi Gate (`flow/multiGate`) FlowGraphBlockNames.MultiGate\n - Wait All (`flow/waitAll`) FlowGraphBlockNames.WaitAll\n - Throttle (`flow/throttle`) FlowGraphBlockNames.Throttle\n2. **Delay Nodes**\n - Set Delay (`flow/setDelay`) FlowGraphBlockNames.SetDelay\n - Cancel Delay (`flow/cancelDelay`) FlowGraphBlockNames.CancelDelay\n\n### State Manipulation Nodes\n1. **Custom Variable Access**\n - Variable Get (`variable/get`) FlowGraphBlockNames.GetVariable\n - Variable Set (`variable/set`) FlowGraphBlockNames.SetVariable\n - Variable Interpolate (`variable/interpolate`)\n2. **Object Model Access** // TODO fully test this!!!\n - JSON Pointer Template Parsing (`pointer/get`) [FlowGraphBlockNames.GetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Effective JSON Pointer Generation (`pointer/set`) [FlowGraphBlockNames.SetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Pointer Get (`pointer/get`) [FlowGraphBlockNames.GetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Pointer Set (`pointer/set`) [FlowGraphBlockNames.SetProperty, FlowGraphBlockNames.JsonPointerParser]\n - Pointer Interpolate (`pointer/interpolate`) [FlowGraphBlockNames.ValueInterpolation, FlowGraphBlockNames.JsonPointerParser, FlowGraphBlockNames.PlayAnimation, FlowGraphBlockNames.BezierCurveEasing]\n\n### Animation Control Nodes\n1. **Animation Play** (`animation/start`) FlowGraphBlockNames.PlayAnimation\n2. **Animation Stop** (`animation/stop`) FlowGraphBlockNames.StopAnimation \n3. **Animation Stop At** (`animation/stopAt`) FlowGraphBlockNames.StopAnimation \n\n### Event Nodes\n1. **Lifecycle Event Nodes**\n - On Start (`event/onStart`) FlowGraphBlockNames.SceneReadyEvent\n - On Tick (`event/onTick`) FlowGraphBlockNames.SceneTickEvent\n2. **Custom Event Nodes**\n - Receive (`event/receive`) FlowGraphBlockNames.ReceiveCustomEvent\n - Send (`event/send`) FlowGraphBlockNames.SendCustomEvent\n\n */\n"]}