Search in sources :

Example 26 with Name

use of org.terasology.naming.Name in project Terasology by MovingBlocks.

the class Atlas method doReload.

@Override
protected void doReload(AtlasData data) {
    subtextures.clear();
    for (Map.Entry<Name, SubtextureData> entry : data.getSubtextures().entrySet()) {
        ResourceUrn subtextureUrn = new ResourceUrn(getUrn().getModuleName(), getUrn().getResourceName(), entry.getKey());
        subtextures.put(subtextureUrn, entry.getValue());
    }
}
Also used : SubtextureData(org.terasology.rendering.assets.texture.subtexture.SubtextureData) ResourceUrn(org.terasology.assets.ResourceUrn) Map(java.util.Map) Name(org.terasology.naming.Name)

Example 27 with Name

use of org.terasology.naming.Name in project Terasology by MovingBlocks.

the class AtlasFormat method process.

private void process(GridDefinition grid, Texture texture, Vector2i size, Map<Name, SubtextureData> out) {
    if (grid.getTileSize() == null) {
        logger.error("Bad grid definition - missing mandatory property tileSize");
        return;
    }
    if (grid.getGridDimensions() == null) {
        logger.error("Bad grid definition - missing mandatory property gridDimensions");
        return;
    }
    Vector2f offset = new Vector2f(0, 0);
    if (grid.getGridOffset() != null) {
        offset.set((float) grid.getGridOffset().x / size.x, (float) grid.getGridOffset().y / size.y);
    }
    Vector2f tileSize = new Vector2f((float) grid.getTileSize().x / size.x, (float) grid.getTileSize().y / size.y);
    int tileX = 0;
    int tileY = 0;
    for (String name : grid.getTileNames()) {
        if (!name.isEmpty()) {
            Vector2f pos = new Vector2f(offset);
            pos.x += tileX * tileSize.x;
            pos.y += tileY * tileSize.y;
            Rect2f tileLocation = Rect2f.createFromMinAndSize(offset.x + tileX * tileSize.x, offset.y + tileY * tileSize.y, tileSize.x, tileSize.y);
            out.put(new Name(name), new SubtextureData(texture, tileLocation));
        }
        tileX++;
        if (tileX == grid.getGridDimensions().x) {
            tileX = 0;
            tileY++;
        }
    }
}
Also used : Rect2f(org.terasology.math.geom.Rect2f) Vector2f(org.terasology.math.geom.Vector2f) SubtextureData(org.terasology.rendering.assets.texture.subtexture.SubtextureData) Name(org.terasology.naming.Name)

Example 28 with Name

use of org.terasology.naming.Name in project Terasology by MovingBlocks.

the class AtlasFormat method process.

private void process(FreeformDefinition freeform, Texture texture, Vector2i size, Map<Name, SubtextureData> out) {
    if (freeform.getName() == null || freeform.getName().isEmpty()) {
        logger.error("Bad subimage definition - missing mandatory property name");
        return;
    }
    if (freeform.getMin() == null) {
        logger.error("Bad subimage definition '{}' - missing mandatory property min", freeform.getName());
        return;
    }
    if (freeform.getSize() == null && freeform.getMax() == null) {
        logger.error("Bad subimage definition '{}' - requires one of max or size", freeform.getName());
        return;
    }
    Vector2f min = new Vector2f((float) freeform.getMin().x / size.x, (float) freeform.getMin().y / size.y);
    if (freeform.getSize() != null) {
        Vector2f itemSize = new Vector2f((float) freeform.getSize().x / size.x, (float) freeform.getSize().y / size.y);
        out.put(new Name(freeform.getName()), new SubtextureData(texture, Rect2f.createFromMinAndSize(min, itemSize)));
    } else if (freeform.getMax() != null) {
        Vector2f max = new Vector2f((float) freeform.getMax().x / size.x, (float) freeform.getMax().y / size.y);
        out.put(new Name(freeform.getName()), new SubtextureData(texture, Rect2f.createFromMinAndMax(min, max)));
    }
}
Also used : Vector2f(org.terasology.math.geom.Vector2f) SubtextureData(org.terasology.rendering.assets.texture.subtexture.SubtextureData) Name(org.terasology.naming.Name)

