对于那些不熟悉的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>();
但是,为了提高性能,第一种方式更好,我怎样才能像第一种方式一样工作?