Группа¶
Содержание
-
объект
Группа;
GroupNodeReactor
¶
Производный объект от:
Базовый объект для:
Предупреждение
В интерфейсе версии Standard данный тип объектов недоступен. Вместо него следует использовать производный объект Система координат (TransformNodeReactor), являющийся производным от данного объекта, и, как следствие, имеющий все свойства, события и действия данного объекта.
Объект типа Группа (GroupNodeReactor) и его производные используются для группировки нескольких объектов Узел (NodeReactor), для одновременой работы с ними. Например, в группу и производные можно добавить несколько объектов для совместного скрытия и показа объектов:
Производные объекты могут также модифицировать внешний вид нижележащих объектов. Например, объекты Система координат (TransformNodeReactor) могут изменять преобразования (перемещение, вращение, масштаб) для всех объектов-потомков. Например, пусть имеет место следующая иерархия объектов:
В примере выше изображены два объекта: «Кольцо» и «Мяч», оба расположены в одном объекте Система координат (TransformNodeReactor) - «Мяч и корзина». Объекты «Кольцо» и «Мяч» называются потомками, или дочерними объектами по отношению к «Молекуле воды», «Молекула воды» же является предком, или родительским объектом по отношению к его дочерним объектам.
Теперь изменение параметров «Мяч и корзина» будет менять поведение объектов-потомков:
Начальная ситуация | Объект «Мяч и корзина» был скрыт | Объект «Мяч и корзина» был перемещён |
---|---|---|
При скрытии объекта «Мяч и корзина» скрылись все его потомки
|
При перемещении объекта «Мяч и корзина» (см. Система координат.Перемещение (TransformNodeReactor.trans)) вместе с ним переместились все его потомки
|
Одним из важнейших производных типов объектов - Метка (MarkerReactor). Каждая метка является производной от Система координат (TransformNodeReactor), и перемещается в виртуальном пространстве сцены вместе с реальной меткой дополненной реальности. Таким образом, возникает один из основных паттернов использования меток - если в метку в качестве потомков поместить какие-либо объекты, то они будут перемещаться вместе с реальной меткой дополненной реальности (подробнее см. в Метка (MarkerReactor)).
Работа с потомками и иерархией¶
Вводится в Группа (GroupNodeReactor)
Каждый объект, производный от Группа (GroupNodeReactor) может иметь одного или нескольких потомков, производных от Узел (NodeReactor). Например, любой Модель (ModelReactor) может быть добавлен на метку - в Метка (MarkerReactor), или любой объект может быть добавлен в Сцена (SceneReactor).
Примечание
Вся система объектов, производных от Узел (NodeReactor) повторяет структуру библиотеки OpenSceneGraph . Соответственно, многие особенности библиотеки распрастраняются и на систему объектов EV Toolbox.
Иерархия объектов может быть изменена в списке объектов при помощи drag’n’drop или при помощи контекстного меню.
Параметр | Описание |
---|---|
Список потомков (children) | Список потомков данного объекта |
Действие | Описание |
---|---|
Группа - добавить узел (addChild) | Добавить потомка в конец списка потомков |
Группа - удалить узел (removeChild) | Убирает указанный объект из списка потомков. |
Группа - удалить все дочерние узлы (clearChildren) | Полностью очищает список потомков объекта. |
-
параметр
Список потомков;
children
¶ Список всех дочерних объектов. Имеет тип
table
, в котором находятся ссылки на все дочерние объекты.Примечание
В интерфейсе версии Standard данный параметр устанавливается неявно, путём переноса объектов в списке объектов
Пример использования:
local marker = ... -- Тип MarkerReactor local model = ... -- Тип NodeReactor или производный local transform = ... -- Тип TransformNodeReactor -- Подписываемся на onHide маркера - событие исчезновения его из вида marker:subscribeEvent("onHide", function() -- Переносим трансформацию маркера на transform transform.trans = marker.trans transform.rotate = marker.rotate transform.scale = marker.scale -- Удаляем модель из маркера marker:removeChild(model) -- Добавляем модель в transform transform:addChild(model) end) -- При показе метки marker:subscribeEvent("onShow", function() -- Удаляем модель из transform'а transform:removeChild(model) -- Добавляем модель в маркер marker:addChild(model) end)
-
действие
Группа - добавить узел;
addChild
(child)¶ Добавить потомка в конец списка потомков
Параметры: Узел / child – Объект, производный от Узел (NodeReactor), который будет добавлен в качестве потомка Предупреждение
Метод не рекомендуется вызывать во время обхода графа, так как может повлечь за собой аварийный останов программы. Данное действие недоступно в версии Standard.
-
действие
Группа - удалить узел;
removeChild
(child)¶ Убирает указанный объект из списка потомков.
Если данного объекта не было в спике потомков, то ничего не происходит. Если в списке потомков данный объект встречался дважды, будет удалено только первое вхождение.
Параметры: Узел / child – Объект, который необходимо убрать из списка потомков Предупреждение
Метод не рекомендуется вызывать во время обхода графа, так как может повлечь за собой аварийный останов программы. Данное действие недоступно в версии Standard.
-
действие
Группа - удалить все дочерние узлы;
clearChildren
()¶ Полностью очищает список потомков объекта.
Предупреждение
Метод не рекомендуется вызывать во время обхода графа, так как может повлечь за собой аварийный останов программы. Данное действие недоступно в версии Standard.