Команды HotActions 3.0
Общие принципы
Типы Данных
Сценарий использует четыре типа данных: строки, числа с плавающей запятой, целые числа и вектора. Для простоты интерпретации данных в следующих главах, мы будем использовать Венгерскую нотацию для указания типа данных специфического параметра. Например, iSpeed подразумевает, что параметр iSpeed имеет тип «целое», а fX – параметр с плавающей точкой. Параметр типа «строка», обозначается при помощи кавычек вокруг параметра.
String | Текст; строки типа «текст» должны быть включены в кавычки; примеры: «Camera1», «End of Track». |
Float | Число с плавающей точкой, например, 10.0. |
Int | Целое число, например, 10. |
Vector | Вектор – комбинация трёх чисел с плавающей точкой, например, 1.0, 2.0, 3.0. |
Color | Цвет – комбинация трех целых чисел от 0 до 255 (Red, Green, Blue) |
Команды разделяются символом конца строки (нажатие Enter) или точкой с запятой (;), если несколько команд находятся на одной строке.
Разделители команд и другие системные символы
Новые системные символы и разделители команд введенные в HotActions 3.0:
| | Вертикальная черта. Используются для разделения типа объекта и его подтипа. (см.. главу «…..» ) |
$<…> | Треугольные скобки, следующие после символа ‘$’, в которые заключается имя параметра. При обработке скрипта на месте этой конструкции будет подставлено значение соответсвующего параметра. |
{ … } | Фигурные скобки. Используются для ограничения блоков команд, имеющих общие начальные тэги, с целью визуального структурирования (а также минимизации текста) скрипта. |
Т.е. подобные строки
<tag11>…<tag1N>.<tag21>…<tag2N> = значение1
- …
<tag11>…<tag1N>.<tag31>…<tag3N> = значение2
можно оформить так:
<tag11>…<tag1N> //общая часть вынесена перед скобками
{
- <tag21>…<tag2N> = значение1
…
- <tag31>…<tag3N> = значение2
}
Например, следующие строки
NODE.'Dummy'.SET.HIDE = 0
NODE.'Dummy'.SET.POS.X = 0
NODE.'Dummy'.SET.POS.Y = -100
NODE.'Dummy'.SET.POS.Z = 100
NODE.'Dummy'.PLAY = 1
NODE.'Dummy'.SET = 0
можно с помощью фигурных скобок и точек с запятой отформатировать таким образом:
NODE.'Dummy'
{
- SET
- {
- HIDE = 0
- POS { X = 0; Y = -100; Z = 100 }
- }
- PLAY = 1
- SET = 0
}
Основной формат представления команд
Большинство команд сценария представляет собой следующую конструкцию:
<путь к объекту>.<поле1>[.<полеN>] = <значение1>[,<значениеN>]
Как правило, <путь к объекту> представляет собой составную конструкцию, состоящая из 4-х полей, разделенных точками:
<Тип Документа>.’<Имя Документа>’.<Тип Объекта>.’<Имя Объекта>’
<Тип Документа> - тэг типа документа, содержащего объект
<Имя Документа> - имя документа, содержащего объект. Это имя всегда указано в заголовке окна соответствующего документа, а также видно в дереве документов проекта.
<Тип Объекта> - тэг основного типа объекта (может включать подтипы, разделенные символом ‘|’)
<Имя Объекта> - имя объекта, к которому применяется команда. Все доступные имена объектов, как правило, видны в соответствующем документе.
Примеры путей:
SCENE.’Simple.3d’.NODE.’Dummy03’
SCENE.’Tutorial.3d’.CAMERA.’Camera01’
PROJECT.’MyProject.vs’.ACTION.’Modify Camera01’
PROJECT.’Class.vs’.LINK_TO|NODE.’Modify Camera02’
ACTLIB.’Joystick.acl’.ACTION.’Init Joystick’
HOTSET.’Common.vs’.HOTBAR.’Cameras’
- <Имя Документа> и <Имя Объекта> всегда рекомендуется заключать в одинарные кавычки, поскольку они могут содержать пробелы, точки и прочие разделительные символы.
Поле <Тип Объекта> как правило, состоит из одного тэга (основного типа), но может включать подтипы, разделенные вертикальной чертой. Обычно указание подтипов используется для точной адресации объектов, имеющих одинаковые имена, например:
PROJECT.’Class.vs’.LINK_TO|NODE.’Camera01’ - путь к объекту типа «ссылка на узел»
PROJECT.’Class.vs’.LINK_TO|СAMERA.’Camera01’ - путь к объекту типа «ссылка на камеру»
К заданному этим путем объекту, собственно, и применяется присоединенная к пути команда <поле1>[.<полеN>] = <значение1>[,<значениеN>], например:
ACTLIB.’Joystick.acl’.ACTION.’Init Joystick’.CONTINUE = 1
SCENE.’Tutorial.3d’.CAMERA.’Camera01’.SET.FOV = 30
PROJECT.’Class.vs’.LINK_TO|NODE.’Modify Camera02’.PLAY.RANGE = 20, 100 (здесь команды выделены жирным для наглядности)
Опряделенный ряд команд относится не к отдельным объектам документов, а к документу в целом. В этих случаях путь состоит из двух тэгов, а не из четырех:
<Тип Документа>.’<Имя Документа>’
Примеры таких команд c сокращенными путями:
SCENE.’Simple.3d’.RESET = 1
MOVIE.’Sport.avi’.PLAY.RANGE = 0, 10
В каждом нижеследующем разделе в начале будут описаны пути доступа к объектам указанного типа, а потом следовать описание команд и их параметров, присоединяемых к этим путям.
Системные команды
Основные команды остались такими же, как в HotActions 1.6, за исключением команды SYS.MACRO, которая отменена и выполняться в данной версии программы не будет. Заметим, что как и прежде, в системных параметрах не используется путь к объекту (либо можно сказать, что этим путем является тэг SYS) Итак, в HotActions 3.0 добавились команды:
SYS.OPEN = «File», <ShowState=1>
- Открывает документ с именем File. File может содержать путь к файлу документа (абсолютный или относительный). Окно документа может быть открыто невидимым, если указать ShowState, равным 0
SYS.PAUSE = 1
- Приостанавливает выполнение команд сценария текущего экшена (т.е. ставит его на паузу). Чтобы продолжить выполнение команд, необходимо из другого экшена вызвать команду <ActionPath>.CONTINUE = 1, где <ActionPath> - путь к экшену, поставленному на паузу.
SYS.PARAM.'ParamName' = Value
- Используется вместо отмененной команды SYS.MACRO. Присваивает значение глобальному параметру (т.е. параметру проекта) с именем 'ParamName'. Тип присваиваемого значения должно быть совместимо с типом параметра. (см. таблицу совместимости в главе «Параметры»). Если параметр с указанным именем в проекте отсутствует, он создается и получает по-умолчанию тип String.
Команды работы с экшенами
Экшены (Actions) могут быть созданы как в документе проекта, так и в отдельных библиотеках. Поэтому пути к ним могут выглядеть следующим образом:
- PROJECT.’ProjectName.vs’.ACTION.’ActionName’'- если экшен находится в проекте
- ACTLIB.’LibName.acl’.ACTION.’ActionName’'- если экшен находится в отдельной библиотеке
Внимание! Здесь и далее в описаниях команд путь к объекту для удобства чтения опущен (но всегда подразумевается!).
- .PLAY = iTimes'
- Исполняет экшен iTimes раз
- .STOP = 1'
- Прерывает исполнение запущенного экшена.
- .CONTINUE = 1'
- Продолжает выполнение скрипта экшена, приостановленного на команде
- SYS.PAUSE (см. “Системные команды”)
- .WAIT = STOP'
- Приостанавливает выполнение всех последующих команд сценария до тех пор, пока исполнение данного экшена не дойдет до конца.
- Аналог команды SYS.WAIT = “<путь к экшену>.STOP” (cм. «Системные команды»)
- .RESET = 1'
- Устанавливает значения Всех локальных параметров экшена в значения по-умолчанию (если имеются).
- .PARAM.‘ParamName’ = Value'
- Присваивает значение Value локальному параметру ‘ParamName’ данного экшена (см. «Параметры»). Тип Value должен быть совместим с типом указанного параметра
Команды работы с объектами сцены
Команды работы с виртуальными камерами
Путь к объекту сцены типа Камера (Camera) имеет следующий вид:
SCENE.’SceneName.3d’.CAMERA.’CameraName’
Команды (присоединяются к пути справа):
- .SET.FOV = fFOV
- Устанавливает FOV (угол зрения по горизонтали) на указанное в градусах значение fFOV. Параметр fFOV может принимать значения от 1 до 179.
- .SET.CLIP.NEAR = fDistance
- Устанавливает расстояние до ближней плоскости клипирования. . Если параметр fDistance равен 0 (или отрицателен), это означает автоматический режим определения, то есть в каждом кадре вычисляется расстояние от виртуальной камеры до ближайшего к ней объекта.
- .SET.CLIP.FAR = fDistance
- Устанавливает расстояние до дальней плоскости клипирования. Если параметр fDistance равен 0 (или отрицателен), это означает автоматический режим определения, то есть в каждом кадре вычисляется расстояние от виртуальной камеры до самого отдалённого от неё объекта.
- .SET.RANGE.NEAR = fDistance
- Устанавливает ближнюю границу fDistance проявления эффекта тумана (Fog). Команды включения эффекта тумана описаны в следующем разделе.
- .SET.RANGE.FAR = fDistance
- Устанавливает расстояние fDistance, начиная с которого эффект тумана (Fog). исчезает.
- .RESET = 1
- Возвращает всем свойствам камеры значения по-умолчанию (заданные в сцене).
Команды работы с источниками света
Путь к объекту сцены типа Источник Света (Light) имеет следующий вид:
SCENE.’SceneName.3d’.LIGHT.’LightName’
Команды (присоединяются к пути справа):
- .SET.ON = iState
- Включает (iState=1) или выключает (iState=0) источник света Light в сцене.
- .SET.COLOR = iR, iG, iB
- Определяет цвет источника света Light в сцене, iR - красной составляющей, iG - зелёной составляющей, iB - синей составляющей. Параметры iR, iG, iB могут принимать значения в диапазоне от 0 до 255.
- .SET.MULT = fMultiplier
- Устанавливает коэффициент умножения интенсивности света fMultiplier.
- .SET.ATTEN.ON = iState
- Включает (iState=1) или выключает (iState=0) использование функции затухания света (Attenuation).
- .SET.ATTEN.RANGE = fRange
- Устанавливает значение дальней границы затухания света.
- .SET.CONE = fHotspotAngle, fFalloffAngle
или
- .SET.CONE.HOTSPOT = fHotspotAngle
- .SET.CONE.FALLOFF = fFalloffAngle
- Устанавливает для направленного источника света (типа Target Spot, Target Direct, Free Spot, Free Direct) углы, задающие конус луча: fHotspotAngle - световое пятно луча, fFalloffAngle - область действия пятна света, регулирующая степень размытия края. Параметры fHotspotAngle, fFalloffAngle могут принимать значения в диапазоне от 0 до 180 градусов.
При попытке применить команду SET.CONE к точечному (ненаправленному) источнику света (тип Omni) в окне Debug Output появится сообщение об ошибке.
- .RESET = 1
- Возвращает всем свойствам источника света значения по-умолчанию (заданные в сцене).
Команды работы с узлами
Путь к объекту сцены типа Узел (Node) имеет следующий вид:
SCENE.’SceneName.3d’.NODE.’NodeName’
Команды (присоединяются к пути справа):
- .SET.HIDE = iHide
- Скрывает/показывает объект в сцене; значение 1 для iHide соответствует сокрытию объекта, 0 – показу объекта.
- .SET. POS = fPosX, fPosY, fPosZ
- Смещает объект на расстояние fPosX, fPosY, fPosZ относительно начального положения в сцене.
- .SET.ROT = fRotX, fRotY, fRotZ
- Поворачивает объект вокруг осей X,Y,Z на cоответствующие значения в градусах fRotX, fRotY, fRotZ.
- .SET.SCL = fSclX, fSclY, fSclZ
- Масштабирует объект относительно осей X,Y,Z с соответствующими коэффициентами fSclX, fSclY, fSclZ
- .SET.VELPOS = fVelPosX, fVelPosY, fVelPosZ
- Устанавливает постоянную скорость д110вижения (смещения) объекта по осям X,Y,Z (единицы сцены в секунду)
- .SET.VELROT = fVelRotX, fVelRotY, fVelRotZ
- Устанавливает угловую скорость вращения объекта вокруг осей X,Y,Z (градусов в секунду)
- .SET.VELSCL = fVelSclX, fVelSclY, fVelSclZ
- Устанавливает скорость масштабирования объекта по осям X,Y,Z (<прирост коэффициента масштабирования>/сек)
- .RESET = 1
- Сбрасывает все трансформации узла (в т.ч. скорости трансформаций) в начальное значение.
Команды проигрывания медиа-трэков
Объект, путь к которому указывается, должен обладать свойствами медиа, т.е. поддерживать проигрывание какого-либо трэка (анимации, видео- или саунд-потока и т.п.). На текущий момент наиболее востребованными объектами такого типа являются Узлы (Nodes), которые могут содержать трэк анимации. Соответственно, в данном случае путь к объекту имеет такой же формат, как для команд узлов (см 4.3):
SCENE.’SceneName.3d’.NODE.’NodeName’
Команды (присоединяются к пути справа):
- .PLAY = 1
- Проигрывает трэк анимации объекта (в соответствии с нижеизложенными параметрами проигрывания).
- .PLAY.RANGE = fBegin, fEnd
- Устанавливает точки начала и конца проигрывания трэка анимации (в секундах).
- .PLAY.REPEAT = nTimes
- Устанавливает количество повторов проигрывания. Если значение nTimes = -1, трэк проигрывается в бесконечном цикле.
- .PLAY.SPEED = fSpeed
- Устанавливает коэффициент скорости проигрывания (например, если значение = 1.5, трэк будет проигран с полуторной скоростью)
- .STOP = 1
- Мгновенно останавливает проигрывание трэка.
- .PAUSE = nOn (1/0)
- Приостанавливает или продолжает проигрывание трэка в зависимости от значения параметра nOn. Если nOn = 1, проигрывание ставится на паузу, если nOn=0 - снимается с нее.
- .SEEK = fPos
- Мгновенный переход в позицию трэка fPos (задается в секундах)
- .PLAY_TO = fPos
- Проигрывает трэк анимации с текущей позиции до тех пор, пока позиция в трэке не достигнет fPos (задается в секундах). При этом число повторов, задаваемое командой RANGE, игнорируется. Если fPos меньше текущей позиции, трек проигрывается в обратном направлении.
- .STOP_AT = fPos
- Устанавливает точку остановки проигрываемого трэка. Как только текущая позиция становится равной fPos (задается в секундах), проигрывание трэка останавливается. Параметр fPos должен находиться в пределах диапазона проигрывания, заданного командой RANGE. Если в момент исполнения команды трэк не запущен, команда игнорируется.
- .WAIT = sEvent (PLAY/STOP/PAUSE)
- Приостанавливает выполнение всех последующих команд сценария до тех пор, пока не произойдет указанное в параметре sEvent событие:
- sEvent = PLAY – трэк начнет проигрывание
- sEvent = STOP – трэк остановится
- sEvent = PAUSE – трэк станет на паузу
Команды работы с материалами
Путь к объекту сцены типа Материал (Material) имеет следующий вид:
SCENE.’SceneName.3d’.MATERIAL.’MaterialName’
Команды (присоединяются к пути справа):
- .SET.AMBIENT = iR, iG, iB
- Устанавливает теневой (Ambient) цвет материала.
- .SET.DIFFUSE = iR, iG, iB
- Устанавливает рассеянный (Diffuse) цвет материала. Имеет эффект только для нетекстурированных материалов (или материалов с выключенными текстурами, см. команду .SET.TEXTURES )
- .SET.SPECULAR = iR, iG, iB
- Устанавливает цвет блика (Specular) материала.
- .SET.OPACITY = iValue (0~100)
- Устанавливает значение непрозрачности материала. При значении iValue, равном 0, материал полностью прозрачен, при 100 – полностью непрозрачен.
- .SET.SELF_ILLUM= iValue (0~100)
- Устанавливает значение самосветимости материала. При значении iValue, равном 100, материал не имеет теней и бликов и имеет только рассеянный (Diffuse) цвет или текстуру .
- .SET.GLOSSINESS= iValue (0~100)
- Устанавливает значение бликования материала. При увеличении значения iValue размер блика уменьшается. Интенсивность блика прямо пропорциональна Specular цвету материала.
- .SET.TEXTURES= iState (0|1)
- Включает (iState=1) или выключает (iState=0) использование текстурирования материала.
- .RESET = 1
- Возвращает всем свойствам материала значения по-умолчанию (заданные в сцене).
Команды работы с параметрами среды
Команды работы с параметрами среды (Environment) относятся к сцене целиком, поэтому путь, с которого начинается команда, имеет следующий вид:
SCENE.’SceneName.3d’.
Команды (присоединяются к пути справа):
- .ENVIRONMENT.AMBIENT = iR, iG, iB
- Устанавливает цвет рассеянного света среды.
- .ENVIRONMENT.DIFFUSE = iR, iG, iB
- Устанавливает цвет фона сцены.
- .ENVIRONMENT.FOG.ON = iState [0|1]
- Включает (iState=1) или выключает (iState=0) эффект тумана (дымки).
- .ENVIRONMENT.FOG.COLOR = iR, iG, iB
- Устанавливает цвет тумана.
- .ENVIRONMENT.FOG.DENSITY = fNear(0~100), fFar(0~100)
- Определяет степени плотности тумана fNear и fFar (в процентах) на ближней границе и дальней границах проявления эффекта. Границы видимости устанавливаются для каждой камеры индивидуально и команды, определяющие эти границы, описаны в разделе выше.
Параметры сценариев
В командах сценария можно использовать параметры. Параметры бывают глобальные и локальные, а также могут иметь различные типы, соответствующие типам их значений (см. справочное руководство по HotActions, «Параметры»).
Глобальные параметры
Область действия глобальных параметров распространяется на весь проект, поэтому параметры этого типа можно использовать в сценариях любых экшенов, входящий в проект. Глобальный параметр можно определить в сценарии следующим образом:
SYS.PARAM.’ParamName’ = Value
Если параметр с указанным именем не существует, он создается и по-умолчанию будет иметь тип String.
Примеры присвоения значений (создания) глобальных параметров:
SYS.PARAM.’MyMovie’ = “..\Sport.avi”
SYS.PARAM.’CurNode’ = SCENE.’Simple.3d’.NODE.’Camera01’
SYS.PARAM.’Counter’ = 2
SYS.PARAM.’MyText’ = “Hello, World!!!”
Локальные параметры
Локальные параметры являются свойствами экшена, поэтому область их действия (подстановки) распространяется только на сценарий этого экшена. Локальный параметр можно определить (cоздать) в сценарии следующим образом:
- <тэговый путь к экшену>.PARAM.’ParamName’ = Value
Если мы определяем локальный параметр экшена, содержащего текущий сценарий, путь к экшену можно не указывать:
- PARAM.’ParamName’ = Value
Примеры присвоения значений (создания) локальных параметров:
PARAM.’Image01’ = “Back.jpg” //локальный параметр текущего экшена
PARAM.’Command’ = PLAY
ACTLIB.'Commom.acl'.ACTION.’InitColors’.PARAM.’Color01’ = 233, 34, 89
$<ThisProj>.ACTION.’InitFont’.PARAM.’Size’ = 20
Если какой-либо локальный параметр имеет же имя, что и глобальный, в процессе выполнения сценария будет подставлено значение именно локального параметра (как ближайшего по области действия).
Системные параметры
Существует набор стандартных (системных) параметров, которые всегда имеют определенные значения, в зависимости от контекста их использования.
Параметр | Значение |
ThisItem | Полный тэговый путь экшена, содержащего данный сценарий |
ThisItemName | Имя экшена, содержащего текущий сценарий |
ThisProj | Тэговый путь проекта, в контексте которого исполняется текущий сценарий |
ThisProjName | Имя проекта, в контексте которого исполняется текущий сценарий |
ThisProjPath | Полный файловый путь проекта, в контексте которого исполняется текущий сценарий |
ThisProjDir | Файловая директория проекта, в контексте которого исполняется текущий сценарий |
ThisScene | Тэговый путь основной сцены проекта, в контексте которого исполняется текущий сценарий |
ThisSceneName | Имя основной сцены проекта, в контексте которого исполняется текущий сценарий |
ThisScenePath | Полный файловый путь основной сцены проекта, в контексте которого исполняется текущий сценарий |
ThisSceneDir | Файловая директория основной сцены проекта, в контексте которого исполняется текущий сценарий |
Пример:
Предположим, загружен проект ‘C:\VS Sets\Test\MyProject.vs', созданный на основе сцены ‘C:\VS Sets\Scenes\Simple.3d' и выполняется экшен с именем 'MyAction’. Если в сценарии этого экшена используются стандартные параметры, то при подстановке они будут иметь следующие значения:
Параметр | Значение |
ThisItem | PROJECT.'MyProject.vs'.ACTION.'MyAction’ |
ThisItemName | MyAction |
ThisProj | PROJECT.'MyProject.vs' |
ThisProjName | MyProject.vs |
ThisProjPath | C:\VS Sets\Test\MyProject.vs |
ThisProjDir | С:\VS Sets\Test |
ThisScene | SCENE.'Simple.3d' |
ThisSceneName | Simple.3d |
ThisScenePath | C:\VS Sets\Scenes\Simple.3d |
ThisSceneDir | C:\VS Sets\Scenes |
Использование параметров
Параметры должны использоваться в сценариях в специальных треугольных скобках, начинающихся с символа $:
$<имя параметра>
В процессе интерпретации сценария вместо этой конструкции будет подставлено текущее значение параметра.
Например, в сценарии имеются следующие строки:
SYS.OUTPUT = $<MyText>
$<CurNode>.PLAY = 1
Если параметр MyText в момент выполнения сценария имеет значение “Hello, World!!!”, а CurNode равен SCENE.’Simple.3d’.NODE.’Camera01’, то вышеуказанные команды будут исполнены следующим образом:
SYS.OUTPUT = “Hello, World!!!”
SCENE.’Simple.3d’.NODE.’Camera01’.PLAY = 1
Команды условий
В некоторых случаях при выполнии сценариев требуется выполнять/пропускать ту или иную команду в зависимости от значения какого-либо параметра. Для этой цели существуют команды условий IF и IFNOT.
Форма использования команд следующая:
IF.”<условие>”.<команда> = <параметры команды>
IFNOT.”<условие>”.<команда> = <параметры команды>
В случае команды IF: если значение условия <условие> ненулевое («истинно»), то выполняется команда <команда>, следующая за условием. Если же условие равно нулю («ложно») – <команда> просто игнорируется.
Для команды IFNOT все наоборот: <команда> выполняется если <условие> условие равно нулю и игнорируется в случае его истинности.
Условия всегда рекомендуется заключать в кавычки.
В качестве условия можно использовать одиночные параметры, например:
IF.”$<Error>”.SYS.OUTPUT = “Error!”
- если значение параметра Error ненулевое, выполняется SYS.OUTPUT = “Error!”
IFNOT.”$<NodeName>”.RETURN = 1
- если значение строкового параметра NodeName непустое и при этом не равно «0», выполняется прерывание выполнения текущего сценария
- Непустое значение любой строки и не равное '0' трактуется как истинное условие.
Также в качестве условий можно использовать выражения с операциями отношения: > больше < меньше >= больше или равно <= меньше или равно == равно != не равно
Примеры:
IF.”$<Сounter> > 3”.COMMAND = CmdParam
- - значение целочисленного параметра Counter должно быть больше 3, чтобы команда выполнилась
IFNOT.”’$<Type>’==PLAY”.COMMAND = CmdParam
- - если значение строкового параметра Type равно PLAY, команда НЕ выполняется
IF.”$<Value1> <= $<Value2>”.COMMAND = CmdParam
- - если значение целочисленного параметра Value1 меньше или равно значению параметра Value2, команда выполняется
В случае необходимости выполнить под одним и тем же условием несколько команд, рекомендуется использовать фигурные скобки, например:
IF.”<условие>”
{
<команда1> = <параметры команды1>
…
<командаN> = <параметры командыN>
}
Возможно использование вложенных команд условия:
IF.”<условие1>”.IF.”<условие2>”[…IF.”<условиеN>”].<команда> = <параметры>
или аналогичная запись c несколькими командами:
IF.”<условие1>”
{
IF.”<условие2>”
{
IF.”<условиеN>
{
<команда1> = <параметры1>
…
<командаN> = <параметрыN>
- }
- }
}
Во вложенных командах можно произвольно чередовать команды IF и IFNOT.
- Вложенные команды условия при разворачивании в одну линию должны следовать одной цепочкой, не прерываясь обычными командами (и не начинаясь с них).
Например, это правильная запись (команды условий идут с начала одна за другой):
IF.”$<Param1>”.IFNOT.”$<Param2>”.IF.”$<Param3>”.PLAY.SPEED = 1.4
А это – неправильные:
IF.”$<Param1>”.PLAY.IF.”$<Param3>”.SPEED = 1.4 //разрыв в середине цепочки
NODE.'Camera’.STOP.IF.”$<Param3>”.RANGE = 1 //команда условия не с начала