You can send an existing Signal Instance (or create a new one and then send it) to a target object with the following APIs
public static void sendSignal(String signalName, Object_ object) { ... } public static void sendSignal(String signalName, String targetName) { ... } public static void sendSignal(SignalInstance signal, Object_ object) { ... } public static void sendSignal(SignalInstance signal, String targetName) { ... } public static void sendSignal(String signalName, Object_ target, String portName) { ... } public static void sendSignal(SignalInstance signal, Object_ target, String portName) { ... }
The conditions that apply when creating an Instance are as follows
- If a signal name contains "::", it will find the signal from a qualified name. The signal will be found if its qualified name is ended with signalName.
- If an object is an instance of an Object_, send the signal to that Object_ directly.
- If an object is an instance of a String, there are two possible cases as follows
- It will find the target object(s) from all waiting objects whose part/property names match the target's String parameter.
- It will find the target object(s) through connected ports, given that the port is the name of the current object.
The following example shows how to send a specific signal to a specific target object in ALH API
ALH.sendSignal("play", o); → "o" references to a target object. ALH.sendSignal("system::play", o); → Find a signal using a qualified name. ALH.sendSignal("play", "Speaker"); → Send to all waiting objects that have "Speaker" as their type name. ALH.sendSignal("play", "Player", "out2"); → "Player" is an object, and "out2" is a port name.
All parameters must not be null, otherwise the ScriptEngine errors will be thrown.