如何在不同类之间共享容器?

时间:2016-07-07 09:16:07

标签: c++ amazon-ecs

为了更好地学习C ++,我编写了一个小游戏。虽然在项目变得太大之前,我想重组它。

事实上,我已经有十几个课程了,我觉得我是以错误的方式组织的。

例如,当我必须写这样的东西时:

(*((*(m_positionComponents))[(*it)])).posX = 0;

我认为我的课程结构存在问题。

我正在为我的游戏使用实体组件系统(ECS),并总结一下:

我有来自xxxComponentComponent的{​​{1}}个类,它们将所有组件存储在与不同组件一样多的映射中。然后我有一个ComponentManager,它存储所有实体及其拥有的组件(使用二进制掩码)和一个继承自EntityManager的{​​{1}}类,它们在每次更新时修改组件。例如,当调用xxxSystem的更新函数时,它将遍历所有同时拥有SystemMovementSystem的实体,并根据以下内容修改位置。速度(也可能改变速度)。

我的PositionComponent课程链接了所有内容。现在我的问题是我需要访问很多类中的一些数据。

例如,VelocityComponent包含对所有要更新它们的系统的引用,Application必须能够访问EntityManager中的组件存储以及实体和掩码的存储来自MovementSystemComponentManager需要位于EntityManager的实体和面具的向量...

因此所有的指针,虽然只有一个指针从ComponentManager访问位置组件,另一个指针是因为我通过指针将组件的实例存储在向量中。

然而,我不知道向每个班级发送对所有其他班级的实例的引用是否最佳,以便他们可以访问彼此的存储。

你们觉得怎么样?有没有更好的方法来组织这个ECS?

0 个答案:

没有答案