Сортировка объектов в изометрии

Рейтинг: 1Ответов: 0Опубликовано: 29.06.2023

Пишу редактор карт для игры Divine Divinity. Столкнулся с проблемой сортировки объектов при выводе их на экран. Об объектах имею следующую информацию: положение по X и Y, высоту и ширину, высоту объекта над полом, т.н. точки касания объекта (A, B, C, D, E). На данный момент сортирую объекты по следующей формуле: N = Y * Screen.Wigth + X; Результат можно увидеть на скрине. Проблема в том, что объекты могут быть довольно большие и формула выше с этим не справляется. Плюс ко всему объекты могут как угодно пересекаться. Пробовал отрисовывать объекты по очереди, выявляя те объекты, сзади которых нет других объектов. Получалось, что необходимо сравнить каждый отображаемый объект с другими, что сильно тормозит программу, особенно если точки касания объектов пересекаются. Тоже самое и с топологической сортировкой графа, когда объектов мало, все вроде работает, но если их много, все тормозит, плюс создаются циклы внутри графа, когда несколько объектов перекрывают друг друга. В самой игре все красиво и быстро, при том, что она аж 20 лет назад выпущена. Программированию только учусь, пишу на c# с использованием MonoGame. Буду рад любым подсказкам.введите сюда описание изображения

Ответы

Ответов пока нет.