如何结合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。这会做现在。