如何结合artemis-odb + Glenn Fiedler游戏循环
问题描述:
我想为我的游戏使用artemis(https://github.com/junkdog/artemis-odb)。如何结合artemis-odb + Glenn Fiedler游戏循环
最近我读到格伦费德勒的比赛中循环: http://gafferongames.com/game-physics/fix-your-timestep/
所以提到的游戏循环有两个部分,其中ARTEMIS world.process();会发生。整合部分和渲染部分。
任何想法,我可以用artemis完成这样的事情。
while(!quit) {
.....
while (accumulator >= dt) {
world.process("only EntitySystems of group1 or with Components X (INTEGRATE STUFF)");
....
}
....
world.process("only EntitySystems of group2 or with Components Y (RENDER STUFF)");
}
artemis支持这种gameloop吗?
它在我脑海中,现在唯一的办法是:
设置一个全局静态标志指示是否其集成或渲染进程,然后退出所有EntitySystem.process(Entity e)
方法时,错误标志设置。像这样:
@Override
protected void process(Entity e) {
if(GLOBAL.RENDER_TIME) {
return; // exit cause, this entity should only be processed when it is INTEGRATE TIME
}
}
这样做的问题在于,由于实体不处理任何东西,所以不需要对很多实体进行迭代。
我正在考虑拥有2 Worlds
,但我不认为我可以轻松地在Worlds
之间共享相同的Component实例,尤其是当它们是共用对象时。
任何想法如何结合artemis-odb + Glenn Fiedler游戏循环?
编辑: 只是想通了我可以使用setEnabled()
禁用和启用EntitySystems
。这会做现在。