Example 29 with Name

use of org.terasology.naming.Name in project Terasology by MovingBlocks.

the class FontFormat method parsePage.

private void parsePage(FontDataBuilder builder, Name moduleName, String pageInfo) throws IOException {
    Matcher pageMatcher = pagePattern.matcher(pageInfo);
    if (pageMatcher.matches()) {
        int pageId = Integer.parseInt(pageMatcher.group(1));
        Name textureName = new Name(pageMatcher.group(2).substring(0, pageMatcher.group(2).lastIndexOf('.')));
        Optional<Material> material = assetManager.getAsset(new ResourceUrn(moduleName, new Name("font"), textureName), Material.class);
        if (!material.isPresent()) {
            throw new IOException("Failed to load font - unable to resolve font page '" + textureName + "'");
        } else {
            builder.addPage(pageId, assetManager.getAsset(new ResourceUrn(moduleName, textureName), Texture.class).get(), material.get());
        }
    } else {
        throw new IOException("Failed to load font - invalid page line '" + pageInfo + "'");
    }
}
Also used : Matcher(java.util.regex.Matcher) Material(org.terasology.rendering.assets.material.Material) IOException(java.io.IOException) ResourceUrn(org.terasology.assets.ResourceUrn) Name(org.terasology.naming.Name)

Example 30 with Name

use of org.terasology.naming.Name in project Terasology by MovingBlocks.

the class WorldAtlasImpl method createTextureAtlas.

private void createTextureAtlas(final Texture texture) {
    final Map<Name, Map<Name, SubtextureData>> textureAtlases = Maps.newHashMap();
    final Vector2f texSize = new Vector2f(getRelativeTileSize(), getRelativeTileSize());
    tileIndexes.forEachEntry((tileUri, index) -> {
        Vector2f coords = getTexCoords(index);
        SubtextureData subtextureData = new SubtextureData(texture, Rect2f.createFromMinAndSize(coords, texSize));
        Map<Name, SubtextureData> textureAtlas = textureAtlases.get(tileUri.getModuleName());
        if (textureAtlas == null) {
            textureAtlas = Maps.newHashMap();
            textureAtlases.put(tileUri.getModuleName(), textureAtlas);
        }
        textureAtlas.put(tileUri.getResourceName(), subtextureData);
        return true;
    });
    for (Map.Entry<Name, Map<Name, SubtextureData>> atlas : textureAtlases.entrySet()) {
        AtlasData data = new AtlasData(atlas.getValue());
        Assets.generateAsset(new ResourceUrn(atlas.getKey(), new Name("terrain")), data, Atlas.class);
    }
}
Also used : AtlasData(org.terasology.rendering.assets.atlas.AtlasData) Vector2f(org.terasology.math.geom.Vector2f) SubtextureData(org.terasology.rendering.assets.texture.subtexture.SubtextureData) ResourceUrn(org.terasology.assets.ResourceUrn) TObjectIntMap(gnu.trove.map.TObjectIntMap) Map(java.util.Map) TObjectIntHashMap(gnu.trove.map.hash.TObjectIntHashMap) Name(org.terasology.naming.Name)

Aggregations

Name (org.terasology.naming.Name)43 Module (org.terasology.module.Module)14 ModuleManager (org.terasology.engine.module.ModuleManager)8 SimpleUri (org.terasology.engine.SimpleUri)7 DependencyResolver (org.terasology.module.DependencyResolver)7 ModuleEnvironment (org.terasology.module.ModuleEnvironment)7 ResourceUrn (org.terasology.assets.ResourceUrn)6 ResolutionResult (org.terasology.module.ResolutionResult)6 IOException (java.io.IOException)4 InputStreamReader (java.io.InputStreamReader)4 ModuleMetadata (org.terasology.module.ModuleMetadata)4 FromModule (org.terasology.module.predicates.FromModule)4 SubtextureData (org.terasology.rendering.assets.texture.subtexture.SubtextureData)4 Reader (java.io.Reader)3 Vector2f (org.terasology.math.geom.Vector2f)3 URL (java.net.URL)2 Path (java.nio.file.Path)2 Map (java.util.Map)2 Test (org.junit.Test)2 Config (org.terasology.config.Config)2