세계에서 모든 항목을 삭제하고 싶습니다. 엔티티에 태그 또는 그룹이 등록되어있는 경우 태그 또는 그룹도 제거하려고합니다. 그런 존재가 전혀 없었던 것처럼. World.delete
함수와 비슷하지만 모든 엔티티에서 루프해야합니다. 나는 길을 찾을 수 없다. 그리고 설계자가 세계를 조직에서 제거하기위한 기능을 준비하지 않았다고 믿을 수 없습니다. 내가 놓친 게 있니? 세계에서 모든 개체를 삭제 디폴트 방법이 없습니다Artemis - 세계에서 모든 항목을 삭제하는 방법
1
A
답변
2
은 - 일반적으로이 폐기와 세계를 재현하여 수행됩니다 -하지만 쉽게 사용자 정의 관리자 추가에 의해 달성 될 수있다 : 최근 버전에서는
public final class EntityTracker extends Manager {
private Bag<Entity> entities = new Bag<Entity>();
@Override
public void added(Entity e) {
entities.add(e);
}
@Override
public void deleted(Entity e) {
entities.remove(e);
}
public void deleteAllEntities() {
for (Entity e : entities)
e.deleteFromWorld();
}
}
을 아르테미스 - ODB는 AspectSubscriptionManager를 사용하는 것이 더 쉽습니다 :
IntBag entities = world.getAspectSubscriptionManager()
.get(Aspect.all())
.getEntities();
int[] ids = entities.getData();
for (int i = 0, s = entities.size(); s > i; i++) {
world.delete(ids[i]);
}
편집 :은 위의 코드는 artemis-odb 가정; 바닐라 아르테미스의 TagManager와 GroupManager가 삭제시 엔티티를 자동으로 제거하는지 여부는 확실하지 않습니다.