use of com.gemserk.commons.artemis.components.StoreComponent in project commons-gdx by gemserk.
the class AliveSystem method processEntities.
@Override
protected void processEntities() {
RandomAccessMap<Entity, EntityComponents> allTheEntityComponents = factory.entityComponents;
int entitiesSize = allTheEntityComponents.size();
for (int entityIndex = 0; entityIndex < entitiesSize; entityIndex++) {
EntityComponents entityComponents = allTheEntityComponents.get(entityIndex);
AliveComponent aliveComponent = entityComponents.aliveComponent;
float aliveTime = aliveComponent.getTime() - GlobalTime.getDelta();
aliveComponent.setTime(aliveTime);
if (aliveTime <= 0) {
Entity e = allTheEntityComponents.getKey(entityIndex);
StoreComponent storeComponent = StoreComponent.get(e);
if (storeComponent != null)
storeComponent.store.free(e);
else
e.delete();
}
}
}
use of com.gemserk.commons.artemis.components.StoreComponent in project commons-gdx by gemserk.
the class ContainerSystem method disabled.
@Override
protected void disabled(Entity e) {
ContainerComponent containerComponent = ContainerComponent.get(e);
for (int i = 0; i < containerComponent.getChildren().size(); i++) {
Entity child = containerComponent.getChildren().get(i);
// what about the stores?
StoreComponent storeComponent = StoreComponent.get(child);
if (storeComponent != null)
storeComponent.store.free(child);
else
child.delete();
}
}
use of com.gemserk.commons.artemis.components.StoreComponent in project commons-gdx by gemserk.
the class TemplateStoreFactory method createObject.
@Override
public Entity createObject() {
if (entityStore == null)
throw new RuntimeException("Can't set null EntityStore to the created entity");
Entity entity = null;
if (entityTemplate != null)
entity = entityFactory.instantiate(entityTemplate);
else
entity = entityFactory.instantiate(injector.getInstance(entityTemplateClass));
StoreComponent storeComponent = StoreComponent.get(entity);
if (storeComponent == null)
storeComponent = new StoreComponent(null);
storeComponent.store = entityStore;
entity.addComponent(storeComponent);
return entity;
}
use of com.gemserk.commons.artemis.components.StoreComponent in project commons-gdx by gemserk.
the class ContainerSystemTest method shouldNotProcessDisabledChildrenEntity.
@SuppressWarnings("unchecked")
@Test
public void shouldNotProcessDisabledChildrenEntity() {
World world = new World();
WorldWrapper worldWrapper = new WorldWrapper(world);
worldWrapper.addUpdateSystem(new ContainerSystem());
worldWrapper.addUpdateSystem(new OwnerSystem());
shouldBeDisabled = false;
worldWrapper.addUpdateSystem(new EntityProcessingSystem(StoreComponent.class) {
@Override
protected void process(Entity e) {
if (shouldBeDisabled)
fail("should not process children");
System.out.println("processing children");
shouldBeDisabled = true;
}
});
worldWrapper.init();
Entity e1 = world.createEntity();
e1.addComponent(new ContainerComponent());
Entity e2 = world.createEntity();
e2.addComponent(new OwnerComponent(e1));
e2.addComponent(new StoreComponent(new EntityStore(null) {
}));
worldWrapper.update(1);
assertTrue(e1.isEnabled());
assertTrue(e2.isEnabled());
e1.delete();
worldWrapper.update(1);
assertFalse(e1.isEnabled());
assertFalse(e2.isEnabled());
worldWrapper.update(1);
}
Aggregations