Я работаю над игровым движком, в основном использующим ECS (не чистый ECS), и столкнулся с проблемой.
Некоторым объектам потребуется компонент Bounds
(например, компонент, имеющий Rectangle
, который представляет положение, ширину и высоту). Как кнопки. Многим объектам также нужен компонент, который содержит позицию, но не обязательно ограничивает ее.
Как согласовать перекрытие?
1) Если у сущности есть и компонент Bounds
, и компонент позиции, будет две позиции. Не хорошо
2) У сущности есть только компонент Bounds
, который наследуется от компонента позиции. Ужасно, потому что я должен переопределить служебные методы, такие как translate
, из компонента position и заставить его обновлять позицию объекта bounds. Кроме того, тогда у сущности не будет компонента позиции, что странно.
3) Bounds
компонент просто содержит ширину и высоту. Мне это не нравится, потому что тогда я не могу использовать такие вещи, как класс Rectangle
для представления границ.
Есть идеи? Спасибо.