C ++ OpenEcs组件动态

时间:2016-04-27 17:43:39

标签: c++ templates entityx

对于那些不熟悉的OpenEcs,它的工作方式与EntityX库非常相似。

我正在使用OpenEcs库,我需要做这样的事情来创建一个包含组件的实体:

entities.create_with<Velocity, Position>();

此方法中使用的模板是:

template<typename ...Components>

好吧,我想要做的是动态构建这个<Velocity, Position>,如下所示:

vector<size_t> components = {1, 2};
auto& componentList = // something

for (auto& component : components)
{
  switch (component)
  {
    case 1:
      componentList.add(Velocity);
      break;

    case 2:
      componentList.add(Position);
      break;

    default:
      break;
  }
}

entities.create_with<componentList>();

PS:我也可以单独做,例如

entity.add<Velocity>();

但是,为了提高性能,第一种方式更好,我怎样才能像第一种方式一样工作?

0 个答案:

没有答案