Пожалуйста, потерпите меня в этом довольно длинном вопросе.
В настоящее время я создаю воксельный движок (ничего похожего на Minecraft, не волнуйтесь). Я хочу, чтобы двигатель был модульным. Например, я хочу, чтобы «движок» вокселей был отдельным компонентом для «рендерера».
Движок в настоящее время создает базу данных объектов вокселей, каждый из которых состоит из трехмерного массива. Однако средство рендеринга использует сетки, извлеченные из этих данных с использованием алгоритма марширующих кубов. Мне нужно хранить как данные вокселя, так и данные сетки для каждого объекта вокселя. Однако, поскольку оба компонента являются модульными, их нельзя хранить в одном месте.
Мое текущее решение состояло в том, чтобы создать вторичную структуру данных внутри рендера, которая пытается отразить движок Это делается путем дублирования объектов в структуре движка, давая каждому объекту указатель на объект, который они отражают. Однако это быстро становится сложным, поскольку изменения в исходной структуре данных должны обновляться зеркальной версией.
Как видите, проблема скорее теоретическая, чем техническая. Может ли кто-нибудь помочь мне предложить структуру ООП, которую может использовать моя программа, чтобы лучше решить эту проблему? Я открыт для любых предложений, какими бы радикальными они ни были.
Благодарю.
Задача ещё не решена.