@onerjs/core 8.56.4 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.core.js +36 -0
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationGroup.pure.d.ts +61 -1
- package/Animations/animationGroup.pure.js +191 -2
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/index.d.ts +1 -0
- package/Animations/index.js +1 -0
- package/Animations/index.js.map +1 -1
- package/Animations/pure.d.ts +1 -0
- package/Animations/pure.js +1 -0
- package/Animations/pure.js.map +1 -1
- package/Animations/rootMotion.d.ts +560 -0
- package/Animations/rootMotion.js +1709 -0
- package/Animations/rootMotion.js.map +1 -0
- package/Animations/runtimeAnimation.d.ts +57 -0
- package/Animations/runtimeAnimation.js +127 -3
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.d.ts +2 -0
- package/Cameras/arcRotateCamera.pure.js +2 -0
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +2 -0
- package/Cameras/targetCamera.pure.js +7 -1
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
- package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
- package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.pure.js +63 -0
- package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +1 -1
- package/Engines/Extensions/pure.js +1 -1
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
- package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
- package/Engines/WebGPU/Extensions/pure.js +1 -1
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
- package/Engines/WebGPU/webgpuBundleList.js +4 -0
- package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
- package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
- package/Engines/WebGPU/webgpuTextureManager.js +286 -13
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +2 -0
- package/Engines/abstractEngine.pure.js +7 -3
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +14 -0
- package/Engines/thinEngine.pure.js +48 -12
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +1 -0
- package/Engines/thinNativeEngine.pure.js +7 -1
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +4 -0
- package/Engines/thinWebGPUEngine.js +10 -1
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +5 -2
- package/Engines/webgpuEngine.pure.js +48 -13
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +4 -0
- package/FlowGraph/flowGraph.js +38 -7
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +3 -0
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphConnection.d.ts +7 -0
- package/FlowGraph/flowGraphConnection.js +7 -0
- package/FlowGraph/flowGraphConnection.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +2 -1
- package/FlowGraph/flowGraphContext.js +4 -3
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
- package/FlowGraph/flowGraphCoordinator.js +47 -16
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
- package/FlowGraph/flowGraphEventBlock.js +7 -0
- package/FlowGraph/flowGraphEventBlock.js.map +1 -1
- package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
- package/FlowGraph/flowGraphHostResolver.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +60 -2
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/serialization.d.ts +2 -0
- package/FlowGraph/serialization.js +10 -22
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +8 -0
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
- package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/pure.js +1 -0
- package/FrameGraph/Node/Blocks/pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/frameGraphObjectList.d.ts +6 -1
- package/FrameGraph/frameGraphObjectList.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
- package/FrameGraph/frameGraphRenderContext.js +5 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/FrameGraph/pure.d.ts +1 -0
- package/FrameGraph/pure.js +1 -0
- package/FrameGraph/pure.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +4 -0
- package/Inputs/scene.inputManager.js +50 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
- package/Materials/Node/nodeMaterial.pure.js +4 -0
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +25 -3
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +3 -0
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +1 -1
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +8 -1
- package/Materials/Textures/internalTexture.js +9 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/textureHelper.functions.d.ts +14 -0
- package/Materials/Textures/textureHelper.functions.js +24 -0
- package/Materials/Textures/textureHelper.functions.js.map +1 -1
- package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +46 -1
- package/Materials/materialHelper.geometryrendering.js +105 -8
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/prepass.defines.d.ts +2 -0
- package/Materials/prepass.defines.js +2 -0
- package/Materials/prepass.defines.js.map +1 -1
- package/Materials/pure.d.ts +1 -0
- package/Materials/pure.js +1 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -0
- package/Materials/standardMaterial.pure.js +6 -3
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
- package/Meshes/Builders/polygonBuilder.pure.js +4 -1
- package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.d.ts +18 -0
- package/Meshes/abstractMesh.pure.js +22 -0
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.pure.d.ts +5 -0
- package/Meshes/instancedMesh.pure.js +12 -0
- package/Meshes/instancedMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +23 -8
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/meshBlendingTag.d.ts +47 -0
- package/Meshes/meshBlendingTag.js +64 -0
- package/Meshes/meshBlendingTag.js.map +1 -0
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Misc/fileTools.pure.js +21 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -2
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +89 -28
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.pure.d.ts +2 -0
- package/Particles/thinParticleSystem.pure.js +84 -19
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
- package/Particles/webgl2ParticleSystem.pure.js +12 -4
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/index.d.ts +2 -0
- package/PostProcesses/index.js +2 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
- package/PostProcesses/meshBlendingBlueNoise.js +77 -0
- package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
- package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
- package/PostProcesses/meshBlendingPostProcess.js +315 -0
- package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
- package/PostProcesses/pure.d.ts +2 -0
- package/PostProcesses/pure.js +2 -0
- package/PostProcesses/pure.js.map +1 -1
- package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +2 -1
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/depthRenderer.pure.js +3 -4
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.d.ts +4 -2
- package/Rendering/edgesRenderer.pure.js +11 -2
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
- package/Rendering/geometryBufferRenderer.pure.js +126 -17
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +7 -1
- package/Rendering/objectRenderer.js +45 -7
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +6 -2
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/renderingManager.d.ts +1 -1
- package/Rendering/renderingManager.js +5 -4
- package/Rendering/renderingManager.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +6 -2
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/default.fragment.js +31 -40
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.js +13 -9
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +63 -3
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +80 -0
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.js +17 -11
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +43 -1
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +96 -16
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/meshBlending.fragment.d.ts +5 -0
- package/Shaders/meshBlending.fragment.js +519 -0
- package/Shaders/meshBlending.fragment.js.map +1 -0
- package/Shaders/particles.fragment.js +43 -1
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.js +84 -3
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.js +52 -2
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.js +62 -1
- package/Shaders/sprites.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +17 -48
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.js +37 -2
- package/ShadersWGSL/geometry.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
- package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
- package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
- package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
- package/ShadersWGSL/meshBlending.fragment.js +576 -0
- package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
- package/ShadersWGSL/openpbr.fragment.js +2 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/particles.fragment.js +45 -1
- package/ShadersWGSL/particles.fragment.js.map +1 -1
- package/ShadersWGSL/particles.vertex.js +86 -4
- package/ShadersWGSL/particles.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +2 -1
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.fragment.js +56 -2
- package/ShadersWGSL/sprites.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.vertex.js +62 -1
- package/ShadersWGSL/sprites.vertex.js.map +1 -1
- package/Sprites/spriteManager.d.ts +13 -0
- package/Sprites/spriteManager.js +15 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +24 -1
- package/Sprites/spriteRenderer.js +368 -50
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.d.ts +4 -0
- package/Sprites/thinSprite.js +4 -0
- package/Sprites/thinSprite.js.map +1 -1
- package/States/alphaCullingState.d.ts +3 -1
- package/States/alphaCullingState.js +18 -3
- package/States/alphaCullingState.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +5 -1
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.d.ts +2 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +23 -0
- package/scene.pure.js +35 -0
- package/scene.pure.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphArrayIndexBlock.pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAqC,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGlG,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAwB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"flowGraphArrayIndexBlock.pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAqC,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGlG,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAwB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYpD;;GAEG;AACH,MAAM,OAAO,wBAAkC,SAAQ,cAAc;IAgBjE;;;OAGG;IACH,YAA4B,MAA8C;QACtE,KAAK,CAAC,MAAM,CAAC,CAAC;QADU,WAAM,GAAN,MAAM,CAAwC;QAGtE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACa,cAAc,CAAC,OAAyB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9C,yFAAyF;QACzF,oDAAoD;QACpD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACX,CAAC;QACD,0FAA0F;QAC1F,uCAAuC;QACvC,IAAI,KAAa,CAAC;QAClB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACxF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,OAAO;YACX,CAAC;YACD,KAAK,GAAG,OAAO,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED;;;OAGG;IACa,SAAS,CAAC,mBAAyB;QAC/C,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAEe,YAAY;QACxB,uEAAsC;IAC1C,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,gCAAgC;IAC5C,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,kEAAiC,wBAAwB,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type IFlowGraphBlockConfiguration, FlowGraphBlock } from \"core/FlowGraph/flowGraphBlock\";\nimport { type FlowGraphContext } from \"core/FlowGraph/flowGraphContext\";\nimport { type FlowGraphDataConnection } from \"core/FlowGraph/flowGraphDataConnection.pure\";\nimport { RichTypeAny } from \"core/FlowGraph/flowGraphRichTypes.pure\";\nimport { FlowGraphBlockNames } from \"../../flowGraphBlockNames\";\nimport { FlowGraphInteger } from \"core/FlowGraph/CustomTypes/flowGraphInteger.pure\";\nimport { type FlowGraphNumber, getNumericValue } from \"core/FlowGraph/utils\";\nimport { type Nullable } from \"core/types\";\nimport { RegisterClass } from \"core/Misc/typeStore\";\n\n/**\n * Configuration for array-index reference resolution.\n */\nexport interface IFlowGraphArrayIndexBlockConfiguration extends IFlowGraphBlockConfiguration {\n /**\n * Optional host collection name required when the index input is an opaque reference.\n */\n referenceCollection?: string;\n}\n\n/**\n * This simple Util block takes an array as input and selects a single element from it.\n */\nexport class FlowGraphArrayIndexBlock<T = any> extends FlowGraphBlock {\n /**\n * Input connection: The array to select from.\n */\n public readonly array: FlowGraphDataConnection<T[]>;\n\n /**\n * Input connection: The index to select.\n */\n public readonly index: FlowGraphDataConnection<FlowGraphNumber>;\n\n /**\n * Output connection: The selected element.\n */\n public readonly value: FlowGraphDataConnection<Nullable<T>>;\n\n /**\n * Construct a FlowGraphArrayIndexBlock.\n * @param config construction parameters\n */\n constructor(public override config: IFlowGraphArrayIndexBlockConfiguration) {\n super(config);\n\n this.array = this.registerDataInput(\"array\", RichTypeAny);\n this.index = this.registerDataInput(\"index\", RichTypeAny, new FlowGraphInteger(-1));\n this.value = this.registerDataOutput(\"value\", RichTypeAny);\n }\n\n /**\n * @internal\n */\n public override _updateOutputs(context: FlowGraphContext): void {\n const array = this.array.getValue(context);\n const rawIndex = this.index.getValue(context);\n // An undefined or unconnected input short-circuits to a null output rather than crashing\n // `getNumericValue` on a missing `.value` property.\n if (rawIndex === undefined || rawIndex === null) {\n this.value.setValue(null, context);\n return;\n }\n // A string index is an opaque reference whose format the host environment owns, so ask it\n // which element the reference denotes.\n let index: number;\n if (typeof rawIndex === \"string\") {\n const decoded = context.decodeIndexReference(rawIndex, this.config.referenceCollection);\n if (decoded === undefined) {\n this.value.setValue(null, context);\n return;\n }\n index = decoded;\n } else {\n index = getNumericValue(rawIndex);\n }\n if (array && index >= 0 && index < array.length) {\n this.value.setValue(array[index], context);\n } else {\n this.value.setValue(null, context);\n }\n }\n\n /**\n * Serializes this block\n * @param serializationObject the object to serialize to\n */\n public override serialize(serializationObject?: any): void {\n super.serialize(serializationObject);\n }\n\n public override getClassName(): string {\n return FlowGraphBlockNames.ArrayIndex;\n }\n}\n\nlet _Registered = false;\n/**\n * Register side effects for flowGraphArrayIndexBlock.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterFlowGraphArrayIndexBlock(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n RegisterClass(FlowGraphBlockNames.ArrayIndex, FlowGraphArrayIndexBlock);\n}\n"]}
|
|
@@ -5,7 +5,7 @@ import { type PointerInfo, PointerEventTypes } from "../../../Events/pointerEven
|
|
|
5
5
|
import { type FlowGraphContext } from "../../flowGraphContext.js";
|
|
6
6
|
import { type IFlowGraphBlockConfiguration } from "../../flowGraphBlock.js";
|
|
7
7
|
import { type FlowGraphDataConnection } from "../../flowGraphDataConnection.pure.js";
|
|
8
|
-
import {
|
|
8
|
+
import { Vector3 } from "../../../Maths/math.vector.pure.js";
|
|
9
9
|
import { FlowGraphEventType } from "../../flowGraphEventType.js";
|
|
10
10
|
/**
|
|
11
11
|
* Configuration for the mesh pick event block.
|
|
@@ -19,6 +19,14 @@ export interface IFlowGraphMeshPickEventBlockConfiguration extends IFlowGraphBlo
|
|
|
19
19
|
* The mesh to listen to. Can also be set by the asset input.
|
|
20
20
|
*/
|
|
21
21
|
targetMesh?: AbstractMesh;
|
|
22
|
+
/**
|
|
23
|
+
* Whether unavailable selection vectors use NaN components.
|
|
24
|
+
*/
|
|
25
|
+
useNaNDefaults?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Initial pointer/controller id.
|
|
28
|
+
*/
|
|
29
|
+
pointerIdDefault?: number;
|
|
22
30
|
}
|
|
23
31
|
/**
|
|
24
32
|
* A block that activates when a mesh is picked.
|
|
@@ -3,6 +3,7 @@ import { FlowGraphEventBlock } from "../../flowGraphEventBlock.js";
|
|
|
3
3
|
import { PointerEventTypes } from "../../../Events/pointerEvents.js";
|
|
4
4
|
import { _IsDescendantOf } from "../../utils.js";
|
|
5
5
|
import { RichTypeAny, RichTypeNumber, RichTypeVector3 } from "../../flowGraphRichTypes.pure.js";
|
|
6
|
+
import { Vector3 } from "../../../Maths/math.vector.pure.js";
|
|
6
7
|
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
7
8
|
/**
|
|
8
9
|
* A block that activates when a mesh is picked.
|
|
@@ -19,10 +20,11 @@ export class FlowGraphMeshPickEventBlock extends FlowGraphEventBlock {
|
|
|
19
20
|
* the type of the event this block reacts to
|
|
20
21
|
*/
|
|
21
22
|
this.type = "MeshPick" /* FlowGraphEventType.MeshPick */;
|
|
23
|
+
const vectorDefault = config?.useNaNDefaults ? new Vector3(NaN, NaN, NaN) : undefined;
|
|
22
24
|
this.asset = this.registerDataInput("asset", RichTypeAny, config?.targetMesh);
|
|
23
|
-
this.pickedPoint = this.registerDataOutput("pickedPoint", RichTypeVector3);
|
|
24
|
-
this.pickOrigin = this.registerDataOutput("pickOrigin", RichTypeVector3);
|
|
25
|
-
this.pointerId = this.registerDataOutput("pointerId", RichTypeNumber);
|
|
25
|
+
this.pickedPoint = this.registerDataOutput("pickedPoint", RichTypeVector3, vectorDefault);
|
|
26
|
+
this.pickOrigin = this.registerDataOutput("pickOrigin", RichTypeVector3, vectorDefault);
|
|
27
|
+
this.pointerId = this.registerDataOutput("pointerId", RichTypeNumber, config?.pointerIdDefault);
|
|
26
28
|
this.pickedMesh = this.registerDataOutput("pickedMesh", RichTypeAny);
|
|
27
29
|
this.pointerType = this.registerDataInput("pointerType", RichTypeAny, PointerEventTypes.POINTERPICK);
|
|
28
30
|
}
|
|
@@ -40,11 +42,7 @@ export class FlowGraphMeshPickEventBlock extends FlowGraphEventBlock {
|
|
|
40
42
|
const pickedMesh = pickedInfo.pickInfo?.pickedMesh;
|
|
41
43
|
// When no target mesh is configured, fire for any picked mesh.
|
|
42
44
|
// When a target is configured, require an exact match or descendant match.
|
|
43
|
-
|
|
44
|
-
// fallback for scene reloads where the object reference changes but the mesh
|
|
45
|
-
// identity (name) is preserved (uniqueId increments monotonically and is NOT
|
|
46
|
-
// stable across reloads).
|
|
47
|
-
const meshMatches = !mesh ? !!pickedMesh : !!(pickedMesh && (pickedMesh === mesh || _IsDescendantOf(pickedMesh, mesh) || pickedMesh.name === mesh.name));
|
|
45
|
+
const meshMatches = !mesh ? !!pickedMesh : !!(pickedMesh && (pickedMesh === mesh || _IsDescendantOf(pickedMesh, mesh)));
|
|
48
46
|
if (meshMatches && pickedMesh) {
|
|
49
47
|
this.pointerId.setValue(pickedInfo.event.pointerId, context);
|
|
50
48
|
this.pickOrigin.setValue(pickedInfo.pickInfo.ray?.origin, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphMeshPickEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAoB,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIpF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"flowGraphMeshPickEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type AbstractMesh } from \"../../../Meshes/abstractMesh.pure\";\r\nimport { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../../Events/pointerEvents\";\r\nimport { type IPointerEvent } from \"../../../Events/deviceInputEvents\";\r\nimport { type FlowGraphContext } from \"../../flowGraphContext\";\r\nimport { type IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { _IsDescendantOf } from \"../../utils\";\r\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\r\nimport { type FlowGraphDataConnection } from \"core/FlowGraph/flowGraphDataConnection.pure\";\r\nimport { RichTypeAny, RichTypeNumber, RichTypeVector3 } from \"core/FlowGraph/flowGraphRichTypes.pure\";\r\nimport { Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { FlowGraphEventType } from \"core/FlowGraph/flowGraphEventType\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n/**\r\n * Configuration for the mesh pick event block.\r\n */\r\nexport interface IFlowGraphMeshPickEventBlockConfiguration extends IFlowGraphBlockConfiguration {\r\n /**\r\n * Should this mesh block propagation of the event.\r\n */\r\n stopPropagation?: boolean;\r\n\r\n /**\r\n * The mesh to listen to. Can also be set by the asset input.\r\n */\r\n targetMesh?: AbstractMesh;\r\n /**\r\n * Whether unavailable selection vectors use NaN components.\r\n */\r\n useNaNDefaults?: boolean;\r\n /**\r\n * Initial pointer/controller id.\r\n */\r\n pointerIdDefault?: number;\r\n}\r\n/**\r\n * A block that activates when a mesh is picked.\r\n */\r\nexport class FlowGraphMeshPickEventBlock extends FlowGraphEventBlock {\r\n /**\r\n * Input connection: The mesh to listen to.\r\n */\r\n public readonly asset: FlowGraphDataConnection<AbstractMesh>;\r\n\r\n /**\r\n * Output connection: The picked point.\r\n */\r\n public readonly pickedPoint: FlowGraphDataConnection<Vector3>;\r\n\r\n /**\r\n * Output connection: The picked origin.\r\n */\r\n public readonly pickOrigin: FlowGraphDataConnection<Vector3>;\r\n\r\n /**\r\n * Output connection: The pointer id.\r\n */\r\n public readonly pointerId: FlowGraphDataConnection<number>;\r\n\r\n /**\r\n * Output connection: The picked mesh. Possibly NOT the same as the asset (could be a descendant).\r\n */\r\n public readonly pickedMesh: FlowGraphDataConnection<AbstractMesh>;\r\n\r\n /**\r\n * Input connection: The type of the pointer event.\r\n */\r\n public readonly pointerType: FlowGraphDataConnection<PointerEventTypes>;\r\n\r\n /**\r\n * the type of the event this block reacts to\r\n */\r\n public override readonly type: FlowGraphEventType = FlowGraphEventType.MeshPick;\r\n\r\n public constructor(\r\n /**\r\n * the configuration of the block\r\n */\r\n public override config?: IFlowGraphMeshPickEventBlockConfiguration\r\n ) {\r\n super(config);\r\n const vectorDefault = config?.useNaNDefaults ? new Vector3(NaN, NaN, NaN) : undefined;\r\n this.asset = this.registerDataInput(\"asset\", RichTypeAny, config?.targetMesh);\r\n this.pickedPoint = this.registerDataOutput(\"pickedPoint\", RichTypeVector3, vectorDefault);\r\n this.pickOrigin = this.registerDataOutput(\"pickOrigin\", RichTypeVector3, vectorDefault);\r\n this.pointerId = this.registerDataOutput(\"pointerId\", RichTypeNumber, config?.pointerIdDefault);\r\n this.pickedMesh = this.registerDataOutput(\"pickedMesh\", RichTypeAny);\r\n this.pointerType = this.registerDataInput(\"pointerType\", RichTypeAny, PointerEventTypes.POINTERPICK);\r\n }\r\n\r\n public _getReferencedMesh(context: FlowGraphContext): AbstractMesh {\r\n return this.asset.getValue(context);\r\n }\r\n\r\n public override _executeEvent(context: FlowGraphContext, pickedInfo: PointerInfo): boolean {\r\n // get the pointer type\r\n const pointerType = this.pointerType.getValue(context);\r\n if (pointerType !== pickedInfo.type) {\r\n // returning true here to continue the propagation of the pointer event to the rest of the blocks\r\n return true;\r\n }\r\n const mesh = this._getReferencedMesh(context);\r\n const pickedMesh = pickedInfo.pickInfo?.pickedMesh;\r\n // When no target mesh is configured, fire for any picked mesh.\r\n // When a target is configured, require an exact match or descendant match.\r\n const meshMatches = !mesh ? !!pickedMesh : !!(pickedMesh && (pickedMesh === mesh || _IsDescendantOf(pickedMesh, mesh)));\r\n if (meshMatches && pickedMesh) {\r\n this.pointerId.setValue((pickedInfo.event as IPointerEvent).pointerId, context);\r\n this.pickOrigin.setValue(pickedInfo.pickInfo!.ray?.origin!, context);\r\n this.pickedPoint.setValue(pickedInfo.pickInfo!.pickedPoint!, context);\r\n this.pickedMesh.setValue(pickedMesh, context);\r\n this._execute(context);\r\n // stop the propagation if the configuration says so\r\n return !this.config?.stopPropagation;\r\n } else {\r\n // reset the outputs\r\n this.pointerId.resetToDefaultValue(context);\r\n this.pickOrigin.resetToDefaultValue(context);\r\n this.pickedPoint.resetToDefaultValue(context);\r\n this.pickedMesh.resetToDefaultValue(context);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _preparePendingTasks(_context: FlowGraphContext): void {\r\n // no-op\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _cancelPendingTasks(_context: FlowGraphContext): void {\r\n // no-op\r\n }\r\n\r\n /**\r\n * @returns class name of the block.\r\n */\r\n public override getClassName(): string {\r\n return FlowGraphBlockNames.MeshPickEvent;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for flowGraphMeshPickEventBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterFlowGraphMeshPickEventBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(FlowGraphBlockNames.MeshPickEvent, FlowGraphMeshPickEventBlock);\r\n}\r\n"]}
|
|
@@ -56,6 +56,8 @@ export declare class FlowGraphPointerOutEventBlock extends FlowGraphEventBlock {
|
|
|
56
56
|
readonly type: FlowGraphEventType;
|
|
57
57
|
constructor(config?: IFlowGraphPointerOutEventBlockConfiguration);
|
|
58
58
|
_executeEvent(context: FlowGraphContext, payload: IFlowGraphPointerOutEventPayload): boolean;
|
|
59
|
+
/** @internal */
|
|
60
|
+
_getReferencedMesh(context: FlowGraphContext): AbstractMesh;
|
|
59
61
|
_preparePendingTasks(_context: FlowGraphContext): void;
|
|
60
62
|
_cancelPendingTasks(_context: FlowGraphContext): void;
|
|
61
63
|
getClassName(): FlowGraphBlockNames;
|
|
@@ -19,13 +19,17 @@ export class FlowGraphPointerOutEventBlock extends FlowGraphEventBlock {
|
|
|
19
19
|
const mesh = this.targetMesh.getValue(context);
|
|
20
20
|
this.meshOutOfPointer.setValue(payload.mesh, context);
|
|
21
21
|
this.pointerId.setValue(payload.pointerId, context);
|
|
22
|
-
const skipEvent = payload.over && _IsDescendantOf(payload.
|
|
22
|
+
const skipEvent = payload.over && (payload.over === mesh || _IsDescendantOf(payload.over, mesh));
|
|
23
23
|
if (!skipEvent && (payload.mesh === mesh || _IsDescendantOf(payload.mesh, mesh))) {
|
|
24
24
|
this._execute(context);
|
|
25
25
|
return !this.config?.stopPropagation;
|
|
26
26
|
}
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
|
+
/** @internal */
|
|
30
|
+
_getReferencedMesh(context) {
|
|
31
|
+
return this.targetMesh.getValue(context);
|
|
32
|
+
}
|
|
29
33
|
_preparePendingTasks(_context) {
|
|
30
34
|
// no-op
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphPointerOutEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAMzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoCpD;;;GAGG;AACH,MAAM,OAAO,6BAA8B,SAAQ,mBAAmB;IAkBlE,YAAmB,MAAoD;QACnE,KAAK,CAAC,MAAM,CAAC,CAAC;QAHO,SAAI,oDAAqD;QAI9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IAEe,aAAa,CAAC,OAAyB,EAAE,OAAyC;QAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"flowGraphPointerOutEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAMzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoCpD;;;GAGG;AACH,MAAM,OAAO,6BAA8B,SAAQ,mBAAmB;IAkBlE,YAAmB,MAAoD;QACnE,KAAK,CAAC,MAAM,CAAC,CAAC;QAHO,SAAI,oDAAqD;QAI9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IAEe,aAAa,CAAC,OAAyB,EAAE,OAAyC;QAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,gBAAgB;IACT,kBAAkB,CAAC,OAAyB;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACe,oBAAoB,CAAC,QAA0B;QAC3D,QAAQ;IACZ,CAAC;IACe,mBAAmB,CAAC,QAA0B;QAC1D,QAAQ;IACZ,CAAC;IACe,YAAY;QACxB,iFAA2C;IAC/C,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,qCAAqC;IACjD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,4EAAsC,6BAA6B,CAAC,CAAC;AACtF,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type FlowGraphContext } from \"core/FlowGraph/flowGraphContext\";\nimport { FlowGraphEventBlock } from \"core/FlowGraph/flowGraphEventBlock\";\nimport { FlowGraphEventType } from \"core/FlowGraph/flowGraphEventType\";\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh.pure\";\nimport { type FlowGraphDataConnection } from \"core/FlowGraph/flowGraphDataConnection.pure\";\nimport { type IFlowGraphBlockConfiguration } from \"core/FlowGraph/flowGraphBlock\";\nimport { RichTypeAny, RichTypeNumber } from \"core/FlowGraph/flowGraphRichTypes.pure\";\nimport { _IsDescendantOf } from \"core/FlowGraph/utils\";\nimport { RegisterClass } from \"core/Misc/typeStore\";\n\n/**\n * Configuration for the pointer out event block.\n */\nexport interface IFlowGraphPointerOutEventBlockConfiguration extends IFlowGraphBlockConfiguration {\n /**\n * Should this mesh block propagation of the event.\n */\n stopPropagation?: boolean;\n\n /**\n * The mesh to listen to. Can also be set by the asset input.\n */\n targetMesh?: AbstractMesh;\n}\n\n/**\n * Payload for the pointer out event.\n */\nexport interface IFlowGraphPointerOutEventPayload {\n /**\n * The pointer id.\n */\n pointerId: number;\n /**\n * The mesh that was picked.\n */\n mesh: AbstractMesh;\n\n /**\n * If populated, the hover event moved to this mesh from the `mesh` variable\n */\n over?: AbstractMesh;\n}\n\n/**\n * A pointe out event block.\n * This block can be used as an entry pointer to when a pointer is out of a specific target mesh.\n */\nexport class FlowGraphPointerOutEventBlock extends FlowGraphEventBlock {\n /**\n * Output connection: The pointer id.\n */\n public readonly pointerId: FlowGraphDataConnection<number>;\n\n /**\n * Input connection: The mesh to listen to.\n */\n public readonly targetMesh: FlowGraphDataConnection<AbstractMesh>;\n\n /**\n * Output connection: The mesh that the pointer is out of.\n */\n public readonly meshOutOfPointer: FlowGraphDataConnection<AbstractMesh>;\n\n public override readonly type: FlowGraphEventType = FlowGraphEventType.PointerOut;\n\n public constructor(config?: IFlowGraphPointerOutEventBlockConfiguration) {\n super(config);\n this.pointerId = this.registerDataOutput(\"pointerId\", RichTypeNumber);\n this.targetMesh = this.registerDataInput(\"targetMesh\", RichTypeAny, config?.targetMesh);\n this.meshOutOfPointer = this.registerDataOutput(\"meshOutOfPointer\", RichTypeAny);\n }\n\n public override _executeEvent(context: FlowGraphContext, payload: IFlowGraphPointerOutEventPayload): boolean {\n const mesh = this.targetMesh.getValue(context);\n this.meshOutOfPointer.setValue(payload.mesh, context);\n this.pointerId.setValue(payload.pointerId, context);\n const skipEvent = payload.over && (payload.over === mesh || _IsDescendantOf(payload.over, mesh));\n if (!skipEvent && (payload.mesh === mesh || _IsDescendantOf(payload.mesh, mesh))) {\n this._execute(context);\n return !this.config?.stopPropagation;\n }\n return true;\n }\n /** @internal */\n public _getReferencedMesh(context: FlowGraphContext): AbstractMesh {\n return this.targetMesh.getValue(context);\n }\n public override _preparePendingTasks(_context: FlowGraphContext): void {\n // no-op\n }\n public override _cancelPendingTasks(_context: FlowGraphContext): void {\n // no-op\n }\n public override getClassName() {\n return FlowGraphBlockNames.PointerOutEvent;\n }\n}\n\nlet _Registered = false;\n/**\n * Register side effects for flowGraphPointerOutEventBlock.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterFlowGraphPointerOutEventBlock(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n RegisterClass(FlowGraphBlockNames.PointerOutEvent, FlowGraphPointerOutEventBlock);\n}\n"]}
|
|
@@ -56,6 +56,8 @@ export declare class FlowGraphPointerOverEventBlock extends FlowGraphEventBlock
|
|
|
56
56
|
readonly type: FlowGraphEventType;
|
|
57
57
|
constructor(config?: IFlowGraphPointerOverEventBlockConfiguration);
|
|
58
58
|
_executeEvent(context: FlowGraphContext, payload: IFlowGraphPointerOverEventPayload): boolean;
|
|
59
|
+
/** @internal */
|
|
60
|
+
_getReferencedMesh(context: FlowGraphContext): AbstractMesh;
|
|
59
61
|
_preparePendingTasks(_context: FlowGraphContext): void;
|
|
60
62
|
_cancelPendingTasks(_context: FlowGraphContext): void;
|
|
61
63
|
getClassName(): FlowGraphBlockNames;
|
|
@@ -19,7 +19,7 @@ export class FlowGraphPointerOverEventBlock extends FlowGraphEventBlock {
|
|
|
19
19
|
const mesh = this.targetMesh.getValue(context);
|
|
20
20
|
this.meshUnderPointer.setValue(payload.mesh, context);
|
|
21
21
|
// skip if we moved from a mesh that is under the hierarchy of the target mesh
|
|
22
|
-
const skipEvent = payload.out && _IsDescendantOf(payload.out, mesh);
|
|
22
|
+
const skipEvent = payload.out && (payload.out === mesh || _IsDescendantOf(payload.out, mesh));
|
|
23
23
|
this.pointerId.setValue(payload.pointerId, context);
|
|
24
24
|
if (!skipEvent && (payload.mesh === mesh || _IsDescendantOf(payload.mesh, mesh))) {
|
|
25
25
|
this._execute(context);
|
|
@@ -27,6 +27,10 @@ export class FlowGraphPointerOverEventBlock extends FlowGraphEventBlock {
|
|
|
27
27
|
}
|
|
28
28
|
return true;
|
|
29
29
|
}
|
|
30
|
+
/** @internal */
|
|
31
|
+
_getReferencedMesh(context) {
|
|
32
|
+
return this.targetMesh.getValue(context);
|
|
33
|
+
}
|
|
30
34
|
_preparePendingTasks(_context) {
|
|
31
35
|
// no-op
|
|
32
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphPointerOverEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAMzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoCpD;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,mBAAmB;IAkBnE,YAAmB,MAAqD;QACpE,KAAK,CAAC,MAAM,CAAC,CAAC;QAHO,SAAI,sDAAsD;QAI/E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IAEe,aAAa,CAAC,OAAyB,EAAE,OAA0C;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,8EAA8E;QAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"flowGraphPointerOverEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAMzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoCpD;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,mBAAmB;IAkBnE,YAAmB,MAAqD;QACpE,KAAK,CAAC,MAAM,CAAC,CAAC;QAHO,SAAI,sDAAsD;QAI/E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IAEe,aAAa,CAAC,OAAyB,EAAE,OAA0C;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,8EAA8E;QAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,gBAAgB;IACT,kBAAkB,CAAC,OAAyB;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACe,oBAAoB,CAAC,QAA0B;QAC3D,QAAQ;IACZ,CAAC;IACe,mBAAmB,CAAC,QAA0B;QAC1D,QAAQ;IACZ,CAAC;IACe,YAAY;QACxB,mFAA4C;IAChD,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,sCAAsC;IAClD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,8EAAuC,8BAA8B,CAAC,CAAC;AACxF,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type FlowGraphContext } from \"core/FlowGraph/flowGraphContext\";\nimport { FlowGraphEventBlock } from \"core/FlowGraph/flowGraphEventBlock\";\nimport { FlowGraphEventType } from \"core/FlowGraph/flowGraphEventType\";\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh.pure\";\nimport { type FlowGraphDataConnection } from \"core/FlowGraph/flowGraphDataConnection.pure\";\nimport { type IFlowGraphBlockConfiguration } from \"core/FlowGraph/flowGraphBlock\";\nimport { RichTypeAny, RichTypeNumber } from \"core/FlowGraph/flowGraphRichTypes.pure\";\nimport { _IsDescendantOf } from \"core/FlowGraph/utils\";\nimport { RegisterClass } from \"core/Misc/typeStore\";\n\n/**\n * Configuration for the pointer over event block.\n */\nexport interface IFlowGraphPointerOverEventBlockConfiguration extends IFlowGraphBlockConfiguration {\n /**\n * Should this mesh block propagation of the event.\n */\n stopPropagation?: boolean;\n\n /**\n * The mesh to listen to. Can also be set by the asset input.\n */\n targetMesh?: AbstractMesh;\n}\n\n/**\n * Payload for the pointer over event.\n */\nexport interface IFlowGraphPointerOverEventPayload {\n /**\n * The pointer id.\n */\n pointerId: number;\n /**\n * The mesh that was picked.\n */\n mesh: AbstractMesh;\n\n /**\n * If populated, the hover event moved from this mesh to the `mesh` variable\n */\n out?: AbstractMesh;\n}\n\n/**\n * A pointer over event block.\n * This block can be used as an entry pointer to when a pointer is over a specific target mesh.\n */\nexport class FlowGraphPointerOverEventBlock extends FlowGraphEventBlock {\n /**\n * Output connection: The pointer id.\n */\n public readonly pointerId: FlowGraphDataConnection<number>;\n\n /**\n * Input connection: The mesh to listen to.\n */\n public readonly targetMesh: FlowGraphDataConnection<AbstractMesh>;\n\n /**\n * Output connection: The mesh that is under the pointer.\n */\n public readonly meshUnderPointer: FlowGraphDataConnection<AbstractMesh>;\n\n public override readonly type: FlowGraphEventType = FlowGraphEventType.PointerOver;\n\n public constructor(config?: IFlowGraphPointerOverEventBlockConfiguration) {\n super(config);\n this.pointerId = this.registerDataOutput(\"pointerId\", RichTypeNumber);\n this.targetMesh = this.registerDataInput(\"targetMesh\", RichTypeAny, config?.targetMesh);\n this.meshUnderPointer = this.registerDataOutput(\"meshUnderPointer\", RichTypeAny);\n }\n\n public override _executeEvent(context: FlowGraphContext, payload: IFlowGraphPointerOverEventPayload): boolean {\n const mesh = this.targetMesh.getValue(context);\n this.meshUnderPointer.setValue(payload.mesh, context);\n // skip if we moved from a mesh that is under the hierarchy of the target mesh\n const skipEvent = payload.out && (payload.out === mesh || _IsDescendantOf(payload.out, mesh));\n this.pointerId.setValue(payload.pointerId, context);\n if (!skipEvent && (payload.mesh === mesh || _IsDescendantOf(payload.mesh, mesh))) {\n this._execute(context);\n return !this.config?.stopPropagation;\n }\n return true;\n }\n /** @internal */\n public _getReferencedMesh(context: FlowGraphContext): AbstractMesh {\n return this.targetMesh.getValue(context);\n }\n public override _preparePendingTasks(_context: FlowGraphContext): void {\n // no-op\n }\n public override _cancelPendingTasks(_context: FlowGraphContext): void {\n // no-op\n }\n public override getClassName() {\n return FlowGraphBlockNames.PointerOverEvent;\n }\n}\n\nlet _Registered = false;\n/**\n * Register side effects for flowGraphPointerOverEventBlock.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterFlowGraphPointerOverEventBlock(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n RegisterClass(FlowGraphBlockNames.PointerOverEvent, FlowGraphPointerOverEventBlock);\n}\n"]}
|
|
@@ -20,9 +20,16 @@ export interface IFlowGraphReceiveCustomEventBlockConfiguration extends IFlowGra
|
|
|
20
20
|
eventData: {
|
|
21
21
|
[key: string]: {
|
|
22
22
|
type: RichType<any>;
|
|
23
|
+
value?: any;
|
|
23
24
|
};
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns the event-dispatch key for an authored custom event id.
|
|
29
|
+
* @param eventId authored custom event id
|
|
30
|
+
* @returns namespaced event key
|
|
31
|
+
*/
|
|
32
|
+
export declare function GetFlowGraphCustomEventKey(eventId: string): string;
|
|
26
33
|
/**
|
|
27
34
|
* A block that receives a custom event.
|
|
28
35
|
* It saves the event data in the data outputs, based on the provided eventData in the configuration. For example, if the event data is
|
|
@@ -40,6 +47,8 @@ export declare class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBloc
|
|
|
40
47
|
* `event` outputs for equality succeeds. The reference format is owned by the host environment.
|
|
41
48
|
*/
|
|
42
49
|
readonly eventRef: FlowGraphDataConnection<string>;
|
|
50
|
+
/** @returns the configured custom event id */
|
|
51
|
+
get eventKey(): string;
|
|
43
52
|
constructor(
|
|
44
53
|
/**
|
|
45
54
|
* the configuration of the block
|
|
@@ -4,12 +4,25 @@ import { Logger } from "../../../Misc/logger.js";
|
|
|
4
4
|
import { getRichTypeByFlowGraphType, RichTypeString } from "../../flowGraphRichTypes.pure.js";
|
|
5
5
|
import { FlowGraphCoordinator } from "../../flowGraphCoordinator.js";
|
|
6
6
|
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
7
|
+
import { defaultValueSerializationFunction } from "../../serialization.js";
|
|
8
|
+
/**
|
|
9
|
+
* Returns the event-dispatch key for an authored custom event id.
|
|
10
|
+
* @param eventId authored custom event id
|
|
11
|
+
* @returns namespaced event key
|
|
12
|
+
*/
|
|
13
|
+
export function GetFlowGraphCustomEventKey(eventId) {
|
|
14
|
+
return `custom:${encodeURIComponent(eventId)}`;
|
|
15
|
+
}
|
|
7
16
|
/**
|
|
8
17
|
* A block that receives a custom event.
|
|
9
18
|
* It saves the event data in the data outputs, based on the provided eventData in the configuration. For example, if the event data is
|
|
10
19
|
* `{ x: { type: RichTypeNumber }, y: { type: RichTypeNumber } }`, the block will have two data outputs: x and y.
|
|
11
20
|
*/
|
|
12
21
|
export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
22
|
+
/** @returns the configured custom event id */
|
|
23
|
+
get eventKey() {
|
|
24
|
+
return GetFlowGraphCustomEventKey(this.config.eventId);
|
|
25
|
+
}
|
|
13
26
|
constructor(
|
|
14
27
|
/**
|
|
15
28
|
* the configuration of the block
|
|
@@ -19,7 +32,7 @@ export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
|
19
32
|
this.config = config;
|
|
20
33
|
this.initPriority = 1;
|
|
21
34
|
// use event data to register data outputs
|
|
22
|
-
for (const key
|
|
35
|
+
for (const key of Object.keys(this.config.eventData ?? {})) {
|
|
23
36
|
const entry = this.config.eventData[key];
|
|
24
37
|
// Handle deserialized config where type may be a string typeName, a plain object
|
|
25
38
|
// with a typeName property (from old JSON serialization), or a proper RichType instance.
|
|
@@ -37,7 +50,7 @@ export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
|
37
50
|
: this.registerDataOutput("event", RichTypeString);
|
|
38
51
|
}
|
|
39
52
|
_updateOutputs(context) {
|
|
40
|
-
this.eventRef.setValue(context.getEventReference(this.
|
|
53
|
+
this.eventRef.setValue(context.getEventReference(this.eventKey), context);
|
|
41
54
|
}
|
|
42
55
|
_preparePendingTasks(context) {
|
|
43
56
|
const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);
|
|
@@ -49,12 +62,12 @@ export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
|
49
62
|
const eventObserver = observable.add((eventData, eventState) => {
|
|
50
63
|
// Make this dispatch's EventState reachable by event/stopPropagation
|
|
51
64
|
// for the duration of the synchronous receiver flow.
|
|
52
|
-
context.configuration.coordinator._beginEventDispatch(this.
|
|
65
|
+
context.configuration.coordinator._beginEventDispatch(this.eventKey, eventState);
|
|
53
66
|
try {
|
|
54
67
|
// Drive the outputs from the configured payload schema rather than from the incoming
|
|
55
68
|
// keys, so a key the sender omitted (or sent as undefined) resets to its configured
|
|
56
69
|
// default instead of retaining the value from a previous dispatch.
|
|
57
|
-
for (const key
|
|
70
|
+
for (const key of Object.keys(this.config.eventData ?? {})) {
|
|
58
71
|
const output = this.getDataOutput(key);
|
|
59
72
|
if (!output) {
|
|
60
73
|
continue;
|
|
@@ -63,7 +76,7 @@ export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
|
63
76
|
output.setValue(incoming === undefined ? this._getEventDataDefault(key) : incoming, context);
|
|
64
77
|
}
|
|
65
78
|
// Expose the event reference before activating downstream flow.
|
|
66
|
-
this.eventRef.setValue(context.getEventReference(this.
|
|
79
|
+
this.eventRef.setValue(context.getEventReference(this.eventKey), context);
|
|
67
80
|
this._execute(context);
|
|
68
81
|
}
|
|
69
82
|
finally {
|
|
@@ -79,7 +92,9 @@ export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
|
79
92
|
* @returns the default value for that key
|
|
80
93
|
*/
|
|
81
94
|
_getEventDataDefault(key) {
|
|
82
|
-
const entry = this.config.eventData
|
|
95
|
+
const entry = this.config.eventData && Object.prototype.hasOwnProperty.call(this.config.eventData, key)
|
|
96
|
+
? this.config.eventData[key]
|
|
97
|
+
: undefined;
|
|
83
98
|
return entry?.value !== undefined ? entry.value : entry?.type?.defaultValue;
|
|
84
99
|
}
|
|
85
100
|
_cancelPendingTasks(context) {
|
|
@@ -98,9 +113,19 @@ export class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {
|
|
|
98
113
|
serialize(serializationObject = {}) {
|
|
99
114
|
super.serialize(serializationObject);
|
|
100
115
|
// Override the eventData in config to store typeName strings instead of RichType instances
|
|
101
|
-
const serializedEventData =
|
|
102
|
-
for (const key
|
|
103
|
-
|
|
116
|
+
const serializedEventData = Object.create(null);
|
|
117
|
+
for (const key of Object.keys(this.config.eventData ?? {})) {
|
|
118
|
+
const entry = this.config.eventData[key];
|
|
119
|
+
const serializedEntry = { type: entry.type.typeName };
|
|
120
|
+
if (entry.value !== undefined) {
|
|
121
|
+
defaultValueSerializationFunction("value", entry.value, serializedEntry);
|
|
122
|
+
}
|
|
123
|
+
Object.defineProperty(serializedEventData, key, {
|
|
124
|
+
configurable: true,
|
|
125
|
+
enumerable: true,
|
|
126
|
+
value: serializedEntry,
|
|
127
|
+
writable: true,
|
|
128
|
+
});
|
|
104
129
|
}
|
|
105
130
|
serializationObject.config.eventData = serializedEventData;
|
|
106
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphReceiveCustomEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Observer } from \"../../../Misc/observable.pure\";\r\nimport { type FlowGraphContext } from \"../../flowGraphContext\";\r\nimport { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { type RichType, getRichTypeByFlowGraphType, RichTypeString } from \"../../flowGraphRichTypes.pure\";\r\nimport { type FlowGraphDataConnection } from \"../../flowGraphDataConnection.pure\";\r\nimport { type IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\r\nimport { FlowGraphCoordinator } from \"core/FlowGraph/flowGraphCoordinator\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n/**\r\n * Parameters used to create a FlowGraphReceiveCustomEventBlock.\r\n */\r\nexport interface IFlowGraphReceiveCustomEventBlockConfiguration extends IFlowGraphBlockConfiguration {\r\n /**\r\n * The id of the event to receive.\r\n * This event id is unique to the environment (not the context).\r\n */\r\n eventId: string;\r\n /**\r\n * The names of the data outputs for that event. Should be in the same order as the event data in\r\n * SendCustomEvent\r\n */\r\n eventData: { [key: string]: { type: RichType<any> } };\r\n}\r\n\r\n/**\r\n * A block that receives a custom event.\r\n * It saves the event data in the data outputs, based on the provided eventData in the configuration. For example, if the event data is\r\n * `{ x: { type: RichTypeNumber }, y: { type: RichTypeNumber } }`, the block will have two data outputs: x and y.\r\n */\r\nexport class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {\r\n public override initPriority: number = 1;\r\n\r\n /**\r\n * Output: the opaque reference identifying the received event source.\r\n * Receivers configured with the same event id share the same reference, so comparing their\r\n * `event` outputs for equality succeeds. The reference format is owned by the host environment.\r\n */\r\n public readonly eventRef: FlowGraphDataConnection<string>;\r\n\r\n constructor(\r\n /**\r\n * the configuration of the block\r\n */\r\n public override config: IFlowGraphReceiveCustomEventBlockConfiguration\r\n ) {\r\n super(config);\r\n // use event data to register data outputs\r\n for (const key in this.config.eventData) {\r\n const entry = this.config.eventData[key];\r\n // Handle deserialized config where type may be a string typeName, a plain object\r\n // with a typeName property (from old JSON serialization), or a proper RichType instance.\r\n const typeKey = typeof entry.type === \"string\" ? entry.type : entry.type?.typeName;\r\n const richType = typeof entry.type?.serialize === \"function\" ? entry.type : getRichTypeByFlowGraphType(typeKey);\r\n entry.type = richType;\r\n // Pass default value from event data schema so outputs have the correct initial value\r\n this.registerDataOutput(key, richType, (entry as any).value);\r\n }\r\n // Reserved `event` output exposing the event reference. Guard against a\r\n // (pathological) custom event value socket literally named \"event\".\r\n this.eventRef =\r\n this.config.eventData && Object.prototype.hasOwnProperty.call(this.config.eventData, \"event\")\r\n ? this.getDataOutput(\"event\")!\r\n : this.registerDataOutput(\"event\", RichTypeString);\r\n }\r\n\r\n public override _updateOutputs(context: FlowGraphContext): void {\r\n this.eventRef.setValue(context.getEventReference(this.config.eventId), context);\r\n }\r\n\r\n public override _preparePendingTasks(context: FlowGraphContext): void {\r\n const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);\r\n // check if we are not exceeding the max number of events\r\n if (observable && observable.hasObservers() && observable.observers.length > FlowGraphCoordinator.MaxEventsPerType) {\r\n this._reportError(context, `FlowGraphReceiveCustomEventBlock: Too many observers for event ${this.config.eventId}. Max is ${FlowGraphCoordinator.MaxEventsPerType}.`);\r\n return;\r\n }\r\n\r\n const eventObserver = observable.add((eventData: { [key: string]: any }, eventState) => {\r\n // Make this dispatch's EventState reachable by event/stopPropagation\r\n // for the duration of the synchronous receiver flow.\r\n context.configuration.coordinator._beginEventDispatch(this.config.eventId, eventState);\r\n try {\r\n // Drive the outputs from the configured payload schema rather than from the incoming\r\n // keys, so a key the sender omitted (or sent as undefined) resets to its configured\r\n // default instead of retaining the value from a previous dispatch.\r\n for (const key in this.config.eventData) {\r\n const output = this.getDataOutput(key);\r\n if (!output) {\r\n continue;\r\n }\r\n const incoming = eventData?.[key];\r\n output.setValue(incoming === undefined ? this._getEventDataDefault(key) : incoming, context);\r\n }\r\n // Expose the event reference before activating downstream flow.\r\n this.eventRef.setValue(context.getEventReference(this.config.eventId), context);\r\n this._execute(context);\r\n } finally {\r\n context.configuration.coordinator._endEventDispatch();\r\n }\r\n });\r\n context._setExecutionVariable(this, \"_eventObserver\", eventObserver);\r\n }\r\n\r\n /**\r\n * The value an output falls back to when the sender provides no value for it: the default\r\n * declared by the payload schema, or the socket type's default when the schema declares none.\r\n * @param key the payload key\r\n * @returns the default value for that key\r\n */\r\n private _getEventDataDefault(key: string): any {\r\n const entry = this.config.eventData?.[key] as { type: RichType<any>; value?: any } | undefined;\r\n return entry?.value !== undefined ? entry.value : entry?.type?.defaultValue;\r\n }\r\n public override _cancelPendingTasks(context: FlowGraphContext): void {\r\n const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);\r\n if (observable) {\r\n const eventObserver = context._getExecutionVariable<Nullable<Observer<any[]>>>(this, \"_eventObserver\", null);\r\n observable.remove(eventObserver);\r\n } else {\r\n Logger.Warn(`FlowGraphReceiveCustomEventBlock: Missing observable for event ${this.config.eventId}`);\r\n }\r\n }\r\n\r\n public override _executeEvent(_context: FlowGraphContext, _payload: any): boolean {\r\n return true;\r\n }\r\n\r\n public override serialize(serializationObject: any = {}) {\r\n super.serialize(serializationObject);\r\n // Override the eventData in config to store typeName strings instead of RichType instances\r\n const serializedEventData: any = {};\r\n for (const key in this.config.eventData) {\r\n serializedEventData[key] = { type: this.config.eventData[key].type.typeName };\r\n }\r\n serializationObject.config.eventData = serializedEventData;\r\n }\r\n\r\n /**\r\n * @returns class name of the block.\r\n */\r\n public override getClassName(): string {\r\n return FlowGraphBlockNames.ReceiveCustomEvent;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for flowGraphReceiveCustomEventBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterFlowGraphReceiveCustomEventBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(FlowGraphBlockNames.ReceiveCustomEvent, FlowGraphReceiveCustomEventBlock);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"flowGraphReceiveCustomEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Observer } from \"../../../Misc/observable.pure\";\r\nimport { type FlowGraphContext } from \"../../flowGraphContext\";\r\nimport { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { type RichType, getRichTypeByFlowGraphType, RichTypeString } from \"../../flowGraphRichTypes.pure\";\r\nimport { type FlowGraphDataConnection } from \"../../flowGraphDataConnection.pure\";\r\nimport { type IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\r\nimport { FlowGraphCoordinator } from \"core/FlowGraph/flowGraphCoordinator\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { defaultValueSerializationFunction } from \"../../serialization\";\r\n/**\r\n * Parameters used to create a FlowGraphReceiveCustomEventBlock.\r\n */\r\nexport interface IFlowGraphReceiveCustomEventBlockConfiguration extends IFlowGraphBlockConfiguration {\r\n /**\r\n * The id of the event to receive.\r\n * This event id is unique to the environment (not the context).\r\n */\r\n eventId: string;\r\n /**\r\n * The names of the data outputs for that event. Should be in the same order as the event data in\r\n * SendCustomEvent\r\n */\r\n eventData: { [key: string]: { type: RichType<any>; value?: any } };\r\n}\r\n\r\n/**\r\n * Returns the event-dispatch key for an authored custom event id.\r\n * @param eventId authored custom event id\r\n * @returns namespaced event key\r\n */\r\nexport function GetFlowGraphCustomEventKey(eventId: string): string {\r\n return `custom:${encodeURIComponent(eventId)}`;\r\n}\r\n\r\n/**\r\n * A block that receives a custom event.\r\n * It saves the event data in the data outputs, based on the provided eventData in the configuration. For example, if the event data is\r\n * `{ x: { type: RichTypeNumber }, y: { type: RichTypeNumber } }`, the block will have two data outputs: x and y.\r\n */\r\nexport class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {\r\n public override initPriority: number = 1;\r\n\r\n /**\r\n * Output: the opaque reference identifying the received event source.\r\n * Receivers configured with the same event id share the same reference, so comparing their\r\n * `event` outputs for equality succeeds. The reference format is owned by the host environment.\r\n */\r\n public readonly eventRef: FlowGraphDataConnection<string>;\r\n\r\n /** @returns the configured custom event id */\r\n public override get eventKey(): string {\r\n return GetFlowGraphCustomEventKey(this.config.eventId);\r\n }\r\n\r\n constructor(\r\n /**\r\n * the configuration of the block\r\n */\r\n public override config: IFlowGraphReceiveCustomEventBlockConfiguration\r\n ) {\r\n super(config);\r\n // use event data to register data outputs\r\n for (const key of Object.keys(this.config.eventData ?? {})) {\r\n const entry = this.config.eventData[key];\r\n // Handle deserialized config where type may be a string typeName, a plain object\r\n // with a typeName property (from old JSON serialization), or a proper RichType instance.\r\n const typeKey = typeof entry.type === \"string\" ? entry.type : entry.type?.typeName;\r\n const richType = typeof entry.type?.serialize === \"function\" ? entry.type : getRichTypeByFlowGraphType(typeKey);\r\n entry.type = richType;\r\n // Pass default value from event data schema so outputs have the correct initial value\r\n this.registerDataOutput(key, richType, (entry as any).value);\r\n }\r\n // Reserved `event` output exposing the event reference. Guard against a\r\n // (pathological) custom event value socket literally named \"event\".\r\n this.eventRef =\r\n this.config.eventData && Object.prototype.hasOwnProperty.call(this.config.eventData, \"event\")\r\n ? this.getDataOutput(\"event\")!\r\n : this.registerDataOutput(\"event\", RichTypeString);\r\n }\r\n\r\n public override _updateOutputs(context: FlowGraphContext): void {\r\n this.eventRef.setValue(context.getEventReference(this.eventKey), context);\r\n }\r\n\r\n public override _preparePendingTasks(context: FlowGraphContext): void {\r\n const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);\r\n // check if we are not exceeding the max number of events\r\n if (observable && observable.hasObservers() && observable.observers.length > FlowGraphCoordinator.MaxEventsPerType) {\r\n this._reportError(context, `FlowGraphReceiveCustomEventBlock: Too many observers for event ${this.config.eventId}. Max is ${FlowGraphCoordinator.MaxEventsPerType}.`);\r\n return;\r\n }\r\n\r\n const eventObserver = observable.add((eventData: { [key: string]: any }, eventState) => {\r\n // Make this dispatch's EventState reachable by event/stopPropagation\r\n // for the duration of the synchronous receiver flow.\r\n context.configuration.coordinator._beginEventDispatch(this.eventKey, eventState);\r\n try {\r\n // Drive the outputs from the configured payload schema rather than from the incoming\r\n // keys, so a key the sender omitted (or sent as undefined) resets to its configured\r\n // default instead of retaining the value from a previous dispatch.\r\n for (const key of Object.keys(this.config.eventData ?? {})) {\r\n const output = this.getDataOutput(key);\r\n if (!output) {\r\n continue;\r\n }\r\n const incoming = eventData?.[key];\r\n output.setValue(incoming === undefined ? this._getEventDataDefault(key) : incoming, context);\r\n }\r\n // Expose the event reference before activating downstream flow.\r\n this.eventRef.setValue(context.getEventReference(this.eventKey), context);\r\n this._execute(context);\r\n } finally {\r\n context.configuration.coordinator._endEventDispatch();\r\n }\r\n });\r\n context._setExecutionVariable(this, \"_eventObserver\", eventObserver);\r\n }\r\n\r\n /**\r\n * The value an output falls back to when the sender provides no value for it: the default\r\n * declared by the payload schema, or the socket type's default when the schema declares none.\r\n * @param key the payload key\r\n * @returns the default value for that key\r\n */\r\n private _getEventDataDefault(key: string): any {\r\n const entry =\r\n this.config.eventData && Object.prototype.hasOwnProperty.call(this.config.eventData, key)\r\n ? (this.config.eventData[key] as { type: RichType<any>; value?: any })\r\n : undefined;\r\n return entry?.value !== undefined ? entry.value : entry?.type?.defaultValue;\r\n }\r\n public override _cancelPendingTasks(context: FlowGraphContext): void {\r\n const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);\r\n if (observable) {\r\n const eventObserver = context._getExecutionVariable<Nullable<Observer<any[]>>>(this, \"_eventObserver\", null);\r\n observable.remove(eventObserver);\r\n } else {\r\n Logger.Warn(`FlowGraphReceiveCustomEventBlock: Missing observable for event ${this.config.eventId}`);\r\n }\r\n }\r\n\r\n public override _executeEvent(_context: FlowGraphContext, _payload: any): boolean {\r\n return true;\r\n }\r\n\r\n public override serialize(serializationObject: any = {}) {\r\n super.serialize(serializationObject);\r\n // Override the eventData in config to store typeName strings instead of RichType instances\r\n const serializedEventData: any = Object.create(null);\r\n for (const key of Object.keys(this.config.eventData ?? {})) {\r\n const entry = this.config.eventData[key];\r\n const serializedEntry: { type: string; value?: unknown } = { type: entry.type.typeName };\r\n if (entry.value !== undefined) {\r\n defaultValueSerializationFunction(\"value\", entry.value, serializedEntry);\r\n }\r\n Object.defineProperty(serializedEventData, key, {\r\n configurable: true,\r\n enumerable: true,\r\n value: serializedEntry,\r\n writable: true,\r\n });\r\n }\r\n serializationObject.config.eventData = serializedEventData;\r\n }\r\n\r\n /**\r\n * @returns class name of the block.\r\n */\r\n public override getClassName(): string {\r\n return FlowGraphBlockNames.ReceiveCustomEvent;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for flowGraphReceiveCustomEventBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterFlowGraphReceiveCustomEventBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(FlowGraphBlockNames.ReceiveCustomEvent, FlowGraphReceiveCustomEventBlock);\r\n}\r\n"]}
|
|
@@ -10,6 +10,8 @@ import { FlowGraphEventType } from "../../flowGraphEventType.js";
|
|
|
10
10
|
export declare class FlowGraphSceneReadyEventBlock extends FlowGraphEventBlock {
|
|
11
11
|
initPriority: number;
|
|
12
12
|
readonly type: FlowGraphEventType;
|
|
13
|
+
/** @returns the shared scene-ready event key */
|
|
14
|
+
get eventKey(): string;
|
|
13
15
|
/**
|
|
14
16
|
* Output: the opaque reference identifying this event source.
|
|
15
17
|
* All instances of this block share the same reference, so comparing the `event` output of two
|
|
@@ -8,6 +8,10 @@ const EventKey = "sceneReady";
|
|
|
8
8
|
* Block that triggers when a scene is ready.
|
|
9
9
|
*/
|
|
10
10
|
export class FlowGraphSceneReadyEventBlock extends FlowGraphEventBlock {
|
|
11
|
+
/** @returns the shared scene-ready event key */
|
|
12
|
+
get eventKey() {
|
|
13
|
+
return EventKey;
|
|
14
|
+
}
|
|
11
15
|
constructor() {
|
|
12
16
|
super();
|
|
13
17
|
this.initPriority = -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphSceneReadyEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,mEAAmE;AACnE,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"file":"flowGraphSceneReadyEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,mEAAmE;AACnE,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,mBAAmB;IAIlE,gDAAgD;IAChD,IAAoB,QAAQ;QACxB,OAAO,QAAQ,CAAC;IACpB,CAAC;IASD;QACI,KAAK,EAAE,CAAC;QAhBI,iBAAY,GAAW,CAAC,CAAC,CAAC;QAEjB,SAAI,oDAAqD;QAe9E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;IAEe,cAAc,CAAC,OAAyB;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAEe,aAAa,CAAC,OAAyB,EAAE,QAAa;QAClE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IACe,oBAAoB,CAAC,OAAyB;QAC1D,QAAQ;IACZ,CAAC;IACe,mBAAmB,CAAC,OAAyB;QACzD,QAAQ;IACZ,CAAC;IACD;;OAEG;IACa,YAAY;QACxB,iFAA2C;IAC/C,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,qCAAqC;IACjD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,4EAAsC,6BAA6B,CAAC,CAAC;AACtF,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\r\nimport { type FlowGraphContext } from \"core/FlowGraph/flowGraphContext\";\r\nimport { type FlowGraphDataConnection } from \"core/FlowGraph/flowGraphDataConnection.pure\";\r\nimport { RichTypeString } from \"core/FlowGraph/flowGraphRichTypes.pure\";\r\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\r\nimport { FlowGraphEventType } from \"core/FlowGraph/flowGraphEventType\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n\r\n/** Event source key used to build this block's event reference. */\r\nconst EventKey = \"sceneReady\";\r\n\r\n/**\r\n * Block that triggers when a scene is ready.\r\n */\r\nexport class FlowGraphSceneReadyEventBlock extends FlowGraphEventBlock {\r\n public override initPriority: number = -1;\r\n\r\n public override readonly type: FlowGraphEventType = FlowGraphEventType.SceneReady;\r\n /** @returns the shared scene-ready event key */\r\n public override get eventKey(): string {\r\n return EventKey;\r\n }\r\n\r\n /**\r\n * Output: the opaque reference identifying this event source.\r\n * All instances of this block share the same reference, so comparing the `event` output of two\r\n * of them for equality succeeds. The reference format is owned by the host environment.\r\n */\r\n public readonly eventRef: FlowGraphDataConnection<string>;\r\n\r\n constructor() {\r\n super();\r\n this.eventRef = this.registerDataOutput(\"event\", RichTypeString);\r\n }\r\n\r\n public override _updateOutputs(context: FlowGraphContext): void {\r\n this.eventRef.setValue(context.getEventReference(EventKey), context);\r\n }\r\n\r\n public override _executeEvent(context: FlowGraphContext, _payload: any): boolean {\r\n this.eventRef.setValue(context.getEventReference(EventKey), context);\r\n this._execute(context);\r\n return true;\r\n }\r\n public override _preparePendingTasks(context: FlowGraphContext): void {\r\n // no-op\r\n }\r\n public override _cancelPendingTasks(context: FlowGraphContext): void {\r\n // no-op\r\n }\r\n /**\r\n * @returns class name of the block.\r\n */\r\n public override getClassName() {\r\n return FlowGraphBlockNames.SceneReadyEvent;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for flowGraphSceneReadyEventBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterFlowGraphSceneReadyEventBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(FlowGraphBlockNames.SceneReadyEvent, FlowGraphSceneReadyEventBlock);\r\n}\r\n"]}
|
|
@@ -35,6 +35,8 @@ export declare class FlowGraphSceneTickEventBlock extends FlowGraphEventBlock {
|
|
|
35
35
|
*/
|
|
36
36
|
readonly eventRef: FlowGraphDataConnection<string>;
|
|
37
37
|
readonly type: FlowGraphEventType;
|
|
38
|
+
/** @returns the shared scene-tick event key */
|
|
39
|
+
get eventKey(): string;
|
|
38
40
|
constructor();
|
|
39
41
|
_updateOutputs(context: FlowGraphContext): void;
|
|
40
42
|
/**
|
|
@@ -8,6 +8,10 @@ const EventKey = "sceneTick";
|
|
|
8
8
|
* Block that triggers on scene tick (before each render).
|
|
9
9
|
*/
|
|
10
10
|
export class FlowGraphSceneTickEventBlock extends FlowGraphEventBlock {
|
|
11
|
+
/** @returns the shared scene-tick event key */
|
|
12
|
+
get eventKey() {
|
|
13
|
+
return EventKey;
|
|
14
|
+
}
|
|
11
15
|
constructor() {
|
|
12
16
|
super();
|
|
13
17
|
this.type = "SceneBeforeRender" /* FlowGraphEventType.SceneBeforeRender */;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphSceneTickEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,mEAAmE;AACnE,MAAM,QAAQ,GAAG,WAAW,CAAC;AAgB7B;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"file":"flowGraphSceneTickEventBlock.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,mEAAmE;AACnE,MAAM,QAAQ,GAAG,WAAW,CAAC;AAgB7B;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,mBAAmB;IAmBjE,+CAA+C;IAC/C,IAAoB,QAAQ;QACxB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;QACI,KAAK,EAAE,CAAC;QAPa,SAAI,kEAA4D;QAQrF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;IAEe,cAAc,CAAC,OAAyB;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACa,oBAAoB,CAAC,QAA0B;QAC3D,QAAQ;IACZ,CAAC;IAED;;OAEG;IACa,aAAa,CAAC,OAAyB,EAAE,OAAqC;QAC1F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACa,mBAAmB,CAAC,QAA0B;QAC1D,QAAQ;IACZ,CAAC;IAED;;OAEG;IACa,YAAY;QACxB,+EAA0C;IAC9C,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,oCAAoC;IAChD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,0EAAqC,4BAA4B,CAAC,CAAC;AACpF,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\r\nimport { type FlowGraphContext } from \"core/FlowGraph/flowGraphContext\";\r\nimport { RichTypeNumber, RichTypeString } from \"core/FlowGraph/flowGraphRichTypes.pure\";\r\nimport { type FlowGraphDataConnection } from \"core/FlowGraph/flowGraphDataConnection.pure\";\r\nimport { FlowGraphBlockNames } from \"../flowGraphBlockNames\";\r\nimport { FlowGraphEventType } from \"core/FlowGraph/flowGraphEventType\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n\r\n/** Event source key used to build this block's event reference. */\r\nconst EventKey = \"sceneTick\";\r\n\r\n/**\r\n * Payload for the scene tick event.\r\n */\r\nexport interface IFlowGraphOnTickEventPayload {\r\n /**\r\n * the time in seconds since the scene started.\r\n */\r\n timeSinceStart: number;\r\n /**\r\n * the time in seconds since the last frame.\r\n */\r\n deltaTime: number;\r\n}\r\n\r\n/**\r\n * Block that triggers on scene tick (before each render).\r\n */\r\nexport class FlowGraphSceneTickEventBlock extends FlowGraphEventBlock {\r\n /**\r\n * the time in seconds since the scene started.\r\n */\r\n public readonly timeSinceStart: FlowGraphDataConnection<number>;\r\n\r\n /**\r\n * the time in seconds since the last frame.\r\n */\r\n public readonly deltaTime: FlowGraphDataConnection<number>;\r\n\r\n /**\r\n * Output: the opaque reference identifying this event source.\r\n * All instances of this block share the same reference, so comparing the `event` output of two\r\n * of them for equality succeeds. The reference format is owned by the host environment.\r\n */\r\n public readonly eventRef: FlowGraphDataConnection<string>;\r\n\r\n public override readonly type: FlowGraphEventType = FlowGraphEventType.SceneBeforeRender;\r\n /** @returns the shared scene-tick event key */\r\n public override get eventKey(): string {\r\n return EventKey;\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.timeSinceStart = this.registerDataOutput(\"timeSinceStart\", RichTypeNumber);\r\n this.deltaTime = this.registerDataOutput(\"deltaTime\", RichTypeNumber);\r\n this.eventRef = this.registerDataOutput(\"event\", RichTypeString);\r\n }\r\n\r\n public override _updateOutputs(context: FlowGraphContext): void {\r\n this.eventRef.setValue(context.getEventReference(EventKey), context);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _preparePendingTasks(_context: FlowGraphContext): void {\r\n // no-op\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _executeEvent(context: FlowGraphContext, payload: IFlowGraphOnTickEventPayload): boolean {\r\n this.timeSinceStart.setValue(payload.timeSinceStart, context);\r\n this.deltaTime.setValue(payload.deltaTime, context);\r\n this.eventRef.setValue(context.getEventReference(EventKey), context);\r\n this._execute(context);\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _cancelPendingTasks(_context: FlowGraphContext) {\r\n // no-op\r\n }\r\n\r\n /**\r\n * @returns class name of the block.\r\n */\r\n public override getClassName(): string {\r\n return FlowGraphBlockNames.SceneTickEvent;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for flowGraphSceneTickEventBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterFlowGraphSceneTickEventBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(FlowGraphBlockNames.SceneTickEvent, FlowGraphSceneTickEventBlock);\r\n}\r\n"]}
|