Поток libgdx удаляет всех потомков и добавляет новых на сцену - PullRequest
0 голосов
/ 06 марта 2020

У меня есть группа на моей стадии, которая имеет Map<Entity, EntityActor>. Каждый EntityActor является актером и дочерним актером группы. В группе также есть метод reset, который принимает новый entities, удаляет старые и добавляет новые с соответствующим им новым экземпляром EntityActor:

public final void reset(final Collection<Entity> entities) {
    this.entitesActors.clear(); //clears the map
    Gdx.app.postRunnable(() -> this.clearChildren()); //clears all the children of the group
    this.addEntities(entities); //add the new entities to the map and to the group
}

public final void addEntity(final Entity entity) {
    EntityActor entityActor = new EntityActor(entity); //create the corresponding EntityActor
    Gdx.app.postRunnable(() -> this.addActor(entityActor)); //adds the EntityActor to the group
    this.entitesActors.put(entity, entityActor); //add new elements to the map
}

public final void addEntities(final Collection<Entity> entities) {
    entities.stream().forEach(this::addEntity);
}

Метод reset вызывается потоком (НЕ основным потоком контекста OpenGL! Вот почему postRunnable)

Старые EntityActors успешно удалены, а новые успешно добавлены, их метод draw вызывается основным render метод НО я не вижу их на экране! Понятия не имею почему.

...