创建排序实体系统
一个简单的
EntitySystem
,按照comparator
指定的顺序处理给定系列的每个实体,并在每次更新EntitySystem
时为每个实体调用processEntity()
。这实际上只是一个便利类,因为渲染系统倾向于以排序的方式迭代实体列表。添加实体将导致实体列表被使用。如果你更改了排序标准,请拨打forceSort()
。有关详细信息,请参阅 SortedIteratingSystem
在下面的代码示例中,最好的用法是通过 zindex 按排序顺序呈现精灵。
public class SpriteComponent implements Component {
public TextureRegion region;
public int z = 0;
}
public class Mapper {
public static ComponentMapper<SpriteComponent> sprite = ComponentMapper.getFor(SpriteComponent.class);
}
public class RenderingSystem extends SortedIteratingSystem {
public RenderingSystem () {
super(Familly.all(SpriteComponent.class).get(), new ZComparator())
}
public void processEntity(Entity entity, float deltaTime) {
if(checkZIndexHasChangeValue()) {
forceSort();
}
}
private static class ZComparator implements Comparator<Entity> {
@Override
public int compare(Entity entityA, Entity entityB) {
return (int)Math.signum(Mapper.sprite.get(entityA).z - Mapper.sprite.get(entityB).z);
}
}
}