Soo*_*ner 5 c++ architecture performance data-driven
我正在尝试用C++创建一个高效的"实体系统",我在互联网上阅读了很多博客/文章/文档以获取大量信息,但我又遇到了一些问题.
我发现了两个有趣的主题:
对我来说,这两个系统看起来非常相似.
所以,我发现了Adam Smith的这个例子:https://stackoverflow.com/a/2021868
我需要一个像这样灵活的系统:
// Abstract class
class Component
{
// data here
}
// exemple
class Car : public Component
{
// Data here
}
// Entity with components
class Entity
{
std::vector<Component*> components;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我的实体有以下组件:Car,Transform,Sprite, 我的组件数组是否会有数据驱动系统等线性数据?
现在,我有系统:
class System
{
virtual void init();
virtual void clear();
virtual void update();
std::unordered_map< const char*, Entity*> entities;
}
class RendererSystem : public System
{
// Methods's definition (init, clear, …).
void update()
{
for( entity, … )
{
Sprite* s = entity->getComponent('sprite');
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
所有这一点在我脑海中看起来都很模糊.
new(如果它是指针)。然后,一旦分配了它,只要您传递对该项目的引用,就不需要再次执行此操作