use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class ModuleConfigSystem method preBegin.
@Override
public void preBegin() {
for (Prefab prefab : prefabManager.listPrefabs(ModuleConfigComponent.class)) {
ModuleConfigComponent moduleConfig = prefab.getComponent(ModuleConfigComponent.class);
String moduleName = moduleConfig.moduleName;
Map<String, String> properties;
if (propertiesPerModule.containsKey(moduleName)) {
logger.error("Encountered more than one Module Config for module - " + moduleName + ", this is not recommended, as the property values visible are not going to be well defined.");
properties = propertiesPerModule.get(moduleName);
} else {
properties = new HashMap<>();
propertiesPerModule.put(moduleName, properties);
}
properties.putAll(moduleConfig.properties);
}
}
use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class MovementDebugCommands method restoreSpeed.
@Command(shortDescription = "Restore normal speed values", runOnServer = true, requiredPermission = PermissionManager.CHEAT_PERMISSION)
public String restoreSpeed(@Sender EntityRef client) {
ClientComponent clientComp = client.getComponent(ClientComponent.class);
Optional<Prefab> prefab = Assets.get(new ResourceUrn("engine:player"), Prefab.class);
CharacterMovementComponent moveDefault = prefab.get().getComponent(CharacterMovementComponent.class);
CharacterMovementComponent move = clientComp.character.getComponent(CharacterMovementComponent.class);
if (move != null && moveDefault != null) {
move.jumpSpeed = moveDefault.jumpSpeed;
move.speedMultiplier = moveDefault.speedMultiplier;
move.runFactor = moveDefault.runFactor;
move.stepHeight = moveDefault.stepHeight;
move.slopeFactor = moveDefault.slopeFactor;
move.distanceBetweenFootsteps = moveDefault.distanceBetweenFootsteps;
clientComp.character.saveComponent(move);
}
return "Normal speed values restored";
}
use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class GlobalStoreBuilder method build.
public EntityData.GlobalStore build(EngineEntityManager entityManager, Iterable<EntityRef> entities) {
EntityData.GlobalStore.Builder store = EntityData.GlobalStore.newBuilder();
Map<Class<? extends Component>, Integer> componentIdTable = Maps.newHashMap();
for (ComponentMetadata<?> componentMetadata : entityManager.getComponentLibrary().iterateComponentMetadata()) {
store.addComponentClass(componentMetadata.getId().toString());
componentIdTable.put(componentMetadata.getType(), componentIdTable.size());
}
prefabSerializer.setComponentIdMapping(componentIdTable);
/*
* The prefabs can't be obtained from entityManager.getPrefabManager().listPrefabs() as that might not
* be thread save.
*/
Set<Prefab> prefabsRequiredForEntityStorage = new HashSet<>();
for (EntityRef entityRef : entityManager.getAllEntities()) {
Prefab prefab = entityRef.getParentPrefab();
if (prefab != null) {
prefabsRequiredForEntityStorage.add(prefab);
}
}
for (Prefab prefab : prefabsRequiredForEntityStorage) {
store.addPrefab(prefabSerializer.serialize(prefab));
}
EntitySerializer entitySerializer = new EntitySerializer(entityManager);
entitySerializer.setComponentSerializeCheck(new PersistenceComponentSerializeCheck());
entitySerializer.setComponentIdMapping(componentIdTable);
for (EntityRef entity : entities) {
if (entity.isPersistent()) {
store.addEntity(entitySerializer.serialize(entity));
}
}
store.setNextEntityId(nextEntityId);
return store.build();
}
use of org.terasology.engine.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.
the class PrefabSerializer method deserializeCommonData.
private void deserializeCommonData(EntityData.Prefab prefabData, PrefabData result) {
result.setPersisted((prefabData.hasPersisted()) ? prefabData.getPersisted() : true);
result.setAlwaysRelevant(prefabData.hasAlwaysRelevant() ? prefabData.getAlwaysRelevant() : false);
if (prefabData.hasParentName()) {
Prefab parent = Assets.get(prefabData.getParentName(), Prefab.class).orElse(null);
result.setParent(parent);
}
}
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) {
final EntityData.GlobalStore.Builder world = EntityData.GlobalStore.newBuilder();
if (!verbose) {
writeComponentTypeTable(world);
}
for (Prefab prefab : prefabManager.listPrefabs()) {
world.addPrefab(prefabSerializer.serialize(prefab));
}
for (EntityRef entity : entityManager.getAllEntities()) {
if (verbose || entity.isPersistent()) {
world.addEntity(entitySerializer.serialize(entity));
}
}
writeIdInfo(world);
entitySerializer.removeComponentIdMapping();
prefabSerializer.removeComponentIdMapping();
return world.build();
}
Aggregations