Сообщение от Samodelkin
Конечно код сортировки можно вставить куда угодно. Но если ты строго следуешь концепции ООП где всё должно быть разложено по полочкам то сцена и сортировщик вещи разные. Сцена это скорее не объект, а форма доступа к данным, просто в ООП всё называется объектами. Информацию об иерархии и отношениях между объектами сцены лучше хранить отдельно от самих объектов сцены. А сами объекты сцены должны содержать только то что требуется для рендера. Таким образом сцена делает надстройку (информационную и функциональную) над объектами сцены для возможности работать с ними с точки зрения взаимодействия пользователя со сценой. Но во время рендера эти надстройки убираются и остается сырой материал для максимально быстрого его вывода на экран. Так что формально сортировщик наверное должен находится где-то посередине и не относиться ни к сцене ни к рендеру. Потому что вот например фрустум или октри относятся к сцене, а сортировщик больше основывается на машинном представлении данных и относится скорее к менеджеру памяти или ресурсов.
|
Я думаю не стоит мне разъяснять, что такое ООП. Я на данный момент ведущий-инженер программист одной крупной компании в сфере ритейла.
С опытом становится понятно, что ООП - это лишь средство для достижения цели. И не нужно городить ООП ради ООП. Тут нужно понимать, если твой код после внедрения фичи становится сложно читаемым и неразборчивым, выдели отдельный объект. Иначе нехер этого делать. Тоже касается и дублирования кода. Любую проблему можно решить миллиардами ООП способами. Тебе никто не мешает осуществить Mix-in, или например предположить, что все дочерние сцены будут иметь одинаковый метод сортировки, тогда сортировку можно реализовать в базовом классе. Нужно понимать, что ты хочешь, и просто делать это, ооп получится само с собой, когда ты начнешь понимать основные принципы.