Waits for the two agents to arrive (in arbitrary order) at ports in1 and in2, produces a new agent and outputs it. The new agent may be a “completely new”, i.e. a newly constructed agent whose properties possibly depend on the original agents, or it may be one of the original agents, again, possibly modified. Once the two agents are ready, the combine operation takes zero time.
Combine may be used for a number of purposes. First, it can serve as a synchronization point to let one of the agents go further only after another one arrives. Second, you can use Combine to re-join the agent with its copy/sibling created with Split block. Third, Combine may be a simple alternative to Pickup if only one agent is picked up: you can write agent.addEntityToContents( agent2 ) in the On exit code.
When you select the resulting agent to be completely new, you can specify the type of this agent in the parameter New agent (combined), which will propagate to other library blocks in the flowchart. When you choose the resulting agent to be agent1 or agent2, and this agent is of your custom type, go to the Advanced section and specify this particular type as the Agent type (out) to propagate it in the process flowchart.
The original agent that arrives first may be animated at the specified position.
- The resulting agent is
-
Defines how the exiting agent is produced:
Completely new — creates a new agent of the type specified in the field New agent (combined) below.
agent1 — equals the first original (the other agent is destroyed).
agent2 — equals the second original (the other agent is destroyed).Get value: combineMode
Set value at runtime: set_combineMode(new value)
Valid values:
Combine.NEW — Completely new
Combine.ENTITY1 — agent1
Combine.ENTITY2 — agent2 -
[Visible if The resulting agent is: Completely new]
The type of the new agent (it can be an expression evaluated to obtain the new agent). Referred to below as T.Value type: Agent
Local variables:
T1 agent1 — the original agent arrived at in1 port.
T2 agent2 — the original agent arrived at in2 port. -
If the option is selected (true), you will be able to change the dimensions of the agent combined by this block specifying the new Length, Width and Height values below.
Value type: boolean
Local variable: T agent — the agent. -
[Visible if the Change dimensions option is selected]
The new length of the combined agent.Value type: double
Local variable: T agent — the agent. -
[Visible if the Change dimensions option is selected]
The new width of the combined agent.Value type: double
Local variable: T agent — the agent. -
[Visible if the Change dimensions option is selected]
The new height of the combined agent.Value type: double
Local variable: T agent — the agent. - Agent location (1)
-
Node or path where the original agent arrived at in1 and waiting for the other one is located.
Syntax: AnimationStaticLocationProvider entityLocation1
- Agent location (2)
-
Node or path where the original agent arrived at in2 and waiting for the other one is located.
Syntax: AnimationStaticLocationProvider entityLocation2
- Agent location (combined)
-
Node or path where the combined agent is located while it hasn’t yet been consumed by the subsequent block.
Syntax: AnimationStaticLocationProvider entityLocation
- Add combined agents to
-
Here you specify where the combined agents created by this block will be stored in:
default population of root agent
.
custom population (specified below in the Population property)Syntax: boolean addToCustomPopulation -
[Visible if Add combined agents to: custom population]
The name of the agent population where the combined agents created by this block will be stored.Value type: AgentList
Local variables:
T agent — the resulting agent that will exit.
T1 agent1 — the original agent arrived at in1 port.
T2 agent2 — the original agent arrived at in2 port. - Forced pushing
-
If the option is selected (true), when agent finishes processing at the block, it is instantly pushed further regardless the state of the succeeding block.
If the option is not selected, agent is not pushed, but pulled: only when the succeeding block is ready to accept one more agent, it requests the agent from this block, and only then this agent passes further.Syntax: boolean pushProtocol
Default value: false - Restore agent location on exit
-
If the option is selected, after being animated in the Agent location (1, 2) shapes, the agents will return to their original location (node or path) where they were before entering this Combine block.
Syntax: boolean restoreEntityLocationOnExit
- On enter 1
-
Code executed when an original agent enters the block at in1.
Local variable: T1 agent — the agent.
- On enter 2
-
Code executed when an original agent enters the block at in2.
Local variable: T2 agent — the agent.
- On exit
-
Code executed when the resulting agent exits the block.
Local variables:
T agent — the resulting agent that will exit.
T1 agent1 — the original agent arrived at in1 port.
T2 agent2 — the original agent arrived at in2 port.
- Agent type (in1), Agent type (in2), Agent type (out)
-
The type of the original agents arriving at port in1,
The type of the original agents arriving at port in2,
The type of the agents exiting this block.
You may need to specify custom agent types for agents to directly access their custom fields in the block actions.Local variables: T1, T2, T
- in1
- The input port.
- in2
- The input port.
- out
- The output port.
-
How can we improve this article?
-