如何结合 artemis-odb + Glenn Fiedler 游戏循环
How to combine artemis-odb + Glenn Fiedler game loop
我想在我的游戏中使用 artemis (https://github.com/junkdog/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
之间轻松共享相同的组件实例,尤其是当它们是池对象时。
知道如何结合 artemis-odb + Glenn Fiedler 游戏循环吗?
编辑:
刚刚发现我可以使用 setEnabled()
来禁用和启用 EntitySystems
。现在就这样吧。
我想在我的游戏中使用 artemis (https://github.com/junkdog/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
之间轻松共享相同的组件实例,尤其是当它们是池对象时。
知道如何结合 artemis-odb + Glenn Fiedler 游戏循环吗?
编辑:
刚刚发现我可以使用 setEnabled()
来禁用和启用 EntitySystems
。现在就这样吧。