UNPKG

@babylonjs/core

Version:

Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.

59 lines 2.77 kB
import { getRichTypeByFlowGraphType } from "../../flowGraphRichTypes.js"; import { FlowGraphExecutionBlockWithOutSignal } from "../../flowGraphExecutionBlockWithOutSignal.js"; import { RegisterClass } from "../../../Misc/typeStore.js"; /** * A block that sends a custom event. * To receive this event you need to use the ReceiveCustomEvent block. * This block has no output, but does have inputs based on the eventData from the configuration. * @see FlowGraphReceiveCustomEventBlock */ export class FlowGraphSendCustomEventBlock extends FlowGraphExecutionBlockWithOutSignal { constructor( /** * the configuration of the block */ config) { super(config); this.config = config; for (const key in this.config.eventData) { const entry = this.config.eventData[key]; // Handle deserialized config where type may be a string typeName, a plain object // with a typeName property (from old JSON serialization), or a proper RichType instance. const typeKey = typeof entry.type === "string" ? entry.type : entry.type?.typeName; const richType = typeof entry.type?.serialize === "function" ? entry.type : getRichTypeByFlowGraphType(typeKey); entry.type = richType; this.registerDataInput(key, richType, entry.value); } } _execute(context) { const eventId = this.config.eventId; // eventData is a map with the key being the data input's name, and value being the data input's value const eventData = {}; for (const port of this.dataInputs) { eventData[port.name] = port.getValue(context); } context.configuration.coordinator.notifyCustomEvent(eventId, eventData); this.out._activateSignal(context); } serialize(serializationObject = {}) { super.serialize(serializationObject); // Override the eventData in config to store typeName strings instead of RichType instances const serializedEventData = {}; for (const key in this.config.eventData) { const entry = this.config.eventData[key]; serializedEventData[key] = { type: entry.type.typeName }; if (entry.value !== undefined) { serializedEventData[key].value = entry.value; } } serializationObject.config.eventData = serializedEventData; } /** * @returns class name of the block. */ getClassName() { return "FlowGraphSendCustomEventBlock" /* FlowGraphBlockNames.SendCustomEvent */; } } RegisterClass("FlowGraphSendCustomEventBlock" /* FlowGraphBlockNames.SendCustomEvent */, FlowGraphSendCustomEventBlock); //# sourceMappingURL=flowGraphSendCustomEventBlock.js.map