**Иерархии** ---- В XashXT имеется система родительских привязок (parent system), которая аналогично своему прототипу из Half-Life 2 позволяет прикреплять друг к другу неограниченное число объектов. Основной упор при этом делается на кинематические объекты, такие как двери, кнопки, поезда, лифты и прочие. Из уникальных возможностей присутствует переход иерархии сквозь уровни без потери функциональности и «разваливания» системы, что, например, имеет место в Half-Life 2, а также возможность форсированного прикрепления объекта средствами клиента (без учёта физики). Вторая особенность даёт мапперу возможность прикреплять непосредстенно к аттачментам NPC различные точечные объекты: спрайты, источники света, лазерные лучи, а в отдельно оговоренных случаях — модели. Также система позволяет динамически отсоединять одни объекты из группы (с сохранением иерархии, разумеется), и присоединять их к другим, произвольным объектам. Прикрепление объектов достигается при помощи особого поля parent, где левел-дизайнеру следует указать targetname родителя. Точка с числом сразу после имени провоцируют игру на включение клиентской parent system, где число является номером аттачмента у родительской модели. Клиентская parent system работает только для studio-моделей. Это означает что в качестве родителя могут выступать только такие модели, но не брашевые и не спрайтовые. В целях облегчения портирования карт из-под тулкита Spirit of Half-Life у поля **parent** есть псевдоним **movewith**, который выполняет те же самые действия. **Ограничения системы** ---- * Не все объекты могут быть корректно прилинкованы при помощи данной системы. Так, например, нежелательно прикреплять NPC с её помощью, поскольку это может вызывать проблемы с интерполяцией и в конечном итоге будет работать не так, как того ожидал левел-дизайнер. * Прикрепление игрока также недоступно, однако вы можете крепить какие-либо объекты к самому игроку через [[xashxt:ru:энтити:trigger_changeparent|trigger_changeparent]], указав в поле **m_iszNewParent** одно из двух: - Ключевое слово ***locus** при условии, что [[xashxt:ru:энтити:trigger_changeparent|trigger_changeparent]] был активирован при помощи [[xashxt:ru:энтити:trigger_once|trigger_once]], [[xashxt:ru:энтити:trigger_multiple|trigger_multiple]] или [[xashxt:ru:энтити:trigger_inout|trigger_inout]], которые задел игрок (т. е. выступил в роли активатора) - Ключевое слово ***player** * Напрямую вписывать слово *player в поле parent нельзя, так как игрок заходит на сервер самым последним, когда все объекты уже скреплены между собой. * Статический свет (предрассчитанный компиляторами), не даёт эффекта при скреплении. Но вы можете использовать динамический свет, который будет передвигаться вместе с вашими объектами. * Некоторые объекты, которые имеют эффект только на клиенте, точно так же не смогут правильно работать. Это **env_bubbles**, [[xashxt:ru:энтити:env_rain|env_rain]], [[xashxt:ru:энтити:env_static|env_static]], **env_funnel** и, возможно, **func_mortar_field**.