Я пишу небольшой игровой движок для XNA.Прямо сейчас у моего менеджера сущностей есть список всех сущностей, которые он может обновлять и отображать.Скажем, однако, что я хочу разделить этот список на «подсписки».Возможно, некоторые объекты не требуют рендеринга, и поэтому мы хотели бы отделить объекты рендеринга от объектов без рендеринга, сохраняя при этом другой список, который показывает ВСЕ объекты для обновления.Так вот 3 списка.
Есть ли способ легко поддерживать согласованность между списками?Чтобы гарантировать, что одни и те же объекты упоминаются в обоих списках?(Не копия объекта?).В C ++ у нас был бы просто массив указателей на сущности, которые рендерится, и еще один для сущностей, которые не отображают.
Проблема не в том, чтобы поместить сущности в эти списки, а в том, чтобы избавиться от них.Чтобы уничтожить сущность, я просто устанавливаю bool «dispose» в значение true в этой сущности.Менеджер сущностей при циклическом просмотре всех сущностей удаляет ссылку на эту сущность, если для параметра dispose установлено значение true, а уборщик мусора уничтожает сущность, поскольку на нее больше не осталось ссылок.Должен ли я вручную просматривать все списки, имеющие отношение к сущностям, и удалять эту сущность из этих списков, чтобы все было согласованно?
еще один пример этой «проблемы» - с квад-деревьями.У меня есть 2D-игра, и я генерирую дерево квадов для всех сущностей.Сущности, которые лежат между 2 точками сетки, находятся в 2 ветвях дерева.как бы я удалить его с дерева?искать во всем дереве ссылки на эту сущность?кажется немного бессмысленным иметь четырехугольное дерево, если это так ..!