use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class WorldSerializerImpl method serializeWorld.
@Override
public EntityData.GlobalStore serializeWorld(boolean verbose, List<Class<? extends Component>> filterComponents) {
if (filterComponents == null) {
return serializeWorld(true);
}
final EntityData.GlobalStore.Builder world = EntityData.GlobalStore.newBuilder();
if (!verbose) {
writeComponentTypeTable(world);
}
for (Prefab prefab : prefabManager.listPrefabs()) {
if (prefab.hasAnyComponents(filterComponents)) {
world.addPrefab(prefabSerializer.serialize(prefab));
}
}
for (EntityRef entity : entityManager.getAllEntities()) {
if ((verbose || entity.isPersistent()) && entity.hasAnyComponents(filterComponents)) {
world.addEntity(entitySerializer.serialize(entity));
}
}
writeIdInfo(world);
entitySerializer.removeComponentIdMapping();
prefabSerializer.removeComponentIdMapping();
return world.build();
}
use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class BlockPrefabManager method updateBlock.
private void updateBlock(Block block) {
Optional<Prefab> prefab = block.getPrefab();
boolean keepActive = block.isKeepActive();
boolean requiresLifecycleEvents = false;
if (prefab.isPresent()) {
for (Component comp : prefab.get().iterateComponents()) {
ComponentMetadata<?> metadata = entityManager.getComponentLibrary().getMetadata(comp.getClass());
if (metadata.isForceBlockActive()) {
keepActive = true;
break;
}
if (metadata.isBlockLifecycleEventsRequired()) {
requiresLifecycleEvents = true;
}
}
}
block.setKeepActive(keepActive);
block.setLifecycleEventsRequired(requiresLifecycleEvents && !keepActive);
}
use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class LocalChunkProvider method generateQueuedEntities.
private void generateQueuedEntities(EntityStore store) {
Prefab prefab = store.getPrefab();
EntityRef entity;
if (prefab != null) {
entity = entityManager.create(prefab);
} else {
entity = entityManager.create();
}
for (Component component : store.iterateComponents()) {
entity.addComponent(component);
}
}
Aggregations