Код: Выделить всё
// COMPONENTS
class Transform {
public:
Vector3 position;
Quaternion rotation;
};
class Rigidbody {
public:
Vector3 velocity;
};
class Collider {
public:
Vector3 offset;
Vector3 size;
};
// ARCHETYPES
class Archetype1 {
public:
Transform transform;
Rigidbody rigidbody;
};
class Archetype2 {
public:
Transform transform;
Collider collider;
};
class Archetype3 {
public:
Rigidbody rigidbody;
Collider collider;
};
// STORAGE
std::vector archetype1s;
std::vector archetype2s;
std::vector archetype3s;
Код: Выделить всё
template class Archetype {
public:
A a;
};
template class Archetype {
public:
A a;
B b;
};
template class Archetype {
public:
A a;
B b;
C c;
};
... and so on ...
В какой-то момент я пытался создать единый класс архетипа, который содержал бы сигнатуру для определения того, какие компоненты он содержит, и массив байтов, которые должны были представлять данные компонента. Хотя мне не удалось найти способ хранения данных в удобном для кэша виде.
Я понимаю, что для моей конкретной проблемы может не быть решения, и я могу просто придется скопировать-вставить потенциально сотню векторов разных архетипов. Или может быть гораздо лучшее решение, использующее совершенно другой подход, чем моя идея архетипа. В любом случае я открыт ко всему и ценю любую информацию!
Подробнее здесь: https://stackoverflow.com/questions/783 ... archetypes