@onerjs/core 8.51.3 → 8.51.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +2 -1
- package/Animations/animationGroup.js +3 -2
- package/Animations/animationGroup.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.js +7 -3
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Events/deviceInputEvents.d.ts +5 -0
- package/Events/deviceInputEvents.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.d.ts +65 -0
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js +74 -0
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js.map +1 -0
- package/FlowGraph/Blocks/Data/index.d.ts +1 -0
- package/FlowGraph/Blocks/Data/index.js +1 -0
- package/FlowGraph/Blocks/Data/index.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.d.ts +39 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js +42 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.d.ts +19 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js +25 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.d.ts +64 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +50 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -0
- package/FlowGraph/Blocks/Event/index.d.ts +3 -0
- package/FlowGraph/Blocks/Event/index.js +3 -0
- package/FlowGraph/Blocks/Event/index.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.js +7 -0
- package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +3 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js +3 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +6 -0
- package/FlowGraph/flowGraph.js +10 -1
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +8 -0
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphEventType.d.ts +2 -0
- package/FlowGraph/flowGraphEventType.js +2 -0
- package/FlowGraph/flowGraphEventType.js.map +1 -1
- package/FlowGraph/flowGraphSceneEventCoordinator.d.ts +14 -0
- package/FlowGraph/flowGraphSceneEventCoordinator.js +56 -0
- package/FlowGraph/flowGraphSceneEventCoordinator.js.map +1 -1
- package/FlowGraph/utils.d.ts +7 -0
- package/FlowGraph/utils.js +8 -0
- package/FlowGraph/utils.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +6 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.js +30 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -2
- package/Misc/snapshotRenderingHelper.js +33 -22
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +6 -1
- package/Particles/thinParticleSystem.js +23 -6
- package/Particles/thinParticleSystem.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphBlockFactory.js","sourceRoot":"","sources":["../../../../../dev/core/src/FlowGraph/Blocks/flowGraphBlockFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { type FlowGraphBlock } from \"../flowGraphBlock\";\nimport { FlowGraphBlockNames } from \"./flowGraphBlockNames\";\n\n/**\n * Any external module that wishes to add a new block to the flow graph can add to this object using the helper function.\n */\nconst CustomBlocks: Record<string, () => Promise<typeof FlowGraphBlock>> = {};\n/**\n * Reverse lookup: short block name → full \"module/blockName\" key, for O(1) fallback.\n */\nconst ShortNameToFullKey: Record<string, string> = {};\n\n/**\n * If you want to add a new block to the block factory, you should use this function.\n * Please be sure to choose a unique name and define the responsible module.\n * @param module the name of the module that is responsible for the block\n * @param blockName the name of the block. This should be unique.\n * @param factory an async factory function to generate the block\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function addToBlockFactory(module: string, blockName: string, factory: () => Promise<typeof FlowGraphBlock>): void {\n const fullKey = `${module}/${blockName}`;\n CustomBlocks[fullKey] = factory;\n ShortNameToFullKey[blockName] = fullKey;\n}\n\n/**\n * a function to get a factory function for a block.\n * @param blockName the block name to initialize. If the block comes from an external module, the name should be in the format \"module/blockName\"\n * @returns an async factory function that will return the block class when called.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function blockFactory(blockName: FlowGraphBlockNames | string): () => Promise<typeof FlowGraphBlock> {\n switch (blockName) {\n case FlowGraphBlockNames.PlayAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphPlayAnimationBlock\")).FlowGraphPlayAnimationBlock;\n case FlowGraphBlockNames.StopAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphStopAnimationBlock\")).FlowGraphStopAnimationBlock;\n case FlowGraphBlockNames.PauseAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphPauseAnimationBlock\")).FlowGraphPauseAnimationBlock;\n case FlowGraphBlockNames.ValueInterpolation:\n return async () => (await import(\"./Execution/Animation/flowGraphInterpolationBlock\")).FlowGraphInterpolationBlock;\n case FlowGraphBlockNames.SceneReadyEvent:\n return async () => (await import(\"./Event/flowGraphSceneReadyEventBlock\")).FlowGraphSceneReadyEventBlock;\n case FlowGraphBlockNames.SceneTickEvent:\n return async () => (await import(\"./Event/flowGraphSceneTickEventBlock\")).FlowGraphSceneTickEventBlock;\n case FlowGraphBlockNames.SendCustomEvent:\n return async () => (await import(\"./Event/flowGraphSendCustomEventBlock\")).FlowGraphSendCustomEventBlock;\n case FlowGraphBlockNames.ReceiveCustomEvent:\n return async () => (await import(\"./Event/flowGraphReceiveCustomEventBlock\")).FlowGraphReceiveCustomEventBlock;\n case FlowGraphBlockNames.MeshPickEvent:\n return async () => (await import(\"./Event/flowGraphMeshPickEventBlock\")).FlowGraphMeshPickEventBlock;\n case FlowGraphBlockNames.E:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphEBlock;\n case FlowGraphBlockNames.PI:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphPiBlock;\n case FlowGraphBlockNames.Inf:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphInfBlock;\n case FlowGraphBlockNames.NaN:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphNaNBlock;\n case FlowGraphBlockNames.Random:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRandomBlock;\n case FlowGraphBlockNames.Add:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAddBlock;\n case FlowGraphBlockNames.Subtract:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSubtractBlock;\n case FlowGraphBlockNames.Multiply:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMultiplyBlock;\n case FlowGraphBlockNames.Divide:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphDivideBlock;\n case FlowGraphBlockNames.Abs:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAbsBlock;\n case FlowGraphBlockNames.Sign:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSignBlock;\n case FlowGraphBlockNames.Trunc:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTruncBlock;\n case FlowGraphBlockNames.Floor:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphFloorBlock;\n case FlowGraphBlockNames.Ceil:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCeilBlock;\n case FlowGraphBlockNames.Round:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRoundBlock;\n case FlowGraphBlockNames.Fraction:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphFractionBlock;\n case FlowGraphBlockNames.Negation:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphNegationBlock;\n case FlowGraphBlockNames.Modulo:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphModuloBlock;\n case FlowGraphBlockNames.Min:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMinBlock;\n case FlowGraphBlockNames.Max:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMaxBlock;\n case FlowGraphBlockNames.Clamp:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphClampBlock;\n case FlowGraphBlockNames.Saturate:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSaturateBlock;\n case FlowGraphBlockNames.MathInterpolation:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMathInterpolationBlock;\n case FlowGraphBlockNames.Equality:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphEqualityBlock;\n case FlowGraphBlockNames.LessThan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLessThanBlock;\n case FlowGraphBlockNames.LessThanOrEqual:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLessThanOrEqualBlock;\n case FlowGraphBlockNames.GreaterThan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphGreaterThanBlock;\n case FlowGraphBlockNames.GreaterThanOrEqual:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphGreaterThanOrEqualBlock;\n case FlowGraphBlockNames.IsNaN:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphIsNanBlock;\n case FlowGraphBlockNames.IsInfinity:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphIsInfinityBlock;\n case FlowGraphBlockNames.DegToRad:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphDegToRadBlock;\n case FlowGraphBlockNames.RadToDeg:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRadToDegBlock;\n case FlowGraphBlockNames.Sin:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSinBlock;\n case FlowGraphBlockNames.Cos:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCosBlock;\n case FlowGraphBlockNames.Tan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTanBlock;\n case FlowGraphBlockNames.Asin:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAsinBlock;\n case FlowGraphBlockNames.Acos:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAcosBlock;\n case FlowGraphBlockNames.Atan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtanBlock;\n case FlowGraphBlockNames.Atan2:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtan2Block;\n case FlowGraphBlockNames.Sinh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSinhBlock;\n case FlowGraphBlockNames.Cosh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCoshBlock;\n case FlowGraphBlockNames.Tanh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTanhBlock;\n case FlowGraphBlockNames.Asinh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAsinhBlock;\n case FlowGraphBlockNames.Acosh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAcoshBlock;\n case FlowGraphBlockNames.Atanh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtanhBlock;\n case FlowGraphBlockNames.Exponential:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphExpBlock;\n case FlowGraphBlockNames.Log:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLogBlock;\n case FlowGraphBlockNames.Log2:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLog2Block;\n case FlowGraphBlockNames.Log10:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLog10Block;\n case FlowGraphBlockNames.SquareRoot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSquareRootBlock;\n case FlowGraphBlockNames.Power:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphPowerBlock;\n case FlowGraphBlockNames.CubeRoot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCubeRootBlock;\n case FlowGraphBlockNames.BitwiseAnd:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseAndBlock;\n case FlowGraphBlockNames.BitwiseOr:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseOrBlock;\n case FlowGraphBlockNames.BitwiseNot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseNotBlock;\n case FlowGraphBlockNames.BitwiseXor:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseXorBlock;\n case FlowGraphBlockNames.BitwiseLeftShift:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseLeftShiftBlock;\n case FlowGraphBlockNames.BitwiseRightShift:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseRightShiftBlock;\n case FlowGraphBlockNames.Length:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphLengthBlock;\n case FlowGraphBlockNames.Normalize:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphNormalizeBlock;\n case FlowGraphBlockNames.Dot:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphDotBlock;\n case FlowGraphBlockNames.Cross:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphCrossBlock;\n case FlowGraphBlockNames.Rotate2D:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphRotate2DBlock;\n case FlowGraphBlockNames.Rotate3D:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphRotate3DBlock;\n case FlowGraphBlockNames.Transpose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphTransposeBlock;\n case FlowGraphBlockNames.Determinant:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphDeterminantBlock;\n case FlowGraphBlockNames.InvertMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphInvertMatrixBlock;\n case FlowGraphBlockNames.MatrixMultiplication:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixMultiplicationBlock;\n case FlowGraphBlockNames.Branch:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphBranchBlock\")).FlowGraphBranchBlock;\n case FlowGraphBlockNames.SetDelay:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSetDelayBlock\")).FlowGraphSetDelayBlock;\n case FlowGraphBlockNames.CancelDelay:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphCancelDelayBlock\")).FlowGraphCancelDelayBlock;\n case FlowGraphBlockNames.CallCounter:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphCounterBlock\")).FlowGraphCallCounterBlock;\n case FlowGraphBlockNames.Debounce:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphDebounceBlock\")).FlowGraphDebounceBlock;\n case FlowGraphBlockNames.Throttle:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphThrottleBlock\")).FlowGraphThrottleBlock;\n case FlowGraphBlockNames.DoN:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphDoNBlock\")).FlowGraphDoNBlock;\n case FlowGraphBlockNames.FlipFlop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphFlipFlopBlock\")).FlowGraphFlipFlopBlock;\n case FlowGraphBlockNames.ForLoop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphForLoopBlock\")).FlowGraphForLoopBlock;\n case FlowGraphBlockNames.MultiGate:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphMultiGateBlock\")).FlowGraphMultiGateBlock;\n case FlowGraphBlockNames.Sequence:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSequenceBlock\")).FlowGraphSequenceBlock;\n case FlowGraphBlockNames.Switch:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSwitchBlock\")).FlowGraphSwitchBlock;\n case FlowGraphBlockNames.WaitAll:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphWaitAllBlock\")).FlowGraphWaitAllBlock;\n case FlowGraphBlockNames.WhileLoop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphWhileLoopBlock\")).FlowGraphWhileLoopBlock;\n case FlowGraphBlockNames.ConsoleLog:\n return async () => (await import(\"./Execution/flowGraphConsoleLogBlock\")).FlowGraphConsoleLogBlock;\n case FlowGraphBlockNames.Conditional:\n return async () => (await import(\"./Data/flowGraphConditionalDataBlock\")).FlowGraphConditionalDataBlock;\n case FlowGraphBlockNames.Constant:\n return async () => (await import(\"./Data/flowGraphConstantBlock\")).FlowGraphConstantBlock;\n case FlowGraphBlockNames.TransformCoordinatesSystem:\n return async () => (await import(\"./Data/flowGraphTransformCoordinatesSystemBlock\")).FlowGraphTransformCoordinatesSystemBlock;\n case FlowGraphBlockNames.GetAsset:\n return async () => (await import(\"./Data/flowGraphGetAssetBlock\")).FlowGraphGetAssetBlock;\n case FlowGraphBlockNames.GetProperty:\n return async () => (await import(\"./Data/flowGraphGetPropertyBlock\")).FlowGraphGetPropertyBlock;\n case FlowGraphBlockNames.SetProperty:\n return async () => (await import(\"./Execution/flowGraphSetPropertyBlock\")).FlowGraphSetPropertyBlock;\n case FlowGraphBlockNames.GetVariable:\n return async () => (await import(\"./Data/flowGraphGetVariableBlock\")).FlowGraphGetVariableBlock;\n case FlowGraphBlockNames.SetVariable:\n return async () => (await import(\"./Execution/flowGraphSetVariableBlock\")).FlowGraphSetVariableBlock;\n case FlowGraphBlockNames.JsonPointerParser:\n return async () => (await import(\"./Data/Transformers/flowGraphJsonPointerParserBlock\")).FlowGraphJsonPointerParserBlock;\n case FlowGraphBlockNames.LeadingZeros:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLeadingZerosBlock;\n case FlowGraphBlockNames.TrailingZeros:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTrailingZerosBlock;\n case FlowGraphBlockNames.OneBitsCounter:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphOneBitsCounterBlock;\n case FlowGraphBlockNames.CombineVector2:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector2Block;\n case FlowGraphBlockNames.CombineVector3:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector3Block;\n case FlowGraphBlockNames.CombineVector4:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector4Block;\n case FlowGraphBlockNames.CombineMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrixBlock;\n case FlowGraphBlockNames.CombineMatrix2D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrix2DBlock;\n case FlowGraphBlockNames.CombineMatrix3D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrix3DBlock;\n case FlowGraphBlockNames.ExtractVector2:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector2Block;\n case FlowGraphBlockNames.ExtractVector3:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector3Block;\n case FlowGraphBlockNames.ExtractVector4:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector4Block;\n case FlowGraphBlockNames.ExtractMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrixBlock;\n case FlowGraphBlockNames.ExtractMatrix2D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrix2DBlock;\n case FlowGraphBlockNames.ExtractMatrix3D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrix3DBlock;\n case FlowGraphBlockNames.TransformVector:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphTransformBlock;\n case FlowGraphBlockNames.TransformCoordinates:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphTransformCoordinatesBlock;\n case FlowGraphBlockNames.Conjugate:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphConjugateBlock;\n case FlowGraphBlockNames.AngleBetween:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphAngleBetweenBlock;\n case FlowGraphBlockNames.QuaternionFromAxisAngle:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromAxisAngleBlock;\n case FlowGraphBlockNames.AxisAngleFromQuaternion:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphAxisAngleFromQuaternionBlock;\n case FlowGraphBlockNames.QuaternionFromDirections:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromDirectionsBlock;\n case FlowGraphBlockNames.MatrixDecompose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixDecomposeBlock;\n case FlowGraphBlockNames.MatrixCompose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixComposeBlock;\n case FlowGraphBlockNames.BooleanToFloat:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphBooleanToFloat;\n case FlowGraphBlockNames.BooleanToInt:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphBooleanToInt;\n case FlowGraphBlockNames.FloatToBoolean:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphFloatToBoolean;\n case FlowGraphBlockNames.IntToBoolean:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphIntToBoolean;\n case FlowGraphBlockNames.IntToFloat:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphIntToFloat;\n case FlowGraphBlockNames.FloatToInt:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphFloatToInt;\n case FlowGraphBlockNames.Easing:\n return async () => (await import(\"./Execution/Animation/flowGraphEasingBlock\")).FlowGraphEasingBlock;\n case FlowGraphBlockNames.BezierCurveEasing:\n return async () => (await import(\"./Execution/Animation/flowGraphBezierCurveEasingBlock\")).FlowGraphBezierCurveEasingBlock;\n case FlowGraphBlockNames.PointerOverEvent:\n return async () => (await import(\"./Event/flowGraphPointerOverEventBlock\")).FlowGraphPointerOverEventBlock;\n case FlowGraphBlockNames.PointerOutEvent:\n return async () => (await import(\"./Event/flowGraphPointerOutEventBlock\")).FlowGraphPointerOutEventBlock;\n case FlowGraphBlockNames.PointerDownEvent:\n return async () => (await import(\"./Event/flowGraphPointerDownEventBlock\")).FlowGraphPointerDownEventBlock;\n case FlowGraphBlockNames.PointerUpEvent:\n return async () => (await import(\"./Event/flowGraphPointerUpEventBlock\")).FlowGraphPointerUpEventBlock;\n case FlowGraphBlockNames.PointerMoveEvent:\n return async () => (await import(\"./Event/flowGraphPointerMoveEventBlock\")).FlowGraphPointerMoveEventBlock;\n case FlowGraphBlockNames.Context:\n return async () => (await import(\"./Data/Utils/flowGraphContextBlock\")).FlowGraphContextBlock;\n case FlowGraphBlockNames.ArrayIndex:\n return async () => (await import(\"./Data/Utils/flowGraphArrayIndexBlock\")).FlowGraphArrayIndexBlock;\n case FlowGraphBlockNames.CodeExecution:\n return async () => (await import(\"./Data/Utils/flowGraphCodeExecutionBlock\")).FlowGraphCodeExecutionBlock;\n case FlowGraphBlockNames.IndexOf:\n return async () => (await import(\"./Data/Utils/flowGraphIndexOfBlock\")).FlowGraphIndexOfBlock;\n case FlowGraphBlockNames.FunctionReference:\n return async () => (await import(\"./Data/Utils/flowGraphFunctionReferenceBlock\")).FlowGraphFunctionReferenceBlock;\n case FlowGraphBlockNames.DataSwitch:\n return async () => (await import(\"./Data/flowGraphDataSwitchBlock\")).FlowGraphDataSwitchBlock;\n case FlowGraphBlockNames.DebugBlock:\n return async () => (await import(\"./Data/flowGraphDebugBlock\")).FlowGraphDebugBlock;\n // Physics\n case FlowGraphBlockNames.PhysicsCollisionEvent:\n return async () => (await import(\"./Event/flowGraphPhysicsCollisionEventBlock\")).FlowGraphPhysicsCollisionEventBlock;\n case FlowGraphBlockNames.PhysicsApplyForce:\n return async () => (await import(\"./Execution/Physics/flowGraphApplyForceBlock\")).FlowGraphApplyForceBlock;\n case FlowGraphBlockNames.PhysicsApplyImpulse:\n return async () => (await import(\"./Execution/Physics/flowGraphApplyImpulseBlock\")).FlowGraphApplyImpulseBlock;\n case FlowGraphBlockNames.PhysicsSetLinearVelocity:\n return async () => (await import(\"./Execution/Physics/flowGraphSetLinearVelocityBlock\")).FlowGraphSetLinearVelocityBlock;\n case FlowGraphBlockNames.PhysicsSetAngularVelocity:\n return async () => (await import(\"./Execution/Physics/flowGraphSetAngularVelocityBlock\")).FlowGraphSetAngularVelocityBlock;\n case FlowGraphBlockNames.PhysicsSetMotionType:\n return async () => (await import(\"./Execution/Physics/flowGraphSetPhysicsMotionTypeBlock\")).FlowGraphSetPhysicsMotionTypeBlock;\n case FlowGraphBlockNames.PhysicsGetLinearVelocity:\n return async () => (await import(\"./Data/Physics/flowGraphGetLinearVelocityBlock\")).FlowGraphGetLinearVelocityBlock;\n case FlowGraphBlockNames.PhysicsGetAngularVelocity:\n return async () => (await import(\"./Data/Physics/flowGraphGetAngularVelocityBlock\")).FlowGraphGetAngularVelocityBlock;\n case FlowGraphBlockNames.PhysicsGetMassProperties:\n return async () => (await import(\"./Data/Physics/flowGraphGetPhysicsMassPropertiesBlock\")).FlowGraphGetPhysicsMassPropertiesBlock;\n // Audio\n case FlowGraphBlockNames.AudioPlaySound:\n return async () => (await import(\"./Execution/Audio/flowGraphPlaySoundBlock\")).FlowGraphPlaySoundBlock;\n case FlowGraphBlockNames.AudioStopSound:\n return async () => (await import(\"./Execution/Audio/flowGraphStopSoundBlock\")).FlowGraphStopSoundBlock;\n case FlowGraphBlockNames.AudioPauseSound:\n return async () => (await import(\"./Execution/Audio/flowGraphPauseSoundBlock\")).FlowGraphPauseSoundBlock;\n case FlowGraphBlockNames.AudioSetVolume:\n return async () => (await import(\"./Execution/Audio/flowGraphSetSoundVolumeBlock\")).FlowGraphSetSoundVolumeBlock;\n case FlowGraphBlockNames.AudioSoundEndedEvent:\n return async () => (await import(\"./Event/flowGraphSoundEndedEventBlock\")).FlowGraphSoundEndedEventBlock;\n case FlowGraphBlockNames.AudioGetVolume:\n return async () => (await import(\"./Data/Audio/flowGraphGetSoundVolumeBlock\")).FlowGraphGetSoundVolumeBlock;\n case FlowGraphBlockNames.AudioIsSoundPlaying:\n return async () => (await import(\"./Data/Audio/flowGraphIsSoundPlayingBlock\")).FlowGraphIsSoundPlayingBlock;\n default:\n // check if the block is a custom block\n if (CustomBlocks[blockName]) {\n return CustomBlocks[blockName];\n }\n // Fallback: O(1) reverse lookup by short name (e.g. \"FlowGraphGLTFDataProvider\" → \"KHR_interactivity/FlowGraphGLTFDataProvider\")\n if (!blockName.includes(\"/\")) {\n const fullKey = ShortNameToFullKey[blockName];\n if (fullKey && CustomBlocks[fullKey]) {\n return CustomBlocks[fullKey];\n }\n }\n throw new Error(`Unknown block name ${blockName}`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"flowGraphBlockFactory.js","sourceRoot":"","sources":["../../../../../dev/core/src/FlowGraph/Blocks/flowGraphBlockFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { type FlowGraphBlock } from \"../flowGraphBlock\";\nimport { FlowGraphBlockNames } from \"./flowGraphBlockNames\";\n\n/**\n * Any external module that wishes to add a new block to the flow graph can add to this object using the helper function.\n */\nconst CustomBlocks: Record<string, () => Promise<typeof FlowGraphBlock>> = {};\n/**\n * Reverse lookup: short block name → full \"module/blockName\" key, for O(1) fallback.\n */\nconst ShortNameToFullKey: Record<string, string> = {};\n\n/**\n * If you want to add a new block to the block factory, you should use this function.\n * Please be sure to choose a unique name and define the responsible module.\n * @param module the name of the module that is responsible for the block\n * @param blockName the name of the block. This should be unique.\n * @param factory an async factory function to generate the block\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function addToBlockFactory(module: string, blockName: string, factory: () => Promise<typeof FlowGraphBlock>): void {\n const fullKey = `${module}/${blockName}`;\n CustomBlocks[fullKey] = factory;\n ShortNameToFullKey[blockName] = fullKey;\n}\n\n/**\n * a function to get a factory function for a block.\n * @param blockName the block name to initialize. If the block comes from an external module, the name should be in the format \"module/blockName\"\n * @returns an async factory function that will return the block class when called.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function blockFactory(blockName: FlowGraphBlockNames | string): () => Promise<typeof FlowGraphBlock> {\n switch (blockName) {\n case FlowGraphBlockNames.PlayAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphPlayAnimationBlock\")).FlowGraphPlayAnimationBlock;\n case FlowGraphBlockNames.StopAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphStopAnimationBlock\")).FlowGraphStopAnimationBlock;\n case FlowGraphBlockNames.PauseAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphPauseAnimationBlock\")).FlowGraphPauseAnimationBlock;\n case FlowGraphBlockNames.ValueInterpolation:\n return async () => (await import(\"./Execution/Animation/flowGraphInterpolationBlock\")).FlowGraphInterpolationBlock;\n case FlowGraphBlockNames.SceneReadyEvent:\n return async () => (await import(\"./Event/flowGraphSceneReadyEventBlock\")).FlowGraphSceneReadyEventBlock;\n case FlowGraphBlockNames.SceneTickEvent:\n return async () => (await import(\"./Event/flowGraphSceneTickEventBlock\")).FlowGraphSceneTickEventBlock;\n case FlowGraphBlockNames.SendCustomEvent:\n return async () => (await import(\"./Event/flowGraphSendCustomEventBlock\")).FlowGraphSendCustomEventBlock;\n case FlowGraphBlockNames.ReceiveCustomEvent:\n return async () => (await import(\"./Event/flowGraphReceiveCustomEventBlock\")).FlowGraphReceiveCustomEventBlock;\n case FlowGraphBlockNames.MeshPickEvent:\n return async () => (await import(\"./Event/flowGraphMeshPickEventBlock\")).FlowGraphMeshPickEventBlock;\n case FlowGraphBlockNames.E:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphEBlock;\n case FlowGraphBlockNames.PI:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphPiBlock;\n case FlowGraphBlockNames.Inf:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphInfBlock;\n case FlowGraphBlockNames.NaN:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphNaNBlock;\n case FlowGraphBlockNames.Random:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRandomBlock;\n case FlowGraphBlockNames.Add:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAddBlock;\n case FlowGraphBlockNames.Subtract:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSubtractBlock;\n case FlowGraphBlockNames.Multiply:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMultiplyBlock;\n case FlowGraphBlockNames.Divide:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphDivideBlock;\n case FlowGraphBlockNames.Abs:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAbsBlock;\n case FlowGraphBlockNames.Sign:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSignBlock;\n case FlowGraphBlockNames.Trunc:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTruncBlock;\n case FlowGraphBlockNames.Floor:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphFloorBlock;\n case FlowGraphBlockNames.Ceil:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCeilBlock;\n case FlowGraphBlockNames.Round:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRoundBlock;\n case FlowGraphBlockNames.Fraction:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphFractionBlock;\n case FlowGraphBlockNames.Negation:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphNegationBlock;\n case FlowGraphBlockNames.Modulo:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphModuloBlock;\n case FlowGraphBlockNames.Min:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMinBlock;\n case FlowGraphBlockNames.Max:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMaxBlock;\n case FlowGraphBlockNames.Clamp:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphClampBlock;\n case FlowGraphBlockNames.Saturate:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSaturateBlock;\n case FlowGraphBlockNames.MathInterpolation:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMathInterpolationBlock;\n case FlowGraphBlockNames.Equality:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphEqualityBlock;\n case FlowGraphBlockNames.LessThan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLessThanBlock;\n case FlowGraphBlockNames.LessThanOrEqual:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLessThanOrEqualBlock;\n case FlowGraphBlockNames.GreaterThan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphGreaterThanBlock;\n case FlowGraphBlockNames.GreaterThanOrEqual:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphGreaterThanOrEqualBlock;\n case FlowGraphBlockNames.IsNaN:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphIsNanBlock;\n case FlowGraphBlockNames.IsInfinity:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphIsInfinityBlock;\n case FlowGraphBlockNames.DegToRad:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphDegToRadBlock;\n case FlowGraphBlockNames.RadToDeg:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRadToDegBlock;\n case FlowGraphBlockNames.Sin:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSinBlock;\n case FlowGraphBlockNames.Cos:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCosBlock;\n case FlowGraphBlockNames.Tan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTanBlock;\n case FlowGraphBlockNames.Asin:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAsinBlock;\n case FlowGraphBlockNames.Acos:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAcosBlock;\n case FlowGraphBlockNames.Atan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtanBlock;\n case FlowGraphBlockNames.Atan2:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtan2Block;\n case FlowGraphBlockNames.Sinh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSinhBlock;\n case FlowGraphBlockNames.Cosh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCoshBlock;\n case FlowGraphBlockNames.Tanh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTanhBlock;\n case FlowGraphBlockNames.Asinh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAsinhBlock;\n case FlowGraphBlockNames.Acosh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAcoshBlock;\n case FlowGraphBlockNames.Atanh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtanhBlock;\n case FlowGraphBlockNames.Exponential:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphExpBlock;\n case FlowGraphBlockNames.Log:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLogBlock;\n case FlowGraphBlockNames.Log2:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLog2Block;\n case FlowGraphBlockNames.Log10:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLog10Block;\n case FlowGraphBlockNames.SquareRoot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSquareRootBlock;\n case FlowGraphBlockNames.Power:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphPowerBlock;\n case FlowGraphBlockNames.CubeRoot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCubeRootBlock;\n case FlowGraphBlockNames.BitwiseAnd:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseAndBlock;\n case FlowGraphBlockNames.BitwiseOr:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseOrBlock;\n case FlowGraphBlockNames.BitwiseNot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseNotBlock;\n case FlowGraphBlockNames.BitwiseXor:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseXorBlock;\n case FlowGraphBlockNames.BitwiseLeftShift:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseLeftShiftBlock;\n case FlowGraphBlockNames.BitwiseRightShift:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseRightShiftBlock;\n case FlowGraphBlockNames.Length:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphLengthBlock;\n case FlowGraphBlockNames.Normalize:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphNormalizeBlock;\n case FlowGraphBlockNames.Dot:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphDotBlock;\n case FlowGraphBlockNames.Cross:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphCrossBlock;\n case FlowGraphBlockNames.Rotate2D:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphRotate2DBlock;\n case FlowGraphBlockNames.Rotate3D:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphRotate3DBlock;\n case FlowGraphBlockNames.Transpose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphTransposeBlock;\n case FlowGraphBlockNames.Determinant:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphDeterminantBlock;\n case FlowGraphBlockNames.InvertMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphInvertMatrixBlock;\n case FlowGraphBlockNames.MatrixMultiplication:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixMultiplicationBlock;\n case FlowGraphBlockNames.Branch:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphBranchBlock\")).FlowGraphBranchBlock;\n case FlowGraphBlockNames.SetDelay:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSetDelayBlock\")).FlowGraphSetDelayBlock;\n case FlowGraphBlockNames.CancelDelay:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphCancelDelayBlock\")).FlowGraphCancelDelayBlock;\n case FlowGraphBlockNames.CallCounter:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphCounterBlock\")).FlowGraphCallCounterBlock;\n case FlowGraphBlockNames.Debounce:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphDebounceBlock\")).FlowGraphDebounceBlock;\n case FlowGraphBlockNames.Throttle:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphThrottleBlock\")).FlowGraphThrottleBlock;\n case FlowGraphBlockNames.DoN:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphDoNBlock\")).FlowGraphDoNBlock;\n case FlowGraphBlockNames.FlipFlop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphFlipFlopBlock\")).FlowGraphFlipFlopBlock;\n case FlowGraphBlockNames.ForLoop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphForLoopBlock\")).FlowGraphForLoopBlock;\n case FlowGraphBlockNames.MultiGate:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphMultiGateBlock\")).FlowGraphMultiGateBlock;\n case FlowGraphBlockNames.Sequence:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSequenceBlock\")).FlowGraphSequenceBlock;\n case FlowGraphBlockNames.Switch:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSwitchBlock\")).FlowGraphSwitchBlock;\n case FlowGraphBlockNames.WaitAll:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphWaitAllBlock\")).FlowGraphWaitAllBlock;\n case FlowGraphBlockNames.WhileLoop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphWhileLoopBlock\")).FlowGraphWhileLoopBlock;\n case FlowGraphBlockNames.ConsoleLog:\n return async () => (await import(\"./Execution/flowGraphConsoleLogBlock\")).FlowGraphConsoleLogBlock;\n case FlowGraphBlockNames.Conditional:\n return async () => (await import(\"./Data/flowGraphConditionalDataBlock\")).FlowGraphConditionalDataBlock;\n case FlowGraphBlockNames.Constant:\n return async () => (await import(\"./Data/flowGraphConstantBlock\")).FlowGraphConstantBlock;\n case FlowGraphBlockNames.TransformCoordinatesSystem:\n return async () => (await import(\"./Data/flowGraphTransformCoordinatesSystemBlock\")).FlowGraphTransformCoordinatesSystemBlock;\n case FlowGraphBlockNames.GetAsset:\n return async () => (await import(\"./Data/flowGraphGetAssetBlock\")).FlowGraphGetAssetBlock;\n case FlowGraphBlockNames.GetProperty:\n return async () => (await import(\"./Data/flowGraphGetPropertyBlock\")).FlowGraphGetPropertyBlock;\n case FlowGraphBlockNames.SetProperty:\n return async () => (await import(\"./Execution/flowGraphSetPropertyBlock\")).FlowGraphSetPropertyBlock;\n case FlowGraphBlockNames.GetVariable:\n return async () => (await import(\"./Data/flowGraphGetVariableBlock\")).FlowGraphGetVariableBlock;\n case FlowGraphBlockNames.SetVariable:\n return async () => (await import(\"./Execution/flowGraphSetVariableBlock\")).FlowGraphSetVariableBlock;\n case FlowGraphBlockNames.JsonPointerParser:\n return async () => (await import(\"./Data/Transformers/flowGraphJsonPointerParserBlock\")).FlowGraphJsonPointerParserBlock;\n case FlowGraphBlockNames.LeadingZeros:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLeadingZerosBlock;\n case FlowGraphBlockNames.TrailingZeros:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTrailingZerosBlock;\n case FlowGraphBlockNames.OneBitsCounter:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphOneBitsCounterBlock;\n case FlowGraphBlockNames.CombineVector2:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector2Block;\n case FlowGraphBlockNames.CombineVector3:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector3Block;\n case FlowGraphBlockNames.CombineVector4:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector4Block;\n case FlowGraphBlockNames.CombineMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrixBlock;\n case FlowGraphBlockNames.CombineMatrix2D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrix2DBlock;\n case FlowGraphBlockNames.CombineMatrix3D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrix3DBlock;\n case FlowGraphBlockNames.ExtractVector2:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector2Block;\n case FlowGraphBlockNames.ExtractVector3:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector3Block;\n case FlowGraphBlockNames.ExtractVector4:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector4Block;\n case FlowGraphBlockNames.ExtractMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrixBlock;\n case FlowGraphBlockNames.ExtractMatrix2D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrix2DBlock;\n case FlowGraphBlockNames.ExtractMatrix3D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrix3DBlock;\n case FlowGraphBlockNames.TransformVector:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphTransformBlock;\n case FlowGraphBlockNames.TransformCoordinates:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphTransformCoordinatesBlock;\n case FlowGraphBlockNames.Conjugate:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphConjugateBlock;\n case FlowGraphBlockNames.AngleBetween:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphAngleBetweenBlock;\n case FlowGraphBlockNames.QuaternionFromAxisAngle:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromAxisAngleBlock;\n case FlowGraphBlockNames.AxisAngleFromQuaternion:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphAxisAngleFromQuaternionBlock;\n case FlowGraphBlockNames.QuaternionFromDirections:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromDirectionsBlock;\n case FlowGraphBlockNames.MatrixDecompose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixDecomposeBlock;\n case FlowGraphBlockNames.MatrixCompose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixComposeBlock;\n case FlowGraphBlockNames.BooleanToFloat:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphBooleanToFloat;\n case FlowGraphBlockNames.BooleanToInt:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphBooleanToInt;\n case FlowGraphBlockNames.FloatToBoolean:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphFloatToBoolean;\n case FlowGraphBlockNames.IntToBoolean:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphIntToBoolean;\n case FlowGraphBlockNames.IntToFloat:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphIntToFloat;\n case FlowGraphBlockNames.FloatToInt:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphFloatToInt;\n case FlowGraphBlockNames.Easing:\n return async () => (await import(\"./Execution/Animation/flowGraphEasingBlock\")).FlowGraphEasingBlock;\n case FlowGraphBlockNames.BezierCurveEasing:\n return async () => (await import(\"./Execution/Animation/flowGraphBezierCurveEasingBlock\")).FlowGraphBezierCurveEasingBlock;\n case FlowGraphBlockNames.PointerOverEvent:\n return async () => (await import(\"./Event/flowGraphPointerOverEventBlock\")).FlowGraphPointerOverEventBlock;\n case FlowGraphBlockNames.PointerOutEvent:\n return async () => (await import(\"./Event/flowGraphPointerOutEventBlock\")).FlowGraphPointerOutEventBlock;\n case FlowGraphBlockNames.PointerDownEvent:\n return async () => (await import(\"./Event/flowGraphPointerDownEventBlock\")).FlowGraphPointerDownEventBlock;\n case FlowGraphBlockNames.PointerUpEvent:\n return async () => (await import(\"./Event/flowGraphPointerUpEventBlock\")).FlowGraphPointerUpEventBlock;\n case FlowGraphBlockNames.PointerMoveEvent:\n return async () => (await import(\"./Event/flowGraphPointerMoveEventBlock\")).FlowGraphPointerMoveEventBlock;\n // Keyboard\n case FlowGraphBlockNames.KeyDownEvent:\n return async () => (await import(\"./Event/flowGraphKeyDownEventBlock\")).FlowGraphKeyDownEventBlock;\n case FlowGraphBlockNames.KeyUpEvent:\n return async () => (await import(\"./Event/flowGraphKeyUpEventBlock\")).FlowGraphKeyUpEventBlock;\n case FlowGraphBlockNames.IsKeyPressed:\n return async () => (await import(\"./Data/flowGraphIsKeyPressedBlock\")).FlowGraphIsKeyPressedBlock;\n case FlowGraphBlockNames.Context:\n return async () => (await import(\"./Data/Utils/flowGraphContextBlock\")).FlowGraphContextBlock;\n case FlowGraphBlockNames.ArrayIndex:\n return async () => (await import(\"./Data/Utils/flowGraphArrayIndexBlock\")).FlowGraphArrayIndexBlock;\n case FlowGraphBlockNames.CodeExecution:\n return async () => (await import(\"./Data/Utils/flowGraphCodeExecutionBlock\")).FlowGraphCodeExecutionBlock;\n case FlowGraphBlockNames.IndexOf:\n return async () => (await import(\"./Data/Utils/flowGraphIndexOfBlock\")).FlowGraphIndexOfBlock;\n case FlowGraphBlockNames.FunctionReference:\n return async () => (await import(\"./Data/Utils/flowGraphFunctionReferenceBlock\")).FlowGraphFunctionReferenceBlock;\n case FlowGraphBlockNames.DataSwitch:\n return async () => (await import(\"./Data/flowGraphDataSwitchBlock\")).FlowGraphDataSwitchBlock;\n case FlowGraphBlockNames.DebugBlock:\n return async () => (await import(\"./Data/flowGraphDebugBlock\")).FlowGraphDebugBlock;\n // Physics\n case FlowGraphBlockNames.PhysicsCollisionEvent:\n return async () => (await import(\"./Event/flowGraphPhysicsCollisionEventBlock\")).FlowGraphPhysicsCollisionEventBlock;\n case FlowGraphBlockNames.PhysicsApplyForce:\n return async () => (await import(\"./Execution/Physics/flowGraphApplyForceBlock\")).FlowGraphApplyForceBlock;\n case FlowGraphBlockNames.PhysicsApplyImpulse:\n return async () => (await import(\"./Execution/Physics/flowGraphApplyImpulseBlock\")).FlowGraphApplyImpulseBlock;\n case FlowGraphBlockNames.PhysicsSetLinearVelocity:\n return async () => (await import(\"./Execution/Physics/flowGraphSetLinearVelocityBlock\")).FlowGraphSetLinearVelocityBlock;\n case FlowGraphBlockNames.PhysicsSetAngularVelocity:\n return async () => (await import(\"./Execution/Physics/flowGraphSetAngularVelocityBlock\")).FlowGraphSetAngularVelocityBlock;\n case FlowGraphBlockNames.PhysicsSetMotionType:\n return async () => (await import(\"./Execution/Physics/flowGraphSetPhysicsMotionTypeBlock\")).FlowGraphSetPhysicsMotionTypeBlock;\n case FlowGraphBlockNames.PhysicsGetLinearVelocity:\n return async () => (await import(\"./Data/Physics/flowGraphGetLinearVelocityBlock\")).FlowGraphGetLinearVelocityBlock;\n case FlowGraphBlockNames.PhysicsGetAngularVelocity:\n return async () => (await import(\"./Data/Physics/flowGraphGetAngularVelocityBlock\")).FlowGraphGetAngularVelocityBlock;\n case FlowGraphBlockNames.PhysicsGetMassProperties:\n return async () => (await import(\"./Data/Physics/flowGraphGetPhysicsMassPropertiesBlock\")).FlowGraphGetPhysicsMassPropertiesBlock;\n // Audio\n case FlowGraphBlockNames.AudioPlaySound:\n return async () => (await import(\"./Execution/Audio/flowGraphPlaySoundBlock\")).FlowGraphPlaySoundBlock;\n case FlowGraphBlockNames.AudioStopSound:\n return async () => (await import(\"./Execution/Audio/flowGraphStopSoundBlock\")).FlowGraphStopSoundBlock;\n case FlowGraphBlockNames.AudioPauseSound:\n return async () => (await import(\"./Execution/Audio/flowGraphPauseSoundBlock\")).FlowGraphPauseSoundBlock;\n case FlowGraphBlockNames.AudioSetVolume:\n return async () => (await import(\"./Execution/Audio/flowGraphSetSoundVolumeBlock\")).FlowGraphSetSoundVolumeBlock;\n case FlowGraphBlockNames.AudioSoundEndedEvent:\n return async () => (await import(\"./Event/flowGraphSoundEndedEventBlock\")).FlowGraphSoundEndedEventBlock;\n case FlowGraphBlockNames.AudioGetVolume:\n return async () => (await import(\"./Data/Audio/flowGraphGetSoundVolumeBlock\")).FlowGraphGetSoundVolumeBlock;\n case FlowGraphBlockNames.AudioIsSoundPlaying:\n return async () => (await import(\"./Data/Audio/flowGraphIsSoundPlayingBlock\")).FlowGraphIsSoundPlayingBlock;\n default:\n // check if the block is a custom block\n if (CustomBlocks[blockName]) {\n return CustomBlocks[blockName];\n }\n // Fallback: O(1) reverse lookup by short name (e.g. \"FlowGraphGLTFDataProvider\" → \"KHR_interactivity/FlowGraphGLTFDataProvider\")\n if (!blockName.includes(\"/\")) {\n const fullKey = ShortNameToFullKey[blockName];\n if (fullKey && CustomBlocks[fullKey]) {\n return CustomBlocks[fullKey];\n }\n }\n throw new Error(`Unknown block name ${blockName}`);\n }\n}\n"]}
|
|
@@ -18,6 +18,9 @@ export declare enum FlowGraphBlockNames {
|
|
|
18
18
|
PointerMoveEvent = "FlowGraphPointerMoveEventBlock",
|
|
19
19
|
PointerOverEvent = "FlowGraphPointerOverEventBlock",
|
|
20
20
|
PointerOutEvent = "FlowGraphPointerOutEventBlock",
|
|
21
|
+
KeyDownEvent = "FlowGraphKeyDownEventBlock",
|
|
22
|
+
KeyUpEvent = "FlowGraphKeyUpEventBlock",
|
|
23
|
+
IsKeyPressed = "FlowGraphIsKeyPressedBlock",
|
|
21
24
|
E = "FlowGraphEBlock",
|
|
22
25
|
PI = "FlowGraphPIBlock",
|
|
23
26
|
Inf = "FlowGraphInfBlock",
|
|
@@ -19,6 +19,9 @@ export var FlowGraphBlockNames;
|
|
|
19
19
|
FlowGraphBlockNames["PointerMoveEvent"] = "FlowGraphPointerMoveEventBlock";
|
|
20
20
|
FlowGraphBlockNames["PointerOverEvent"] = "FlowGraphPointerOverEventBlock";
|
|
21
21
|
FlowGraphBlockNames["PointerOutEvent"] = "FlowGraphPointerOutEventBlock";
|
|
22
|
+
FlowGraphBlockNames["KeyDownEvent"] = "FlowGraphKeyDownEventBlock";
|
|
23
|
+
FlowGraphBlockNames["KeyUpEvent"] = "FlowGraphKeyUpEventBlock";
|
|
24
|
+
FlowGraphBlockNames["IsKeyPressed"] = "FlowGraphIsKeyPressedBlock";
|
|
22
25
|
FlowGraphBlockNames["E"] = "FlowGraphEBlock";
|
|
23
26
|
FlowGraphBlockNames["PI"] = "FlowGraphPIBlock";
|
|
24
27
|
FlowGraphBlockNames["Inf"] = "FlowGraphInfBlock";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphBlockNames.js","sourceRoot":"","sources":["../../../../../dev/core/src/FlowGraph/Blocks/flowGraphBlockNames.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Enum of all block names.\n * Note - if you add a new block, you must add it here, and must add it in the block factory!\n */\nexport const enum FlowGraphBlockNames {\n PlayAnimation = \"FlowGraphPlayAnimationBlock\",\n StopAnimation = \"FlowGraphStopAnimationBlock\",\n PauseAnimation = \"FlowGraphPauseAnimationBlock\",\n ValueInterpolation = \"FlowGraphInterpolationBlock\",\n SceneReadyEvent = \"FlowGraphSceneReadyEventBlock\",\n SceneTickEvent = \"FlowGraphSceneTickEventBlock\",\n SendCustomEvent = \"FlowGraphSendCustomEventBlock\",\n ReceiveCustomEvent = \"FlowGraphReceiveCustomEventBlock\",\n MeshPickEvent = \"FlowGraphMeshPickEventBlock\",\n PointerEvent = \"FlowGraphPointerEventBlock\",\n PointerDownEvent = \"FlowGraphPointerDownEventBlock\",\n PointerUpEvent = \"FlowGraphPointerUpEventBlock\",\n PointerMoveEvent = \"FlowGraphPointerMoveEventBlock\",\n PointerOverEvent = \"FlowGraphPointerOverEventBlock\",\n PointerOutEvent = \"FlowGraphPointerOutEventBlock\",\n E = \"FlowGraphEBlock\",\n PI = \"FlowGraphPIBlock\",\n Inf = \"FlowGraphInfBlock\",\n NaN = \"FlowGraphNaNBlock\",\n Random = \"FlowGraphRandomBlock\",\n Add = \"FlowGraphAddBlock\",\n Subtract = \"FlowGraphSubtractBlock\",\n Multiply = \"FlowGraphMultiplyBlock\",\n Divide = \"FlowGraphDivideBlock\",\n Abs = \"FlowGraphAbsBlock\",\n Sign = \"FlowGraphSignBlock\",\n Trunc = \"FlowGraphTruncBlock\",\n Floor = \"FlowGraphFloorBlock\",\n Ceil = \"FlowGraphCeilBlock\",\n Round = \"FlowGraphRoundBlock\",\n Fraction = \"FlowGraphFractBlock\",\n Negation = \"FlowGraphNegationBlock\",\n Modulo = \"FlowGraphModuloBlock\",\n Min = \"FlowGraphMinBlock\",\n Max = \"FlowGraphMaxBlock\",\n Clamp = \"FlowGraphClampBlock\",\n Saturate = \"FlowGraphSaturateBlock\",\n MathInterpolation = \"FlowGraphMathInterpolationBlock\",\n Equality = \"FlowGraphEqualityBlock\",\n LessThan = \"FlowGraphLessThanBlock\",\n LessThanOrEqual = \"FlowGraphLessThanOrEqualBlock\",\n GreaterThan = \"FlowGraphGreaterThanBlock\",\n GreaterThanOrEqual = \"FlowGraphGreaterThanOrEqualBlock\",\n IsNaN = \"FlowGraphIsNaNBlock\",\n IsInfinity = \"FlowGraphIsInfBlock\",\n DegToRad = \"FlowGraphDegToRadBlock\",\n RadToDeg = \"FlowGraphRadToDegBlock\",\n Sin = \"FlowGraphSinBlock\",\n Cos = \"FlowGraphCosBlock\",\n Tan = \"FlowGraphTanBlock\",\n Asin = \"FlowGraphASinBlock\",\n Acos = \"FlowGraphACosBlock\",\n Atan = \"FlowGraphATanBlock\",\n Atan2 = \"FlowGraphATan2Block\",\n Sinh = \"FlowGraphSinhBlock\",\n Cosh = \"FlowGraphCoshBlock\",\n Tanh = \"FlowGraphTanhBlock\",\n Asinh = \"FlowGraphASinhBlock\",\n Acosh = \"FlowGraphACoshBlock\",\n Atanh = \"FlowGraphATanhBlock\",\n Exponential = \"FlowGraphExponentialBlock\",\n Log = \"FlowGraphLogBlock\",\n Log2 = \"FlowGraphLog2Block\",\n Log10 = \"FlowGraphLog10Block\",\n SquareRoot = \"FlowGraphSquareRootBlock\",\n CubeRoot = \"FlowGraphCubeRootBlock\",\n Power = \"FlowGraphPowerBlock\",\n Length = \"FlowGraphLengthBlock\",\n Normalize = \"FlowGraphNormalizeBlock\",\n Dot = \"FlowGraphDotBlock\",\n Cross = \"FlowGraphCrossBlock\",\n Rotate2D = \"FlowGraphRotate2DBlock\",\n Rotate3D = \"FlowGraphRotate3DBlock\",\n Transpose = \"FlowGraphTransposeBlock\",\n Determinant = \"FlowGraphDeterminantBlock\",\n InvertMatrix = \"FlowGraphInvertMatrixBlock\",\n MatrixMultiplication = \"FlowGraphMatrixMultiplicationBlock\",\n BitwiseAnd = \"FlowGraphBitwiseAndBlock\",\n BitwiseOr = \"FlowGraphBitwiseOrBlock\",\n BitwiseXor = \"FlowGraphBitwiseXorBlock\",\n BitwiseNot = \"FlowGraphBitwiseNotBlock\",\n BitwiseLeftShift = \"FlowGraphBitwiseLeftShiftBlock\",\n BitwiseRightShift = \"FlowGraphBitwiseRightShiftBlock\",\n LeadingZeros = \"FlowGraphLeadingZerosBlock\",\n TrailingZeros = \"FlowGraphTrailingZerosBlock\",\n OneBitsCounter = \"FlowGraphOneBitsCounterBlock\",\n Branch = \"FlowGraphBranchBlock\",\n SetDelay = \"FlowGraphSetDelayBlock\",\n CancelDelay = \"FlowGraphCancelDelayBlock\",\n CallCounter = \"FlowGraphCallCounterBlock\",\n Debounce = \"FlowGraphDebounceBlock\",\n Throttle = \"FlowGraphThrottleBlock\",\n DoN = \"FlowGraphDoNBlock\",\n FlipFlop = \"FlowGraphFlipFlopBlock\",\n ForLoop = \"FlowGraphForLoopBlock\",\n MultiGate = \"FlowGraphMultiGateBlock\",\n Sequence = \"FlowGraphSequenceBlock\",\n Switch = \"FlowGraphSwitchBlock\",\n WaitAll = \"FlowGraphWaitAllBlock\",\n WhileLoop = \"FlowGraphWhileLoopBlock\",\n ConsoleLog = \"FlowGraphConsoleLogBlock\",\n Conditional = \"FlowGraphConditionalBlock\",\n Constant = \"FlowGraphConstantBlock\",\n TransformCoordinatesSystem = \"FlowGraphTransformCoordinatesSystemBlock\",\n GetAsset = \"FlowGraphGetAssetBlock\",\n GetProperty = \"FlowGraphGetPropertyBlock\",\n SetProperty = \"FlowGraphSetPropertyBlock\",\n GetVariable = \"FlowGraphGetVariableBlock\",\n SetVariable = \"FlowGraphSetVariableBlock\",\n JsonPointerParser = \"FlowGraphJsonPointerParserBlock\",\n CombineVector2 = \"FlowGraphCombineVector2Block\",\n CombineVector3 = \"FlowGraphCombineVector3Block\",\n CombineVector4 = \"FlowGraphCombineVector4Block\",\n CombineMatrix = \"FlowGraphCombineMatrixBlock\",\n CombineMatrix2D = \"FlowGraphCombineMatrix2DBlock\",\n CombineMatrix3D = \"FlowGraphCombineMatrix3DBlock\",\n ExtractVector2 = \"FlowGraphExtractVector2Block\",\n ExtractVector3 = \"FlowGraphExtractVector3Block\",\n ExtractVector4 = \"FlowGraphExtractVector4Block\",\n ExtractMatrix = \"FlowGraphExtractMatrixBlock\",\n ExtractMatrix2D = \"FlowGraphExtractMatrix2DBlock\",\n ExtractMatrix3D = \"FlowGraphExtractMatrix3DBlock\",\n TransformVector = \"FlowGraphTransformVectorBlock\",\n TransformCoordinates = \"FlowGraphTransformCoordinatesBlock\",\n Conjugate = \"FlowGraphConjugateBlock\",\n AngleBetween = \"FlowGraphAngleBetweenBlock\",\n QuaternionFromAxisAngle = \"FlowGraphQuaternionFromAxisAngleBlock\",\n AxisAngleFromQuaternion = \"FlowGraphAxisAngleFromQuaternionBlock\",\n QuaternionFromDirections = \"FlowGraphQuaternionFromDirectionsBlock\",\n MatrixDecompose = \"FlowGraphMatrixDecompose\",\n MatrixCompose = \"FlowGraphMatrixCompose\",\n BooleanToFloat = \"FlowGraphBooleanToFloat\",\n BooleanToInt = \"FlowGraphBooleanToInt\",\n FloatToBoolean = \"FlowGraphFloatToBoolean\",\n IntToBoolean = \"FlowGraphIntToBoolean\",\n IntToFloat = \"FlowGraphIntToFloat\",\n FloatToInt = \"FlowGraphFloatToInt\",\n Easing = \"FlowGraphEasingBlock\",\n Context = \"FlowGraphContextBlock\",\n ArrayIndex = \"FlowGraphArrayIndexBlock\",\n CodeExecution = \"FlowGraphCodeExecutionBlock\",\n IndexOf = \"FlowGraphIndexOfBlock\",\n FunctionReference = \"FlowGraphFunctionReference\",\n BezierCurveEasing = \"FlowGraphBezierCurveEasing\",\n DataSwitch = \"FlowGraphDataSwitchBlock\",\n DebugBlock = \"FlowGraphDebugBlock\",\n // Physics\n PhysicsCollisionEvent = \"FlowGraphPhysicsCollisionEventBlock\",\n PhysicsApplyForce = \"FlowGraphApplyForceBlock\",\n PhysicsApplyImpulse = \"FlowGraphApplyImpulseBlock\",\n PhysicsSetLinearVelocity = \"FlowGraphSetLinearVelocityBlock\",\n PhysicsSetAngularVelocity = \"FlowGraphSetAngularVelocityBlock\",\n PhysicsSetMotionType = \"FlowGraphSetPhysicsMotionTypeBlock\",\n PhysicsGetLinearVelocity = \"FlowGraphGetLinearVelocityBlock\",\n PhysicsGetAngularVelocity = \"FlowGraphGetAngularVelocityBlock\",\n PhysicsGetMassProperties = \"FlowGraphGetPhysicsMassPropertiesBlock\",\n // Audio\n AudioPlaySound = \"FlowGraphPlaySoundBlock\",\n AudioStopSound = \"FlowGraphStopSoundBlock\",\n AudioPauseSound = \"FlowGraphPauseSoundBlock\",\n AudioSetVolume = \"FlowGraphSetSoundVolumeBlock\",\n AudioSoundEndedEvent = \"FlowGraphSoundEndedEventBlock\",\n AudioGetVolume = \"FlowGraphGetSoundVolumeBlock\",\n AudioIsSoundPlaying = \"FlowGraphIsSoundPlayingBlock\",\n}\n"]}
|
|
1
|
+
{"version":3,"file":"flowGraphBlockNames.js","sourceRoot":"","sources":["../../../../../dev/core/src/FlowGraph/Blocks/flowGraphBlockNames.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAkB,mBAwKjB;AAxKD,WAAkB,mBAAmB;IACjC,oEAA6C,CAAA;IAC7C,oEAA6C,CAAA;IAC7C,sEAA+C,CAAA;IAC/C,yEAAkD,CAAA;IAClD,wEAAiD,CAAA;IACjD,sEAA+C,CAAA;IAC/C,wEAAiD,CAAA;IACjD,8EAAuD,CAAA;IACvD,oEAA6C,CAAA;IAC7C,kEAA2C,CAAA;IAC3C,0EAAmD,CAAA;IACnD,sEAA+C,CAAA;IAC/C,0EAAmD,CAAA;IACnD,0EAAmD,CAAA;IACnD,wEAAiD,CAAA;IACjD,kEAA2C,CAAA;IAC3C,8DAAuC,CAAA;IACvC,kEAA2C,CAAA;IAC3C,4CAAqB,CAAA;IACrB,8CAAuB,CAAA;IACvB,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,sDAA+B,CAAA;IAC/B,gDAAyB,CAAA;IACzB,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,sDAA+B,CAAA;IAC/B,gDAAyB,CAAA;IACzB,kDAA2B,CAAA;IAC3B,oDAA6B,CAAA;IAC7B,oDAA6B,CAAA;IAC7B,kDAA2B,CAAA;IAC3B,oDAA6B,CAAA;IAC7B,uDAAgC,CAAA;IAChC,0DAAmC,CAAA;IACnC,sDAA+B,CAAA;IAC/B,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,oDAA6B,CAAA;IAC7B,0DAAmC,CAAA;IACnC,4EAAqD,CAAA;IACrD,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,wEAAiD,CAAA;IACjD,gEAAyC,CAAA;IACzC,8EAAuD,CAAA;IACvD,oDAA6B,CAAA;IAC7B,yDAAkC,CAAA;IAClC,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;IAC3B,oDAA6B,CAAA;IAC7B,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;IAC3B,oDAA6B,CAAA;IAC7B,oDAA6B,CAAA;IAC7B,oDAA6B,CAAA;IAC7B,gEAAyC,CAAA;IACzC,gDAAyB,CAAA;IACzB,kDAA2B,CAAA;IAC3B,oDAA6B,CAAA;IAC7B,8DAAuC,CAAA;IACvC,0DAAmC,CAAA;IACnC,oDAA6B,CAAA;IAC7B,sDAA+B,CAAA;IAC/B,4DAAqC,CAAA;IACrC,gDAAyB,CAAA;IACzB,oDAA6B,CAAA;IAC7B,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,4DAAqC,CAAA;IACrC,gEAAyC,CAAA;IACzC,kEAA2C,CAAA;IAC3C,kFAA2D,CAAA;IAC3D,8DAAuC,CAAA;IACvC,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IACvC,8DAAuC,CAAA;IACvC,0EAAmD,CAAA;IACnD,4EAAqD,CAAA;IACrD,kEAA2C,CAAA;IAC3C,oEAA6C,CAAA;IAC7C,sEAA+C,CAAA;IAC/C,sDAA+B,CAAA;IAC/B,0DAAmC,CAAA;IACnC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,0DAAmC,CAAA;IACnC,0DAAmC,CAAA;IACnC,gDAAyB,CAAA;IACzB,0DAAmC,CAAA;IACnC,wDAAiC,CAAA;IACjC,4DAAqC,CAAA;IACrC,0DAAmC,CAAA;IACnC,sDAA+B,CAAA;IAC/B,wDAAiC,CAAA;IACjC,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,0DAAmC,CAAA;IACnC,8FAAuE,CAAA;IACvE,0DAAmC,CAAA;IACnC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,4EAAqD,CAAA;IACrD,sEAA+C,CAAA;IAC/C,sEAA+C,CAAA;IAC/C,sEAA+C,CAAA;IAC/C,oEAA6C,CAAA;IAC7C,wEAAiD,CAAA;IACjD,wEAAiD,CAAA;IACjD,sEAA+C,CAAA;IAC/C,sEAA+C,CAAA;IAC/C,sEAA+C,CAAA;IAC/C,oEAA6C,CAAA;IAC7C,wEAAiD,CAAA;IACjD,wEAAiD,CAAA;IACjD,wEAAiD,CAAA;IACjD,kFAA2D,CAAA;IAC3D,4DAAqC,CAAA;IACrC,kEAA2C,CAAA;IAC3C,wFAAiE,CAAA;IACjE,wFAAiE,CAAA;IACjE,0FAAmE,CAAA;IACnE,mEAA4C,CAAA;IAC5C,+DAAwC,CAAA;IACxC,iEAA0C,CAAA;IAC1C,6DAAsC,CAAA;IACtC,iEAA0C,CAAA;IAC1C,6DAAsC,CAAA;IACtC,yDAAkC,CAAA;IAClC,yDAAkC,CAAA;IAClC,sDAA+B,CAAA;IAC/B,wDAAiC,CAAA;IACjC,8DAAuC,CAAA;IACvC,oEAA6C,CAAA;IAC7C,wDAAiC,CAAA;IACjC,uEAAgD,CAAA;IAChD,uEAAgD,CAAA;IAChD,8DAAuC,CAAA;IACvC,yDAAkC,CAAA;IAClC,UAAU;IACV,oFAA6D,CAAA;IAC7D,qEAA8C,CAAA;IAC9C,yEAAkD,CAAA;IAClD,mFAA4D,CAAA;IAC5D,qFAA8D,CAAA;IAC9D,kFAA2D,CAAA;IAC3D,mFAA4D,CAAA;IAC5D,qFAA8D,CAAA;IAC9D,0FAAmE,CAAA;IACnE,QAAQ;IACR,iEAA0C,CAAA;IAC1C,iEAA0C,CAAA;IAC1C,mEAA4C,CAAA;IAC5C,sEAA+C,CAAA;IAC/C,6EAAsD,CAAA;IACtD,sEAA+C,CAAA;IAC/C,2EAAoD,CAAA;AACxD,CAAC,EAxKiB,mBAAmB,KAAnB,mBAAmB,QAwKpC","sourcesContent":["/**\n * Enum of all block names.\n * Note - if you add a new block, you must add it here, and must add it in the block factory!\n */\nexport const enum FlowGraphBlockNames {\n PlayAnimation = \"FlowGraphPlayAnimationBlock\",\n StopAnimation = \"FlowGraphStopAnimationBlock\",\n PauseAnimation = \"FlowGraphPauseAnimationBlock\",\n ValueInterpolation = \"FlowGraphInterpolationBlock\",\n SceneReadyEvent = \"FlowGraphSceneReadyEventBlock\",\n SceneTickEvent = \"FlowGraphSceneTickEventBlock\",\n SendCustomEvent = \"FlowGraphSendCustomEventBlock\",\n ReceiveCustomEvent = \"FlowGraphReceiveCustomEventBlock\",\n MeshPickEvent = \"FlowGraphMeshPickEventBlock\",\n PointerEvent = \"FlowGraphPointerEventBlock\",\n PointerDownEvent = \"FlowGraphPointerDownEventBlock\",\n PointerUpEvent = \"FlowGraphPointerUpEventBlock\",\n PointerMoveEvent = \"FlowGraphPointerMoveEventBlock\",\n PointerOverEvent = \"FlowGraphPointerOverEventBlock\",\n PointerOutEvent = \"FlowGraphPointerOutEventBlock\",\n KeyDownEvent = \"FlowGraphKeyDownEventBlock\",\n KeyUpEvent = \"FlowGraphKeyUpEventBlock\",\n IsKeyPressed = \"FlowGraphIsKeyPressedBlock\",\n E = \"FlowGraphEBlock\",\n PI = \"FlowGraphPIBlock\",\n Inf = \"FlowGraphInfBlock\",\n NaN = \"FlowGraphNaNBlock\",\n Random = \"FlowGraphRandomBlock\",\n Add = \"FlowGraphAddBlock\",\n Subtract = \"FlowGraphSubtractBlock\",\n Multiply = \"FlowGraphMultiplyBlock\",\n Divide = \"FlowGraphDivideBlock\",\n Abs = \"FlowGraphAbsBlock\",\n Sign = \"FlowGraphSignBlock\",\n Trunc = \"FlowGraphTruncBlock\",\n Floor = \"FlowGraphFloorBlock\",\n Ceil = \"FlowGraphCeilBlock\",\n Round = \"FlowGraphRoundBlock\",\n Fraction = \"FlowGraphFractBlock\",\n Negation = \"FlowGraphNegationBlock\",\n Modulo = \"FlowGraphModuloBlock\",\n Min = \"FlowGraphMinBlock\",\n Max = \"FlowGraphMaxBlock\",\n Clamp = \"FlowGraphClampBlock\",\n Saturate = \"FlowGraphSaturateBlock\",\n MathInterpolation = \"FlowGraphMathInterpolationBlock\",\n Equality = \"FlowGraphEqualityBlock\",\n LessThan = \"FlowGraphLessThanBlock\",\n LessThanOrEqual = \"FlowGraphLessThanOrEqualBlock\",\n GreaterThan = \"FlowGraphGreaterThanBlock\",\n GreaterThanOrEqual = \"FlowGraphGreaterThanOrEqualBlock\",\n IsNaN = \"FlowGraphIsNaNBlock\",\n IsInfinity = \"FlowGraphIsInfBlock\",\n DegToRad = \"FlowGraphDegToRadBlock\",\n RadToDeg = \"FlowGraphRadToDegBlock\",\n Sin = \"FlowGraphSinBlock\",\n Cos = \"FlowGraphCosBlock\",\n Tan = \"FlowGraphTanBlock\",\n Asin = \"FlowGraphASinBlock\",\n Acos = \"FlowGraphACosBlock\",\n Atan = \"FlowGraphATanBlock\",\n Atan2 = \"FlowGraphATan2Block\",\n Sinh = \"FlowGraphSinhBlock\",\n Cosh = \"FlowGraphCoshBlock\",\n Tanh = \"FlowGraphTanhBlock\",\n Asinh = \"FlowGraphASinhBlock\",\n Acosh = \"FlowGraphACoshBlock\",\n Atanh = \"FlowGraphATanhBlock\",\n Exponential = \"FlowGraphExponentialBlock\",\n Log = \"FlowGraphLogBlock\",\n Log2 = \"FlowGraphLog2Block\",\n Log10 = \"FlowGraphLog10Block\",\n SquareRoot = \"FlowGraphSquareRootBlock\",\n CubeRoot = \"FlowGraphCubeRootBlock\",\n Power = \"FlowGraphPowerBlock\",\n Length = \"FlowGraphLengthBlock\",\n Normalize = \"FlowGraphNormalizeBlock\",\n Dot = \"FlowGraphDotBlock\",\n Cross = \"FlowGraphCrossBlock\",\n Rotate2D = \"FlowGraphRotate2DBlock\",\n Rotate3D = \"FlowGraphRotate3DBlock\",\n Transpose = \"FlowGraphTransposeBlock\",\n Determinant = \"FlowGraphDeterminantBlock\",\n InvertMatrix = \"FlowGraphInvertMatrixBlock\",\n MatrixMultiplication = \"FlowGraphMatrixMultiplicationBlock\",\n BitwiseAnd = \"FlowGraphBitwiseAndBlock\",\n BitwiseOr = \"FlowGraphBitwiseOrBlock\",\n BitwiseXor = \"FlowGraphBitwiseXorBlock\",\n BitwiseNot = \"FlowGraphBitwiseNotBlock\",\n BitwiseLeftShift = \"FlowGraphBitwiseLeftShiftBlock\",\n BitwiseRightShift = \"FlowGraphBitwiseRightShiftBlock\",\n LeadingZeros = \"FlowGraphLeadingZerosBlock\",\n TrailingZeros = \"FlowGraphTrailingZerosBlock\",\n OneBitsCounter = \"FlowGraphOneBitsCounterBlock\",\n Branch = \"FlowGraphBranchBlock\",\n SetDelay = \"FlowGraphSetDelayBlock\",\n CancelDelay = \"FlowGraphCancelDelayBlock\",\n CallCounter = \"FlowGraphCallCounterBlock\",\n Debounce = \"FlowGraphDebounceBlock\",\n Throttle = \"FlowGraphThrottleBlock\",\n DoN = \"FlowGraphDoNBlock\",\n FlipFlop = \"FlowGraphFlipFlopBlock\",\n ForLoop = \"FlowGraphForLoopBlock\",\n MultiGate = \"FlowGraphMultiGateBlock\",\n Sequence = \"FlowGraphSequenceBlock\",\n Switch = \"FlowGraphSwitchBlock\",\n WaitAll = \"FlowGraphWaitAllBlock\",\n WhileLoop = \"FlowGraphWhileLoopBlock\",\n ConsoleLog = \"FlowGraphConsoleLogBlock\",\n Conditional = \"FlowGraphConditionalBlock\",\n Constant = \"FlowGraphConstantBlock\",\n TransformCoordinatesSystem = \"FlowGraphTransformCoordinatesSystemBlock\",\n GetAsset = \"FlowGraphGetAssetBlock\",\n GetProperty = \"FlowGraphGetPropertyBlock\",\n SetProperty = \"FlowGraphSetPropertyBlock\",\n GetVariable = \"FlowGraphGetVariableBlock\",\n SetVariable = \"FlowGraphSetVariableBlock\",\n JsonPointerParser = \"FlowGraphJsonPointerParserBlock\",\n CombineVector2 = \"FlowGraphCombineVector2Block\",\n CombineVector3 = \"FlowGraphCombineVector3Block\",\n CombineVector4 = \"FlowGraphCombineVector4Block\",\n CombineMatrix = \"FlowGraphCombineMatrixBlock\",\n CombineMatrix2D = \"FlowGraphCombineMatrix2DBlock\",\n CombineMatrix3D = \"FlowGraphCombineMatrix3DBlock\",\n ExtractVector2 = \"FlowGraphExtractVector2Block\",\n ExtractVector3 = \"FlowGraphExtractVector3Block\",\n ExtractVector4 = \"FlowGraphExtractVector4Block\",\n ExtractMatrix = \"FlowGraphExtractMatrixBlock\",\n ExtractMatrix2D = \"FlowGraphExtractMatrix2DBlock\",\n ExtractMatrix3D = \"FlowGraphExtractMatrix3DBlock\",\n TransformVector = \"FlowGraphTransformVectorBlock\",\n TransformCoordinates = \"FlowGraphTransformCoordinatesBlock\",\n Conjugate = \"FlowGraphConjugateBlock\",\n AngleBetween = \"FlowGraphAngleBetweenBlock\",\n QuaternionFromAxisAngle = \"FlowGraphQuaternionFromAxisAngleBlock\",\n AxisAngleFromQuaternion = \"FlowGraphAxisAngleFromQuaternionBlock\",\n QuaternionFromDirections = \"FlowGraphQuaternionFromDirectionsBlock\",\n MatrixDecompose = \"FlowGraphMatrixDecompose\",\n MatrixCompose = \"FlowGraphMatrixCompose\",\n BooleanToFloat = \"FlowGraphBooleanToFloat\",\n BooleanToInt = \"FlowGraphBooleanToInt\",\n FloatToBoolean = \"FlowGraphFloatToBoolean\",\n IntToBoolean = \"FlowGraphIntToBoolean\",\n IntToFloat = \"FlowGraphIntToFloat\",\n FloatToInt = \"FlowGraphFloatToInt\",\n Easing = \"FlowGraphEasingBlock\",\n Context = \"FlowGraphContextBlock\",\n ArrayIndex = \"FlowGraphArrayIndexBlock\",\n CodeExecution = \"FlowGraphCodeExecutionBlock\",\n IndexOf = \"FlowGraphIndexOfBlock\",\n FunctionReference = \"FlowGraphFunctionReference\",\n BezierCurveEasing = \"FlowGraphBezierCurveEasing\",\n DataSwitch = \"FlowGraphDataSwitchBlock\",\n DebugBlock = \"FlowGraphDebugBlock\",\n // Physics\n PhysicsCollisionEvent = \"FlowGraphPhysicsCollisionEventBlock\",\n PhysicsApplyForce = \"FlowGraphApplyForceBlock\",\n PhysicsApplyImpulse = \"FlowGraphApplyImpulseBlock\",\n PhysicsSetLinearVelocity = \"FlowGraphSetLinearVelocityBlock\",\n PhysicsSetAngularVelocity = \"FlowGraphSetAngularVelocityBlock\",\n PhysicsSetMotionType = \"FlowGraphSetPhysicsMotionTypeBlock\",\n PhysicsGetLinearVelocity = \"FlowGraphGetLinearVelocityBlock\",\n PhysicsGetAngularVelocity = \"FlowGraphGetAngularVelocityBlock\",\n PhysicsGetMassProperties = \"FlowGraphGetPhysicsMassPropertiesBlock\",\n // Audio\n AudioPlaySound = \"FlowGraphPlaySoundBlock\",\n AudioStopSound = \"FlowGraphStopSoundBlock\",\n AudioPauseSound = \"FlowGraphPauseSoundBlock\",\n AudioSetVolume = \"FlowGraphSetSoundVolumeBlock\",\n AudioSoundEndedEvent = \"FlowGraphSoundEndedEventBlock\",\n AudioGetVolume = \"FlowGraphGetSoundVolumeBlock\",\n AudioIsSoundPlaying = \"FlowGraphIsSoundPlayingBlock\",\n}\n"]}
|
package/FlowGraph/flowGraph.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { type IObjectAccessor } from "./typeDefinitions.js";
|
|
|
8
8
|
import { type IPathToObjectConverter } from "../ObjectModel/objectModelInterfaces.js";
|
|
9
9
|
import { type IAssetContainer } from "../IAssetContainer.js";
|
|
10
10
|
import { FlowGraphEventType } from "./flowGraphEventType.js";
|
|
11
|
+
import { FlowGraphSceneEventCoordinator } from "./flowGraphSceneEventCoordinator.js";
|
|
11
12
|
import { type IFlowGraphValidationResult } from "./flowGraphValidator.js";
|
|
12
13
|
export declare enum FlowGraphState {
|
|
13
14
|
/**
|
|
@@ -112,6 +113,11 @@ export declare class FlowGraph {
|
|
|
112
113
|
get coordinator(): FlowGraphCoordinator;
|
|
113
114
|
private _executionContexts;
|
|
114
115
|
private _sceneEventCoordinator;
|
|
116
|
+
/**
|
|
117
|
+
* The scene event coordinator for this graph.
|
|
118
|
+
* Provides access to runtime event state such as currently pressed keys.
|
|
119
|
+
*/
|
|
120
|
+
get sceneEventCoordinator(): FlowGraphSceneEventCoordinator;
|
|
115
121
|
private _eventObserver;
|
|
116
122
|
/**
|
|
117
123
|
* The state of the graph
|
package/FlowGraph/flowGraph.js
CHANGED
|
@@ -42,6 +42,13 @@ export class FlowGraph {
|
|
|
42
42
|
get coordinator() {
|
|
43
43
|
return this._coordinator;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* The scene event coordinator for this graph.
|
|
47
|
+
* Provides access to runtime event state such as currently pressed keys.
|
|
48
|
+
*/
|
|
49
|
+
get sceneEventCoordinator() {
|
|
50
|
+
return this._sceneEventCoordinator;
|
|
51
|
+
}
|
|
45
52
|
/**
|
|
46
53
|
* The state of the graph
|
|
47
54
|
*/
|
|
@@ -75,6 +82,8 @@ export class FlowGraph {
|
|
|
75
82
|
["PointerMove" /* FlowGraphEventType.PointerMove */]: [],
|
|
76
83
|
["PointerOver" /* FlowGraphEventType.PointerOver */]: [],
|
|
77
84
|
["PointerOut" /* FlowGraphEventType.PointerOut */]: [],
|
|
85
|
+
["KeyDown" /* FlowGraphEventType.KeyDown */]: [],
|
|
86
|
+
["KeyUp" /* FlowGraphEventType.KeyUp */]: [],
|
|
78
87
|
["SceneAfterRender" /* FlowGraphEventType.SceneAfterRender */]: [],
|
|
79
88
|
["NoTrigger" /* FlowGraphEventType.NoTrigger */]: [],
|
|
80
89
|
};
|
|
@@ -172,7 +181,7 @@ export class FlowGraph {
|
|
|
172
181
|
* @returns the context, where you can get and set variables
|
|
173
182
|
*/
|
|
174
183
|
createContext() {
|
|
175
|
-
const context = new FlowGraphContext({ scene: this._scene, coordinator: this._coordinator });
|
|
184
|
+
const context = new FlowGraphContext({ scene: this._scene, coordinator: this._coordinator, sceneEventCoordinator: this._sceneEventCoordinator });
|
|
176
185
|
this._executionContexts.push(context);
|
|
177
186
|
return context;
|
|
178
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraph.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Observer, Observable } from \"../Misc/observable\";\r\nimport { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene\";\r\nimport { type FlowGraphEventBlock } from \"./flowGraphEventBlock\";\r\nimport { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { type FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\r\nimport { FlowGraphAsyncExecutionBlock } from \"./flowGraphAsyncExecutionBlock\";\r\nimport { type FlowGraphCoordinator } from \"./flowGraphCoordinator\";\r\nimport { type IObjectAccessor } from \"./typeDefinitions\";\r\nimport { type IPathToObjectConverter } from \"../ObjectModel/objectModelInterfaces\";\r\nimport { type IAssetContainer } from \"core/IAssetContainer\";\r\nimport { FlowGraphEventType } from \"./flowGraphEventType\";\r\nimport { type IFlowGraphEventTrigger, FlowGraphSceneEventCoordinator } from \"./flowGraphSceneEventCoordinator\";\r\nimport { type FlowGraphMeshPickEventBlock } from \"./Blocks/Event/flowGraphMeshPickEventBlock\";\r\nimport { _IsDescendantOf } from \"./utils\";\r\nimport { type IFlowGraphValidationResult, ValidateFlowGraphWithBlockList } from \"./flowGraphValidator\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\n\r\nexport const enum FlowGraphState {\r\n /**\r\n * The graph is stopped\r\n */\r\n Stopped,\r\n /**\r\n * The graph is running\r\n */\r\n Started,\r\n /**\r\n * The graph is paused (contexts kept, pending tasks cancelled)\r\n */\r\n Paused,\r\n}\r\n\r\n/**\r\n * Parameters used to create a flow graph.\r\n */\r\nexport interface IFlowGraphParams {\r\n /**\r\n * The scene that the flow graph belongs to.\r\n */\r\n scene: Scene;\r\n /**\r\n * The event coordinator used by the flow graph.\r\n */\r\n coordinator: FlowGraphCoordinator;\r\n /**\r\n * Optional human-readable name for the graph.\r\n * Defaults to \"Graph\" if not provided.\r\n */\r\n name?: string;\r\n /**\r\n * Optional unique identifier for the graph.\r\n * If not provided, a random UUID is generated.\r\n */\r\n uniqueId?: string;\r\n}\r\n\r\n/**\r\n * Options for parsing a flow graph.\r\n */\r\nexport interface IFlowGraphParseOptions {\r\n /**\r\n * A function that parses complex values in a scene.\r\n * @param key the key of the value\r\n * @param serializationObject the object to read the value from\r\n * @param assetsContainer the assets container to read assets from\r\n * @param scene the scene to read the value from\r\n */\r\n valueParseFunction?: (key: string, serializationObject: any, assetsContainer: IAssetContainer, scene: Scene) => any;\r\n /**\r\n * The flow graph coordinator.\r\n */\r\n coordinator: FlowGraphCoordinator;\r\n /**\r\n * A function that converts a path to an object accessor.\r\n */\r\n pathConverter?: IPathToObjectConverter<IObjectAccessor>;\r\n}\r\n/**\r\n * Class used to represent a flow graph.\r\n * A flow graph is a graph of blocks that can be used to create complex logic.\r\n * Blocks can be added to the graph and connected to each other.\r\n * The graph can then be started, which will init and start all of its event blocks.\r\n *\r\n * @experimental FlowGraph is still in development and is subject to change.\r\n */\r\nexport class FlowGraph {\r\n /**\r\n * A human-readable name for this graph.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * A unique identifier for this graph. Auto-generated if not provided.\r\n */\r\n public uniqueId: string;\r\n\r\n /**\r\n * An observable that is triggered when the state of the graph changes.\r\n */\r\n public onStateChangedObservable: Observable<FlowGraphState> = new Observable();\r\n /** @internal */\r\n public _eventBlocks: { [keyof in FlowGraphEventType]: FlowGraphEventBlock[] } = {\r\n [FlowGraphEventType.SceneReady]: [],\r\n [FlowGraphEventType.SceneDispose]: [],\r\n [FlowGraphEventType.SceneBeforeRender]: [],\r\n [FlowGraphEventType.MeshPick]: [],\r\n [FlowGraphEventType.PointerDown]: [],\r\n [FlowGraphEventType.PointerUp]: [],\r\n [FlowGraphEventType.PointerMove]: [],\r\n [FlowGraphEventType.PointerOver]: [],\r\n [FlowGraphEventType.PointerOut]: [],\r\n [FlowGraphEventType.SceneAfterRender]: [],\r\n [FlowGraphEventType.NoTrigger]: [],\r\n };\r\n\r\n /**\r\n * All blocks that belong to this graph, including unreachable ones.\r\n * @internal\r\n */\r\n public _allBlocks: FlowGraphBlock[] = [];\r\n /**\r\n * @internal\r\n */\r\n public readonly _scene: Scene;\r\n\r\n /**\r\n * The scene associated with this flow graph.\r\n */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n private _coordinator: FlowGraphCoordinator;\r\n\r\n /**\r\n * The coordinator that owns this flow graph.\r\n */\r\n public get coordinator(): FlowGraphCoordinator {\r\n return this._coordinator;\r\n }\r\n private _executionContexts: FlowGraphContext[] = [];\r\n private _sceneEventCoordinator: FlowGraphSceneEventCoordinator;\r\n private _eventObserver: Nullable<Observer<IFlowGraphEventTrigger>>;\r\n\r\n /**\r\n * The state of the graph\r\n */\r\n private _state: FlowGraphState = FlowGraphState.Stopped;\r\n\r\n /**\r\n * The state of the graph\r\n */\r\n public get state() {\r\n return this._state;\r\n }\r\n\r\n /**\r\n * The state of the graph\r\n */\r\n public set state(value: FlowGraphState) {\r\n this._state = value;\r\n this.onStateChangedObservable.notifyObservers(value);\r\n }\r\n\r\n /**\r\n * Construct a Flow Graph\r\n * @param params construction parameters. currently only the scene\r\n */\r\n public constructor(params: IFlowGraphParams) {\r\n this._scene = params.scene;\r\n this._sceneEventCoordinator = new FlowGraphSceneEventCoordinator(this._scene);\r\n this._coordinator = params.coordinator;\r\n this.name = params.name ?? \"Graph\";\r\n this.uniqueId = params.uniqueId ?? RandomGUID();\r\n }\r\n\r\n private _attachEventObserver() {\r\n if (this._eventObserver) {\r\n return;\r\n }\r\n this._eventObserver = this._sceneEventCoordinator.onEventTriggeredObservable.add((event) => {\r\n if (event.type === FlowGraphEventType.SceneDispose) {\r\n this.dispose();\r\n return;\r\n }\r\n\r\n if (this.state !== FlowGraphState.Started) {\r\n return;\r\n }\r\n\r\n for (const context of this._executionContexts) {\r\n const order = this._getContextualOrder(event.type, context);\r\n for (const block of order) {\r\n // iterate contexts\r\n if (!block._executeEvent(context, event.payload)) {\r\n break;\r\n }\r\n }\r\n }\r\n // custom behavior(s) of specific events\r\n switch (event.type) {\r\n case FlowGraphEventType.SceneReady:\r\n this._sceneEventCoordinator.sceneReadyTriggered = true;\r\n break;\r\n case FlowGraphEventType.SceneBeforeRender:\r\n for (const context of this._executionContexts) {\r\n context._notifyOnTick(event.payload);\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _detachEventObserver() {\r\n this._eventObserver?.remove();\r\n this._eventObserver = null;\r\n }\r\n\r\n /**\r\n * Sets a new scene for this flow graph, re-wiring all event listeners.\r\n * This is useful when the scene the flow graph should listen to changes\r\n * (e.g. when a new scene is loaded in an editor preview).\r\n * If the graph is currently running, it will be stopped first and must be\r\n * restarted manually after calling this method.\r\n * @param scene the new scene to attach to\r\n */\r\n public setScene(scene: Scene): void {\r\n if (scene === this._scene) {\r\n return;\r\n }\r\n if (this.state === FlowGraphState.Started) {\r\n this.stop();\r\n }\r\n // Tear down old event coordinator\r\n this._detachEventObserver();\r\n this._sceneEventCoordinator.dispose();\r\n // Clear execution contexts so start() creates fresh ones with the new scene.\r\n // NOTE: This intentionally discards user variables and connection values.\r\n // Callers that need to preserve them (e.g. the Flow Graph Editor) should\r\n // snapshot context state BEFORE calling setScene() and restore it in a\r\n // wrapped createContext() callback after start() re-creates contexts.\r\n this._executionContexts.length = 0;\r\n // Rebuild with the new scene\r\n (this as { _scene: Scene })._scene = scene;\r\n this._scene.constantlyUpdateMeshUnderPointer = true; // ensure pointer info is always up to date for event blocks that need it\r\n this._sceneEventCoordinator = new FlowGraphSceneEventCoordinator(this._scene);\r\n // Pre-attach the event observer so that events from the new\r\n // coordinator are routed to the graph immediately. The handler\r\n // guards against processing events while the graph is stopped,\r\n // but having the observer in place ensures no events are lost\r\n // when start() is called shortly after.\r\n this._attachEventObserver();\r\n }\r\n\r\n /**\r\n * Create a context. A context represents one self contained execution for the graph, with its own variables.\r\n * @returns the context, where you can get and set variables\r\n */\r\n public createContext() {\r\n const context = new FlowGraphContext({ scene: this._scene, coordinator: this._coordinator });\r\n this._executionContexts.push(context);\r\n return context;\r\n }\r\n\r\n /**\r\n * Returns the execution context at a given index\r\n * @param index the index of the context\r\n * @returns the execution context at that index\r\n */\r\n public getContext(index: number) {\r\n return this._executionContexts[index];\r\n }\r\n\r\n /**\r\n * Returns the number of execution contexts currently attached to this graph.\r\n */\r\n public get contextCount(): number {\r\n return this._executionContexts.length;\r\n }\r\n\r\n /**\r\n * Remove an execution context by index. Any pending async blocks on\r\n * the context are cleared before removal.\r\n * @param index the index of the context to remove\r\n * @returns the removed context, or undefined if the index was out of range\r\n */\r\n public removeContext(index: number): FlowGraphContext | undefined {\r\n if (index < 0 || index >= this._executionContexts.length) {\r\n return undefined;\r\n }\r\n const [removed] = this._executionContexts.splice(index, 1);\r\n removed._clearPendingBlocks();\r\n return removed;\r\n }\r\n\r\n /**\r\n * Returns all blocks registered in this graph, including disconnected ones.\r\n * @returns a read-only array of all blocks\r\n */\r\n public getAllBlocks(): readonly FlowGraphBlock[] {\r\n return this._allBlocks;\r\n }\r\n\r\n /**\r\n * Register a block with the graph. This does not wire any connections;\r\n * it simply ensures the block is tracked so that serialization, editor\r\n * display, and validation see it even when it is not reachable from an\r\n * event block.\r\n * @param block the block to register\r\n */\r\n public addBlock(block: FlowGraphBlock): void {\r\n if (this._allBlocks.indexOf(block) === -1) {\r\n this._allBlocks.push(block);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a block from the graph. Disconnects all of its ports and, if it\r\n * is an event block, unregisters it from the event-block lists.\r\n * @param block the block to remove\r\n */\r\n public removeBlock(block: FlowGraphBlock): void {\r\n const idx = this._allBlocks.indexOf(block);\r\n if (idx !== -1) {\r\n this._allBlocks.splice(idx, 1);\r\n }\r\n // If it is an event block, remove from the event-block registry\r\n if (block instanceof FlowGraphExecutionBlock && \"type\" in block) {\r\n const eventBlock = block as unknown as FlowGraphEventBlock;\r\n const list = this._eventBlocks[eventBlock.type];\r\n if (list) {\r\n const eIdx = list.indexOf(eventBlock);\r\n if (eIdx !== -1) {\r\n list.splice(eIdx, 1);\r\n }\r\n }\r\n }\r\n // If the block has pending async tasks (e.g. event subscriptions),\r\n // cancel them in all active execution contexts so deletion takes\r\n // effect immediately even while the graph is running.\r\n if (block instanceof FlowGraphAsyncExecutionBlock) {\r\n for (const context of this._executionContexts) {\r\n block._cancelPendingTasks(context);\r\n block._resetAfterCanceled(context);\r\n }\r\n }\r\n // Disconnect all ports\r\n for (const input of block.dataInputs) {\r\n input.disconnectFromAll();\r\n }\r\n for (const output of block.dataOutputs) {\r\n output.disconnectFromAll();\r\n }\r\n if (block instanceof FlowGraphExecutionBlock) {\r\n for (const signalIn of block.signalInputs) {\r\n signalIn.disconnectFromAll();\r\n }\r\n for (const signalOut of block.signalOutputs) {\r\n signalOut.disconnectFromAll();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add an event block. When the graph is started, it will start listening to events\r\n * from the block and execute the graph when they are triggered.\r\n * @param block the event block to be added\r\n */\r\n public addEventBlock(block: FlowGraphEventBlock): void {\r\n this.addBlock(block);\r\n if (block.type === FlowGraphEventType.PointerOver || block.type === FlowGraphEventType.PointerOut) {\r\n this._scene.constantlyUpdateMeshUnderPointer = true;\r\n }\r\n\r\n this._eventBlocks[block.type].push(block);\r\n\r\n // if already started, sort and add to the pending\r\n if (this.state === FlowGraphState.Started) {\r\n for (const context of this._executionContexts) {\r\n block._startPendingTasks(context);\r\n }\r\n } else {\r\n this.onStateChangedObservable.addOnce((state) => {\r\n if (state === FlowGraphState.Started) {\r\n for (const context of this._executionContexts) {\r\n block._startPendingTasks(context);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Stops the flow graph. Cancels all pending tasks and clears execution contexts,\r\n * but keeps event blocks so the graph can be restarted.\r\n */\r\n public stop() {\r\n if (this.state === FlowGraphState.Stopped) {\r\n return;\r\n }\r\n this._detachEventObserver();\r\n this.state = FlowGraphState.Stopped;\r\n for (const context of this._executionContexts) {\r\n context._clearPendingBlocks();\r\n context._clearPendingActivation();\r\n }\r\n this._executionContexts.length = 0;\r\n }\r\n\r\n /**\r\n * Pauses the flow graph. Cancels pending tasks but keeps execution contexts and event blocks.\r\n * Call start() to resume.\r\n */\r\n public pause() {\r\n if (this.state !== FlowGraphState.Started) {\r\n return;\r\n }\r\n this._detachEventObserver();\r\n this.state = FlowGraphState.Paused;\r\n for (const context of this._executionContexts) {\r\n context._clearPendingBlocks();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the flow graph. Initializes the event blocks and starts listening to events.\r\n * Can also be called to resume from a paused state.\r\n */\r\n public start() {\r\n if (this.state === FlowGraphState.Started) {\r\n return;\r\n }\r\n const resumingFromPause = this.state === FlowGraphState.Paused;\r\n if (this._executionContexts.length === 0) {\r\n this.createContext();\r\n }\r\n this._attachEventObserver();\r\n this.state = FlowGraphState.Started;\r\n this._startPendingEvents();\r\n // On a fresh start (not resume), fire the SceneReady event.\r\n // The coordinator's own scene-ready observer may have already\r\n // fired (and been lost) while the graph was stopped, so reset\r\n // the flag and handle the ready state ourselves.\r\n if (!resumingFromPause) {\r\n this._sceneEventCoordinator.sceneReadyTriggered = false;\r\n if (this._scene.isReady(true)) {\r\n this._sceneEventCoordinator.sceneReadyTriggered = true;\r\n this._sceneEventCoordinator.onEventTriggeredObservable.notifyObservers({ type: FlowGraphEventType.SceneReady });\r\n } else {\r\n // Scene isn't ready yet (e.g. pending shader compilations after\r\n // a scene swap). Use executeWhenReady(true) which restarts the\r\n // readiness check loop — a plain addOnce on onReadyObservable\r\n // may never fire if the check loop already completed.\r\n this._scene.executeWhenReady(() => {\r\n if (this.state === FlowGraphState.Started && !this._sceneEventCoordinator.sceneReadyTriggered) {\r\n this._sceneEventCoordinator.sceneReadyTriggered = true;\r\n this._sceneEventCoordinator.onEventTriggeredObservable.notifyObservers({ type: FlowGraphEventType.SceneReady });\r\n }\r\n }, true);\r\n }\r\n }\r\n }\r\n\r\n private _startPendingEvents() {\r\n for (const context of this._executionContexts) {\r\n for (const type in this._eventBlocks) {\r\n const order = this._getContextualOrder(type as FlowGraphEventType, context);\r\n for (const block of order) {\r\n block._startPendingTasks(context);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _getContextualOrder(type: FlowGraphEventType, context: FlowGraphContext): FlowGraphEventBlock[] {\r\n const order = this._eventBlocks[type].sort((a, b) => b.initPriority - a.initPriority);\r\n\r\n if (type === FlowGraphEventType.MeshPick) {\r\n const meshPickOrder = [] as FlowGraphEventBlock[];\r\n for (const block1 of order) {\r\n // If the block is a mesh pick, guarantee that picks of children meshes come before picks of parent meshes\r\n const mesh1 = (block1 as FlowGraphMeshPickEventBlock).asset.getValue(context);\r\n let i = 0;\r\n for (; i < order.length; i++) {\r\n const block2 = order[i];\r\n const mesh2 = (block2 as FlowGraphMeshPickEventBlock).asset.getValue(context);\r\n if (mesh1 && mesh2 && _IsDescendantOf(mesh1, mesh2)) {\r\n break;\r\n }\r\n }\r\n meshPickOrder.splice(i, 0, block1);\r\n }\r\n return meshPickOrder;\r\n }\r\n return order;\r\n }\r\n\r\n /**\r\n * Disposes of the flow graph. Cancels any pending tasks and removes all event listeners.\r\n */\r\n public dispose() {\r\n if (this.state === FlowGraphState.Stopped) {\r\n return;\r\n }\r\n this.state = FlowGraphState.Stopped;\r\n for (const context of this._executionContexts) {\r\n context._clearPendingBlocks();\r\n context._clearPendingActivation();\r\n }\r\n this._executionContexts.length = 0;\r\n for (const type in this._eventBlocks) {\r\n this._eventBlocks[type as FlowGraphEventType].length = 0;\r\n }\r\n this._allBlocks.length = 0;\r\n this._detachEventObserver();\r\n this._sceneEventCoordinator.dispose();\r\n }\r\n\r\n /**\r\n * Executes a function in all blocks of a flow graph, starting with the event blocks.\r\n * @param visitor the function to execute.\r\n */\r\n public visitAllBlocks(visitor: (block: FlowGraphBlock) => void) {\r\n const visitList: FlowGraphBlock[] = [];\r\n const idsAddedToVisitList = new Set<string>();\r\n for (const type in this._eventBlocks) {\r\n for (const block of this._eventBlocks[type as FlowGraphEventType]) {\r\n visitList.push(block);\r\n idsAddedToVisitList.add(block.uniqueId);\r\n }\r\n }\r\n\r\n while (visitList.length > 0) {\r\n const block = visitList.pop()!;\r\n visitor(block);\r\n\r\n for (const dataIn of block.dataInputs) {\r\n for (const connection of dataIn._connectedPoint) {\r\n if (!idsAddedToVisitList.has(connection._ownerBlock.uniqueId)) {\r\n visitList.push(connection._ownerBlock);\r\n idsAddedToVisitList.add(connection._ownerBlock.uniqueId);\r\n }\r\n }\r\n }\r\n if (block instanceof FlowGraphExecutionBlock) {\r\n for (const signalOut of block.signalOutputs) {\r\n for (const connection of signalOut._connectedPoint) {\r\n if (!idsAddedToVisitList.has(connection._ownerBlock.uniqueId)) {\r\n visitList.push(connection._ownerBlock);\r\n idsAddedToVisitList.add(connection._ownerBlock.uniqueId);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates the flow graph and returns all issues found.\r\n * Uses the tracked block list for complete validation including unreachable block detection.\r\n * @returns The validation result containing errors and warnings.\r\n */\r\n public validate(): IFlowGraphValidationResult {\r\n return ValidateFlowGraphWithBlockList(this, this._allBlocks);\r\n }\r\n\r\n /**\r\n * Serializes a graph\r\n * @param serializationObject the object to write the values in\r\n * @param valueSerializeFunction a function to serialize complex values\r\n */\r\n public serialize(serializationObject: any = {}, valueSerializeFunction?: (key: string, value: any, serializationObject: any) => void) {\r\n serializationObject.name = this.name;\r\n serializationObject.uniqueId = this.uniqueId;\r\n serializationObject.allBlocks = [];\r\n // Collect all blocks: traversal-reachable ones plus any registered\r\n // orphans in _allBlocks (e.g. disconnected blocks in the editor).\r\n const seen = new Set<string>();\r\n const serializeBlock = (block: FlowGraphBlock) => {\r\n if (seen.has(block.uniqueId)) {\r\n return;\r\n }\r\n seen.add(block.uniqueId);\r\n const serializedBlock: any = {};\r\n block.serialize(serializedBlock);\r\n serializationObject.allBlocks.push(serializedBlock);\r\n };\r\n this.visitAllBlocks(serializeBlock);\r\n for (const block of this._allBlocks) {\r\n serializeBlock(block);\r\n }\r\n serializationObject.executionContexts = [];\r\n for (const context of this._executionContexts) {\r\n const serializedContext: any = {};\r\n context.serialize(serializedContext, valueSerializeFunction);\r\n serializationObject.executionContexts.push(serializedContext);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"flowGraph.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Observer, Observable } from \"../Misc/observable\";\r\nimport { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene\";\r\nimport { type FlowGraphEventBlock } from \"./flowGraphEventBlock\";\r\nimport { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { type FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\r\nimport { FlowGraphAsyncExecutionBlock } from \"./flowGraphAsyncExecutionBlock\";\r\nimport { type FlowGraphCoordinator } from \"./flowGraphCoordinator\";\r\nimport { type IObjectAccessor } from \"./typeDefinitions\";\r\nimport { type IPathToObjectConverter } from \"../ObjectModel/objectModelInterfaces\";\r\nimport { type IAssetContainer } from \"core/IAssetContainer\";\r\nimport { FlowGraphEventType } from \"./flowGraphEventType\";\r\nimport { type IFlowGraphEventTrigger, FlowGraphSceneEventCoordinator } from \"./flowGraphSceneEventCoordinator\";\r\nimport { type FlowGraphMeshPickEventBlock } from \"./Blocks/Event/flowGraphMeshPickEventBlock\";\r\nimport { _IsDescendantOf } from \"./utils\";\r\nimport { type IFlowGraphValidationResult, ValidateFlowGraphWithBlockList } from \"./flowGraphValidator\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\n\r\nexport const enum FlowGraphState {\r\n /**\r\n * The graph is stopped\r\n */\r\n Stopped,\r\n /**\r\n * The graph is running\r\n */\r\n Started,\r\n /**\r\n * The graph is paused (contexts kept, pending tasks cancelled)\r\n */\r\n Paused,\r\n}\r\n\r\n/**\r\n * Parameters used to create a flow graph.\r\n */\r\nexport interface IFlowGraphParams {\r\n /**\r\n * The scene that the flow graph belongs to.\r\n */\r\n scene: Scene;\r\n /**\r\n * The event coordinator used by the flow graph.\r\n */\r\n coordinator: FlowGraphCoordinator;\r\n /**\r\n * Optional human-readable name for the graph.\r\n * Defaults to \"Graph\" if not provided.\r\n */\r\n name?: string;\r\n /**\r\n * Optional unique identifier for the graph.\r\n * If not provided, a random UUID is generated.\r\n */\r\n uniqueId?: string;\r\n}\r\n\r\n/**\r\n * Options for parsing a flow graph.\r\n */\r\nexport interface IFlowGraphParseOptions {\r\n /**\r\n * A function that parses complex values in a scene.\r\n * @param key the key of the value\r\n * @param serializationObject the object to read the value from\r\n * @param assetsContainer the assets container to read assets from\r\n * @param scene the scene to read the value from\r\n */\r\n valueParseFunction?: (key: string, serializationObject: any, assetsContainer: IAssetContainer, scene: Scene) => any;\r\n /**\r\n * The flow graph coordinator.\r\n */\r\n coordinator: FlowGraphCoordinator;\r\n /**\r\n * A function that converts a path to an object accessor.\r\n */\r\n pathConverter?: IPathToObjectConverter<IObjectAccessor>;\r\n}\r\n/**\r\n * Class used to represent a flow graph.\r\n * A flow graph is a graph of blocks that can be used to create complex logic.\r\n * Blocks can be added to the graph and connected to each other.\r\n * The graph can then be started, which will init and start all of its event blocks.\r\n *\r\n * @experimental FlowGraph is still in development and is subject to change.\r\n */\r\nexport class FlowGraph {\r\n /**\r\n * A human-readable name for this graph.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * A unique identifier for this graph. Auto-generated if not provided.\r\n */\r\n public uniqueId: string;\r\n\r\n /**\r\n * An observable that is triggered when the state of the graph changes.\r\n */\r\n public onStateChangedObservable: Observable<FlowGraphState> = new Observable();\r\n /** @internal */\r\n public _eventBlocks: { [keyof in FlowGraphEventType]: FlowGraphEventBlock[] } = {\r\n [FlowGraphEventType.SceneReady]: [],\r\n [FlowGraphEventType.SceneDispose]: [],\r\n [FlowGraphEventType.SceneBeforeRender]: [],\r\n [FlowGraphEventType.MeshPick]: [],\r\n [FlowGraphEventType.PointerDown]: [],\r\n [FlowGraphEventType.PointerUp]: [],\r\n [FlowGraphEventType.PointerMove]: [],\r\n [FlowGraphEventType.PointerOver]: [],\r\n [FlowGraphEventType.PointerOut]: [],\r\n [FlowGraphEventType.KeyDown]: [],\r\n [FlowGraphEventType.KeyUp]: [],\r\n [FlowGraphEventType.SceneAfterRender]: [],\r\n [FlowGraphEventType.NoTrigger]: [],\r\n };\r\n\r\n /**\r\n * All blocks that belong to this graph, including unreachable ones.\r\n * @internal\r\n */\r\n public _allBlocks: FlowGraphBlock[] = [];\r\n /**\r\n * @internal\r\n */\r\n public readonly _scene: Scene;\r\n\r\n /**\r\n * The scene associated with this flow graph.\r\n */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n private _coordinator: FlowGraphCoordinator;\r\n\r\n /**\r\n * The coordinator that owns this flow graph.\r\n */\r\n public get coordinator(): FlowGraphCoordinator {\r\n return this._coordinator;\r\n }\r\n private _executionContexts: FlowGraphContext[] = [];\r\n private _sceneEventCoordinator: FlowGraphSceneEventCoordinator;\r\n\r\n /**\r\n * The scene event coordinator for this graph.\r\n * Provides access to runtime event state such as currently pressed keys.\r\n */\r\n public get sceneEventCoordinator(): FlowGraphSceneEventCoordinator {\r\n return this._sceneEventCoordinator;\r\n }\r\n\r\n private _eventObserver: Nullable<Observer<IFlowGraphEventTrigger>>;\r\n\r\n /**\r\n * The state of the graph\r\n */\r\n private _state: FlowGraphState = FlowGraphState.Stopped;\r\n\r\n /**\r\n * The state of the graph\r\n */\r\n public get state() {\r\n return this._state;\r\n }\r\n\r\n /**\r\n * The state of the graph\r\n */\r\n public set state(value: FlowGraphState) {\r\n this._state = value;\r\n this.onStateChangedObservable.notifyObservers(value);\r\n }\r\n\r\n /**\r\n * Construct a Flow Graph\r\n * @param params construction parameters. currently only the scene\r\n */\r\n public constructor(params: IFlowGraphParams) {\r\n this._scene = params.scene;\r\n this._sceneEventCoordinator = new FlowGraphSceneEventCoordinator(this._scene);\r\n this._coordinator = params.coordinator;\r\n this.name = params.name ?? \"Graph\";\r\n this.uniqueId = params.uniqueId ?? RandomGUID();\r\n }\r\n\r\n private _attachEventObserver() {\r\n if (this._eventObserver) {\r\n return;\r\n }\r\n this._eventObserver = this._sceneEventCoordinator.onEventTriggeredObservable.add((event) => {\r\n if (event.type === FlowGraphEventType.SceneDispose) {\r\n this.dispose();\r\n return;\r\n }\r\n\r\n if (this.state !== FlowGraphState.Started) {\r\n return;\r\n }\r\n\r\n for (const context of this._executionContexts) {\r\n const order = this._getContextualOrder(event.type, context);\r\n for (const block of order) {\r\n // iterate contexts\r\n if (!block._executeEvent(context, event.payload)) {\r\n break;\r\n }\r\n }\r\n }\r\n // custom behavior(s) of specific events\r\n switch (event.type) {\r\n case FlowGraphEventType.SceneReady:\r\n this._sceneEventCoordinator.sceneReadyTriggered = true;\r\n break;\r\n case FlowGraphEventType.SceneBeforeRender:\r\n for (const context of this._executionContexts) {\r\n context._notifyOnTick(event.payload);\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _detachEventObserver() {\r\n this._eventObserver?.remove();\r\n this._eventObserver = null;\r\n }\r\n\r\n /**\r\n * Sets a new scene for this flow graph, re-wiring all event listeners.\r\n * This is useful when the scene the flow graph should listen to changes\r\n * (e.g. when a new scene is loaded in an editor preview).\r\n * If the graph is currently running, it will be stopped first and must be\r\n * restarted manually after calling this method.\r\n * @param scene the new scene to attach to\r\n */\r\n public setScene(scene: Scene): void {\r\n if (scene === this._scene) {\r\n return;\r\n }\r\n if (this.state === FlowGraphState.Started) {\r\n this.stop();\r\n }\r\n // Tear down old event coordinator\r\n this._detachEventObserver();\r\n this._sceneEventCoordinator.dispose();\r\n // Clear execution contexts so start() creates fresh ones with the new scene.\r\n // NOTE: This intentionally discards user variables and connection values.\r\n // Callers that need to preserve them (e.g. the Flow Graph Editor) should\r\n // snapshot context state BEFORE calling setScene() and restore it in a\r\n // wrapped createContext() callback after start() re-creates contexts.\r\n this._executionContexts.length = 0;\r\n // Rebuild with the new scene\r\n (this as { _scene: Scene })._scene = scene;\r\n this._scene.constantlyUpdateMeshUnderPointer = true; // ensure pointer info is always up to date for event blocks that need it\r\n this._sceneEventCoordinator = new FlowGraphSceneEventCoordinator(this._scene);\r\n // Pre-attach the event observer so that events from the new\r\n // coordinator are routed to the graph immediately. The handler\r\n // guards against processing events while the graph is stopped,\r\n // but having the observer in place ensures no events are lost\r\n // when start() is called shortly after.\r\n this._attachEventObserver();\r\n }\r\n\r\n /**\r\n * Create a context. A context represents one self contained execution for the graph, with its own variables.\r\n * @returns the context, where you can get and set variables\r\n */\r\n public createContext() {\r\n const context = new FlowGraphContext({ scene: this._scene, coordinator: this._coordinator, sceneEventCoordinator: this._sceneEventCoordinator });\r\n this._executionContexts.push(context);\r\n return context;\r\n }\r\n\r\n /**\r\n * Returns the execution context at a given index\r\n * @param index the index of the context\r\n * @returns the execution context at that index\r\n */\r\n public getContext(index: number) {\r\n return this._executionContexts[index];\r\n }\r\n\r\n /**\r\n * Returns the number of execution contexts currently attached to this graph.\r\n */\r\n public get contextCount(): number {\r\n return this._executionContexts.length;\r\n }\r\n\r\n /**\r\n * Remove an execution context by index. Any pending async blocks on\r\n * the context are cleared before removal.\r\n * @param index the index of the context to remove\r\n * @returns the removed context, or undefined if the index was out of range\r\n */\r\n public removeContext(index: number): FlowGraphContext | undefined {\r\n if (index < 0 || index >= this._executionContexts.length) {\r\n return undefined;\r\n }\r\n const [removed] = this._executionContexts.splice(index, 1);\r\n removed._clearPendingBlocks();\r\n return removed;\r\n }\r\n\r\n /**\r\n * Returns all blocks registered in this graph, including disconnected ones.\r\n * @returns a read-only array of all blocks\r\n */\r\n public getAllBlocks(): readonly FlowGraphBlock[] {\r\n return this._allBlocks;\r\n }\r\n\r\n /**\r\n * Register a block with the graph. This does not wire any connections;\r\n * it simply ensures the block is tracked so that serialization, editor\r\n * display, and validation see it even when it is not reachable from an\r\n * event block.\r\n * @param block the block to register\r\n */\r\n public addBlock(block: FlowGraphBlock): void {\r\n if (this._allBlocks.indexOf(block) === -1) {\r\n this._allBlocks.push(block);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a block from the graph. Disconnects all of its ports and, if it\r\n * is an event block, unregisters it from the event-block lists.\r\n * @param block the block to remove\r\n */\r\n public removeBlock(block: FlowGraphBlock): void {\r\n const idx = this._allBlocks.indexOf(block);\r\n if (idx !== -1) {\r\n this._allBlocks.splice(idx, 1);\r\n }\r\n // If it is an event block, remove from the event-block registry\r\n if (block instanceof FlowGraphExecutionBlock && \"type\" in block) {\r\n const eventBlock = block as unknown as FlowGraphEventBlock;\r\n const list = this._eventBlocks[eventBlock.type];\r\n if (list) {\r\n const eIdx = list.indexOf(eventBlock);\r\n if (eIdx !== -1) {\r\n list.splice(eIdx, 1);\r\n }\r\n }\r\n }\r\n // If the block has pending async tasks (e.g. event subscriptions),\r\n // cancel them in all active execution contexts so deletion takes\r\n // effect immediately even while the graph is running.\r\n if (block instanceof FlowGraphAsyncExecutionBlock) {\r\n for (const context of this._executionContexts) {\r\n block._cancelPendingTasks(context);\r\n block._resetAfterCanceled(context);\r\n }\r\n }\r\n // Disconnect all ports\r\n for (const input of block.dataInputs) {\r\n input.disconnectFromAll();\r\n }\r\n for (const output of block.dataOutputs) {\r\n output.disconnectFromAll();\r\n }\r\n if (block instanceof FlowGraphExecutionBlock) {\r\n for (const signalIn of block.signalInputs) {\r\n signalIn.disconnectFromAll();\r\n }\r\n for (const signalOut of block.signalOutputs) {\r\n signalOut.disconnectFromAll();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add an event block. When the graph is started, it will start listening to events\r\n * from the block and execute the graph when they are triggered.\r\n * @param block the event block to be added\r\n */\r\n public addEventBlock(block: FlowGraphEventBlock): void {\r\n this.addBlock(block);\r\n if (block.type === FlowGraphEventType.PointerOver || block.type === FlowGraphEventType.PointerOut) {\r\n this._scene.constantlyUpdateMeshUnderPointer = true;\r\n }\r\n\r\n this._eventBlocks[block.type].push(block);\r\n\r\n // if already started, sort and add to the pending\r\n if (this.state === FlowGraphState.Started) {\r\n for (const context of this._executionContexts) {\r\n block._startPendingTasks(context);\r\n }\r\n } else {\r\n this.onStateChangedObservable.addOnce((state) => {\r\n if (state === FlowGraphState.Started) {\r\n for (const context of this._executionContexts) {\r\n block._startPendingTasks(context);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Stops the flow graph. Cancels all pending tasks and clears execution contexts,\r\n * but keeps event blocks so the graph can be restarted.\r\n */\r\n public stop() {\r\n if (this.state === FlowGraphState.Stopped) {\r\n return;\r\n }\r\n this._detachEventObserver();\r\n this.state = FlowGraphState.Stopped;\r\n for (const context of this._executionContexts) {\r\n context._clearPendingBlocks();\r\n context._clearPendingActivation();\r\n }\r\n this._executionContexts.length = 0;\r\n }\r\n\r\n /**\r\n * Pauses the flow graph. Cancels pending tasks but keeps execution contexts and event blocks.\r\n * Call start() to resume.\r\n */\r\n public pause() {\r\n if (this.state !== FlowGraphState.Started) {\r\n return;\r\n }\r\n this._detachEventObserver();\r\n this.state = FlowGraphState.Paused;\r\n for (const context of this._executionContexts) {\r\n context._clearPendingBlocks();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the flow graph. Initializes the event blocks and starts listening to events.\r\n * Can also be called to resume from a paused state.\r\n */\r\n public start() {\r\n if (this.state === FlowGraphState.Started) {\r\n return;\r\n }\r\n const resumingFromPause = this.state === FlowGraphState.Paused;\r\n if (this._executionContexts.length === 0) {\r\n this.createContext();\r\n }\r\n this._attachEventObserver();\r\n this.state = FlowGraphState.Started;\r\n this._startPendingEvents();\r\n // On a fresh start (not resume), fire the SceneReady event.\r\n // The coordinator's own scene-ready observer may have already\r\n // fired (and been lost) while the graph was stopped, so reset\r\n // the flag and handle the ready state ourselves.\r\n if (!resumingFromPause) {\r\n this._sceneEventCoordinator.sceneReadyTriggered = false;\r\n if (this._scene.isReady(true)) {\r\n this._sceneEventCoordinator.sceneReadyTriggered = true;\r\n this._sceneEventCoordinator.onEventTriggeredObservable.notifyObservers({ type: FlowGraphEventType.SceneReady });\r\n } else {\r\n // Scene isn't ready yet (e.g. pending shader compilations after\r\n // a scene swap). Use executeWhenReady(true) which restarts the\r\n // readiness check loop — a plain addOnce on onReadyObservable\r\n // may never fire if the check loop already completed.\r\n this._scene.executeWhenReady(() => {\r\n if (this.state === FlowGraphState.Started && !this._sceneEventCoordinator.sceneReadyTriggered) {\r\n this._sceneEventCoordinator.sceneReadyTriggered = true;\r\n this._sceneEventCoordinator.onEventTriggeredObservable.notifyObservers({ type: FlowGraphEventType.SceneReady });\r\n }\r\n }, true);\r\n }\r\n }\r\n }\r\n\r\n private _startPendingEvents() {\r\n for (const context of this._executionContexts) {\r\n for (const type in this._eventBlocks) {\r\n const order = this._getContextualOrder(type as FlowGraphEventType, context);\r\n for (const block of order) {\r\n block._startPendingTasks(context);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _getContextualOrder(type: FlowGraphEventType, context: FlowGraphContext): FlowGraphEventBlock[] {\r\n const order = this._eventBlocks[type].sort((a, b) => b.initPriority - a.initPriority);\r\n\r\n if (type === FlowGraphEventType.MeshPick) {\r\n const meshPickOrder = [] as FlowGraphEventBlock[];\r\n for (const block1 of order) {\r\n // If the block is a mesh pick, guarantee that picks of children meshes come before picks of parent meshes\r\n const mesh1 = (block1 as FlowGraphMeshPickEventBlock).asset.getValue(context);\r\n let i = 0;\r\n for (; i < order.length; i++) {\r\n const block2 = order[i];\r\n const mesh2 = (block2 as FlowGraphMeshPickEventBlock).asset.getValue(context);\r\n if (mesh1 && mesh2 && _IsDescendantOf(mesh1, mesh2)) {\r\n break;\r\n }\r\n }\r\n meshPickOrder.splice(i, 0, block1);\r\n }\r\n return meshPickOrder;\r\n }\r\n return order;\r\n }\r\n\r\n /**\r\n * Disposes of the flow graph. Cancels any pending tasks and removes all event listeners.\r\n */\r\n public dispose() {\r\n if (this.state === FlowGraphState.Stopped) {\r\n return;\r\n }\r\n this.state = FlowGraphState.Stopped;\r\n for (const context of this._executionContexts) {\r\n context._clearPendingBlocks();\r\n context._clearPendingActivation();\r\n }\r\n this._executionContexts.length = 0;\r\n for (const type in this._eventBlocks) {\r\n this._eventBlocks[type as FlowGraphEventType].length = 0;\r\n }\r\n this._allBlocks.length = 0;\r\n this._detachEventObserver();\r\n this._sceneEventCoordinator.dispose();\r\n }\r\n\r\n /**\r\n * Executes a function in all blocks of a flow graph, starting with the event blocks.\r\n * @param visitor the function to execute.\r\n */\r\n public visitAllBlocks(visitor: (block: FlowGraphBlock) => void) {\r\n const visitList: FlowGraphBlock[] = [];\r\n const idsAddedToVisitList = new Set<string>();\r\n for (const type in this._eventBlocks) {\r\n for (const block of this._eventBlocks[type as FlowGraphEventType]) {\r\n visitList.push(block);\r\n idsAddedToVisitList.add(block.uniqueId);\r\n }\r\n }\r\n\r\n while (visitList.length > 0) {\r\n const block = visitList.pop()!;\r\n visitor(block);\r\n\r\n for (const dataIn of block.dataInputs) {\r\n for (const connection of dataIn._connectedPoint) {\r\n if (!idsAddedToVisitList.has(connection._ownerBlock.uniqueId)) {\r\n visitList.push(connection._ownerBlock);\r\n idsAddedToVisitList.add(connection._ownerBlock.uniqueId);\r\n }\r\n }\r\n }\r\n if (block instanceof FlowGraphExecutionBlock) {\r\n for (const signalOut of block.signalOutputs) {\r\n for (const connection of signalOut._connectedPoint) {\r\n if (!idsAddedToVisitList.has(connection._ownerBlock.uniqueId)) {\r\n visitList.push(connection._ownerBlock);\r\n idsAddedToVisitList.add(connection._ownerBlock.uniqueId);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates the flow graph and returns all issues found.\r\n * Uses the tracked block list for complete validation including unreachable block detection.\r\n * @returns The validation result containing errors and warnings.\r\n */\r\n public validate(): IFlowGraphValidationResult {\r\n return ValidateFlowGraphWithBlockList(this, this._allBlocks);\r\n }\r\n\r\n /**\r\n * Serializes a graph\r\n * @param serializationObject the object to write the values in\r\n * @param valueSerializeFunction a function to serialize complex values\r\n */\r\n public serialize(serializationObject: any = {}, valueSerializeFunction?: (key: string, value: any, serializationObject: any) => void) {\r\n serializationObject.name = this.name;\r\n serializationObject.uniqueId = this.uniqueId;\r\n serializationObject.allBlocks = [];\r\n // Collect all blocks: traversal-reachable ones plus any registered\r\n // orphans in _allBlocks (e.g. disconnected blocks in the editor).\r\n const seen = new Set<string>();\r\n const serializeBlock = (block: FlowGraphBlock) => {\r\n if (seen.has(block.uniqueId)) {\r\n return;\r\n }\r\n seen.add(block.uniqueId);\r\n const serializedBlock: any = {};\r\n block.serialize(serializedBlock);\r\n serializationObject.allBlocks.push(serializedBlock);\r\n };\r\n this.visitAllBlocks(serializeBlock);\r\n for (const block of this._allBlocks) {\r\n serializeBlock(block);\r\n }\r\n serializationObject.executionContexts = [];\r\n for (const context of this._executionContexts) {\r\n const serializedContext: any = {};\r\n context.serialize(serializedContext, valueSerializeFunction);\r\n serializationObject.executionContexts.push(serializedContext);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -4,6 +4,7 @@ import { type FlowGraphBlock } from "./flowGraphBlock.js";
|
|
|
4
4
|
import { type FlowGraphDataConnection } from "./flowGraphDataConnection.js";
|
|
5
5
|
import { type FlowGraph } from "./flowGraph.js";
|
|
6
6
|
import { type FlowGraphCoordinator } from "./flowGraphCoordinator.js";
|
|
7
|
+
import { type FlowGraphSceneEventCoordinator } from "./flowGraphSceneEventCoordinator.js";
|
|
7
8
|
import { Observable } from "../Misc/observable.js";
|
|
8
9
|
import { type AssetType, type FlowGraphAssetType } from "./flowGraphAssetsContext.js";
|
|
9
10
|
import { type IAssetContainer } from "../IAssetContainer.js";
|
|
@@ -35,6 +36,13 @@ export interface IFlowGraphContextConfiguration {
|
|
|
35
36
|
* The event coordinator used by the flow graph context.
|
|
36
37
|
*/
|
|
37
38
|
readonly coordinator: FlowGraphCoordinator;
|
|
39
|
+
/**
|
|
40
|
+
* The scene event coordinator that tracks runtime event state
|
|
41
|
+
* (e.g. currently pressed keyboard keys).
|
|
42
|
+
* When not provided, keyboard polling blocks (e.g. IsKeyPressed) will
|
|
43
|
+
* report no keys pressed.
|
|
44
|
+
*/
|
|
45
|
+
readonly sceneEventCoordinator?: FlowGraphSceneEventCoordinator;
|
|
38
46
|
/**
|
|
39
47
|
* The assets context used by the flow graph context.
|
|
40
48
|
* If none is provided, a default one will be created.
|