Границы и положение в системе компонентов объекта - PullRequest
0 голосов
/ 20 октября 2019

Я работаю над игровым движком, в основном использующим ECS (не чистый ECS), и столкнулся с проблемой.

Некоторым объектам потребуется компонент Bounds (например, компонент, имеющий Rectangle, который представляет положение, ширину и высоту). Как кнопки. Многим объектам также нужен компонент, который содержит позицию, но не обязательно ограничивает ее.

Как согласовать перекрытие?

1) Если у сущности есть и компонент Bounds, и компонент позиции, будет две позиции. Не хорошо

2) У сущности есть только компонент Bounds, который наследуется от компонента позиции. Ужасно, потому что я должен переопределить служебные методы, такие как translate, из компонента position и заставить его обновлять позицию объекта bounds. Кроме того, тогда у сущности не будет компонента позиции, что странно.

3) Bounds компонент просто содержит ширину и высоту. Мне это не нравится, потому что тогда я не могу использовать такие вещи, как класс Rectangle для представления границ.

Есть идеи? Спасибо.

1 Ответ

1 голос
/ 20 октября 2019

Я бы пошел на 3 с требованием иметь компонент Transform, если у вас есть компонент Bound и выражать границы в локальной рамке.

Использование Rectangle с нижним левым краеми правые верхние углы по-прежнему имеют смысл, поскольку начало границ не всегда совпадает с происхождением компонента.

...