Combine

Дожидается поступления двух заявок в порты in1 и in2 (в произвольном порядке), а затем создает новую заявку и направляет ее на выходной порт. Заявка, прибывающая первой, хранится внутри объекта, пока не придет другая. Как только прибывает другая заявка, созданная заявка сразу же покидает объект. 

Новая заявка может быть любой из первоначально поступивших в объект заявок (возможно, измененной пользователем), а может быть и совершенно новой, чьи свойства могут зависеть от свойств первоначальных заявок.

Объект Combine может использоваться для различных целей. Во-первых, он может служить точкой синхронизации, позволяющей одной заявке продолжать свое движение только после прихода другой. Во-вторых, Вы можете использовать объект Combine для воссоединения заявки с ее копией/родственной заявкой, созданной объектом Split. В-третьих, Combine может служить альтернативой объекту Pickup, если требуется подобрать только одну заявку: для этого нужно просто написать entity.addEntityToContents( entity2 ) в коде Действия при выходе

Пожалуйста, обратите внимание, что в этом объекте могут уничтожаться заявки. Но поскольку объект не знает, какие именно заявки будут уничтожены, он не проверяет выполнение у заявок условий, необходимых для их уничтожения (см. описание объекта Sink). Обеспечение выполнения всех этих условий входит в Вашу обязанность.

Прибывающая первой заявка может отображаться на презентации в заданном Вами месте.

Параметры класса

Классы заявок
Вход 1
Класс заявок, поступающих в объект через порт in1, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, таких, как onEnter1.
Синтаксис: T1 extends Entity
Значение по умолчанию: Entity
Вход 2
Класс заявок, поступающих в объект через порт in2, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, таких, как onEnter2.
Синтаксис: T2 extends Entity
Значение по умолчанию: Entity
Выход
Класс заявок, покидающих объект, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, таких, как onExit.
Синтаксис: T extends Entity
Значение по умолчанию: Entity

Порты

InPort in1
Входной порт 1.
InPort in2
Входной порт 2.
OutPortPush out
Выходной порт.

Параметры

Действие при входе 1 [динамический]
Код, выполняемый, когда через порт in1 в объект поступает заявка .
Синтаксис: void onEnter1
Локальная переменная: T1 entity - заявка. 
Действие при входе 2 [динамический]
Код, выполняемый, когда через порт in2 в объект поступает заявка .
Синтаксис: void onEnter2
Локальная переменная: T2 entity - заявка. 
Объединенная заявка
Определяет, как будет создаваться новая (объединенная) заявка: 
Создается новая - новая заявка создается путем выполнения пользовательского кода в поле Новая заявка (объединенная),
entity1 - новая заявка равна первоначальной заявке, поступившей в порт in1,
entity2 - новая заявка равна первоначальной заявке, поступившей в порт in2.
Синтаксис: int combineMode
Значение по умолчанию: Создается новая (Combine.NEW)
Допустимые значения: Combine.NEW, Combine.ENTITY1, Combine.ENTITY2 
Новая заявка (объединенная) [динамический]
[Параметр виден, если у параметра Объединенная заявка выбрана опция Создается новая] Выражение, определяющая, какая заявка будет создаваться (обычно просто вызов конструктора класса создаваемой заявки).
Синтаксис: Entity newEntity
Локальные переменные: T1 entity1 - первоначальная заявка, поступившая в порт in1.
             T2 entity2 - первоначальная заявка, поступившая в порт in2.
Значение по умолчанию: new Entity()
Действие при выходе [динамический]
Код, выполняемый, когда созданная заявка покидает объект.
Синтаксис: void onExit
Локальные переменные: Entity entity - созданная заявка, покидающая объект в данный момент времени.
            T1 entity1 - первоначальная заявка, поступившая в порт in1.
            T2 entity2 - первоначальная заявка, поступившая в порт in2.
Фигура анимации новой заявки [динамический]
Фигура анимации, с помощью которой заявки, создаваемые этим объектом, будут отображаться на презентации. Фигура доступна из кода как  entity.getShape() и может быть изменена в любое время с помощью метода entity.setShape(). Поскольку этот параметр динамический, Вы можете задавать различные фигуры для различных заявок, или вообще задать уникальную фигуру для каждой заявки, написав здесь, например, new ShapeOval().
Синтаксис: Shape entityShape
Локальная переменная: T entity - заявка.
Уникальная фигура для каждой заявки
Если опция выбрана (true), то объект создаст копию заданной Фигуры анимации новой заявки и присвоит ее создаваемой заявке. В этом случае свойства фигуры (и ее содержимое, если это группа фигур) могут быть изменены отдельно для каждой заявки. Если же опция не выбрана, то все заявки будут отображаться с помощью одной и той же фигуры, и любое изменение ее свойств приведет к изменению анимаций всех таких заявок.
Синтаксис: boolean uniqueShape
Значение по умолчанию: false
Разрешить вращение
Если опция выбрана (true), то при движении собранных объектом заявок их фигуры анимации будут всегда поворачиваться согласно текущему направлению движения заявки.
Синтаксис: boolean enableRotation
Значение по умолчанию: false
Разрешить вращение по вертикали
Если опция выбрана (true), то при движении собранных объектом заявок их фигуры анимации будут поворачиваться согласно текущему направлению движения заявки как по горизонтали, так и по вертикали.
Синтаксис: boolean enableVerticalRotation
Значение по умолчанию: true
Фигура анимации 1
Фигура анимации первоначальной заявки, поступившей в объект через порт in1 и ожидающей поступления другой заявки.  Всегда используется тип анимации Одиночная.
Синтаксис: Shape animationGuide1
Фигура анимации 2
Фигура анимации первоначальной заявки, поступившей в объект через порт in2 и ожидающей поступления другой заявки.  Всегда используется тип анимации Одиночная.
Синтаксис: Shape animationGuide2