Все заметки

Улучшаем работу с шаблонами

Расскажу немного про работу с шаблонами в редакторе.

При создании актора (напоминаю, что актором в моем движке называется любой объект на сцене) из шаблона, копируется вся его иерархия, включая вложенные шаблоны. Зачем это нужно? После создания актора из шаблона его можно кастомизировать, что-то переопределить или добавить дополнительные объекты. Чтобы различать кастомные акторы от наследуемых, каждый актор помечается признаком, указывающим от какого вложенного шаблона он наследуется.

Проблема возникает когда в шаблон нужно добавить новые объекты. Если на сцену ранее уже добавлялись акторы, созданные из этого шаблона, то при изменении структуры шаблона, нужно отыскать все наследуемые акторы и обновить их.

В свое время я не стал этого делать, решив что работа с шаблонами очень уж сложная и лучше не развивать эту историю, а позднее все переписать.

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

Проблему я исправил и теперь при добавлении вложенных шаблонов, редактор модифицирует всех наследников автоматически. Происходит это путем перебора дерева уровней в поиске акторов с подходящим идентификатором родительского шаблона.

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