Search in sources :

Example 36 with Prefab

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();
}
Also used : Prefab(org.terasology.engine.entitySystem.prefab.Prefab) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef)

Example 37 with Prefab

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);
}
Also used : Component(org.terasology.gestalt.entitysystem.component.Component) Prefab(org.terasology.engine.entitySystem.prefab.Prefab)

Example 38 with Prefab

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);
    }
}
Also used : Component(org.terasology.gestalt.entitysystem.component.Component) Prefab(org.terasology.engine.entitySystem.prefab.Prefab) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef)

Aggregations

Prefab (org.terasology.engine.entitySystem.prefab.Prefab)38 PojoPrefab (org.terasology.engine.entitySystem.prefab.internal.PojoPrefab)13 Test (org.junit.jupiter.api.Test)10 EntityRef (org.terasology.engine.entitySystem.entity.EntityRef)10 Component (org.terasology.gestalt.entitysystem.component.Component)9 ResourceUrn (org.terasology.gestalt.assets.ResourceUrn)8 PrefabData (org.terasology.engine.entitySystem.prefab.PrefabData)6 StringComponent (org.terasology.unittest.stubs.StringComponent)6 BeforeEach (org.junit.jupiter.api.BeforeEach)4 EntityBuilder (org.terasology.engine.entitySystem.entity.EntityBuilder)4 ClientComponent (org.terasology.engine.network.ClientComponent)4 NetworkComponent (org.terasology.engine.network.NetworkComponent)4 NetworkSystem (org.terasology.engine.network.NetworkSystem)4 ModuleManager (org.terasology.engine.core.module.ModuleManager)3 EngineEntityManager (org.terasology.engine.entitySystem.entity.internal.EngineEntityManager)3 LocationComponent (org.terasology.engine.logic.location.LocationComponent)3 ArrayList (java.util.ArrayList)2 Optional (java.util.Optional)2 BeforeDeactivateComponent (org.terasology.engine.entitySystem.entity.lifecycleEvents.BeforeDeactivateComponent)2 OnActivatedComponent (org.terasology.engine.entitySystem.entity.lifecycleEvents.OnActivatedComponent)2