2015-10-16 23 views
2

我想爲我的遊戲使用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。這會做現在。

回答