@Override public void deserializeWorld(EntityData.World world) { entityManager.setNextId(world.getNextEntityId()); for (Integer deadId : world.getFreedEntityIdList()) { entityManager.getFreedIds().add(deadId); } for (EntityData.Prefab prefabData : world.getPrefabList()) { if (!prefabManager.exists(prefabData.getName())) { deserializePrefab(prefabData); } } for (int index = 0; index < world.getComponentClassCount(); ++index) { ComponentMetadata componentMetadata = componentLibrary.getMetadata(world.getComponentClass(index)); if (componentMetadata != null) { componentIdTable.put(index, componentMetadata.getType()); } } for (EntityData.Entity entityData : world.getEntityList()) { deserializeEntity(entityData); } }
@Override public EntityData.World serializeWorld() { final EntityData.World.Builder world = EntityData.World.newBuilder(); writeIdInfo(world); if (isUsingLookupTables()) { writeComponentTypeTable(world); } for (Prefab prefab : prefabManager.listPrefabs()) { world.addPrefab(serializePrefab(prefab)); } for (EntityRef entity : entityManager.iteratorEntities()) { world.addEntity(serializeEntity(entity)); } return world.build(); }