From e38c6f343482463c3a323e1c35c3fb714653a147 Mon Sep 17 00:00:00 2001 From: gered Date: Tue, 15 Apr 2014 17:33:33 -0400 Subject: [PATCH] remove MaterialTileMapping and update references. it is now part of gdx-toolbox itself (always in a public field within a TextureAtlas) --- .../assets/tilemesh/JsonMaterialMapping.java | 17 ----- .../assets/tilemesh/JsonTileMesh.java | 1 - .../tilemesh/JsonTileMeshCollection.java | 1 - .../MaterialTileMappingJsonLoader.java | 35 ---------- .../tilemesh/MaterialTileMappingLoader.java | 42 ------------ .../tilemesh/TileMeshCollectionLoader.java | 3 - .../assets/tilemesh/TileMeshJsonLoader.java | 18 +++-- .../assets/tilemesh/TileMeshLoader.java | 3 - .../tilemap3d/tilemesh/BaseModelTileMesh.java | 7 +- .../tilemesh/MaterialTileMapping.java | 68 ------------------- .../gdx/tilemap3d/tilemesh/ModelTileMesh.java | 5 +- .../tilemesh/MultiModelTileMesh.java | 5 +- .../tilemesh/TileMeshCollection.java | 1 + 13 files changed, 19 insertions(+), 187 deletions(-) delete mode 100644 src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonMaterialMapping.java delete mode 100644 src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingJsonLoader.java delete mode 100644 src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingLoader.java delete mode 100644 src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MaterialTileMapping.java diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonMaterialMapping.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonMaterialMapping.java deleted file mode 100644 index cc97362..0000000 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonMaterialMapping.java +++ /dev/null @@ -1,17 +0,0 @@ -package ca.blarg.gdx.tilemap3d.assets.tilemesh; - -import java.util.ArrayList; - -public class JsonMaterialMapping { - public class Material { - public String name; - public int tile; - public float minU; - public float maxU; - public float minV; - public float maxV; - } - - public String textureAtlas; - public ArrayList materials; -} diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMesh.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMesh.java index 6ee5ff1..5ac77fc 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMesh.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMesh.java @@ -22,7 +22,6 @@ public class JsonTileMesh { public Vector3 positionOffset; } - public String materials; public String textureAtlas; public boolean cube; public CubeTextures textures; diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMeshCollection.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMeshCollection.java index 36d6628..ecb7f11 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMeshCollection.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/JsonTileMeshCollection.java @@ -4,6 +4,5 @@ import java.util.ArrayList; public class JsonTileMeshCollection { public String textureAtlas; - public String materials; public ArrayList tiles; } diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingJsonLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingJsonLoader.java deleted file mode 100644 index 7454675..0000000 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingJsonLoader.java +++ /dev/null @@ -1,35 +0,0 @@ -package ca.blarg.gdx.tilemap3d.assets.tilemesh; - -import ca.blarg.gdx.assets.AssetLoadingException; -import ca.blarg.gdx.graphics.atlas.TextureAtlas; -import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping; -import com.badlogic.gdx.assets.AssetManager; -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.utils.Json; - -class MaterialTileMappingJsonLoader { - public static JsonMaterialMapping load(FileHandle file) { - Json json = new Json(); - return json.fromJson(JsonMaterialMapping.class, file); - } - - public static MaterialTileMapping create(FileHandle file, JsonMaterialMapping definition, AssetManager assetManager) { - if (definition.materials == null || definition.materials.size() == 0) - throw new AssetLoadingException(file.path(), "No material mappings defined."); - if (definition.textureAtlas == null) - throw new AssetLoadingException(file.path(), "No texture atlas specified."); - - TextureAtlas atlas = assetManager.get(definition.textureAtlas, TextureAtlas.class); - - MaterialTileMapping materialMapping = new MaterialTileMapping(); - for (int i = 0; i < definition.materials.size(); ++i) { - JsonMaterialMapping.Material mapping = definition.materials.get(i); - materialMapping.add( - mapping.name, atlas.get(mapping.tile), - mapping.minU, mapping.maxU, mapping.minV, mapping.maxV - ); - } - - return materialMapping; - } -} diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingLoader.java deleted file mode 100644 index eba2666..0000000 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/MaterialTileMappingLoader.java +++ /dev/null @@ -1,42 +0,0 @@ -package ca.blarg.gdx.tilemap3d.assets.tilemesh; - -import ca.blarg.gdx.graphics.atlas.TextureAtlas; -import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping; -import com.badlogic.gdx.assets.AssetDescriptor; -import com.badlogic.gdx.assets.AssetLoaderParameters; -import com.badlogic.gdx.assets.AssetManager; -import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader; -import com.badlogic.gdx.assets.loaders.FileHandleResolver; -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.utils.Array; - -@SuppressWarnings("unchecked") -public class MaterialTileMappingLoader extends AsynchronousAssetLoader { - public static class MaterialTileMappingParameters extends AssetLoaderParameters { - } - - public MaterialTileMappingLoader(FileHandleResolver resolver) { - super(resolver); - } - - JsonMaterialMapping definition; - MaterialTileMapping mapping; - - @Override - public Array getDependencies(String fileName, FileHandle file, MaterialTileMappingParameters parameter) { - definition = MaterialTileMappingJsonLoader.load(file); - Array deps = new Array(); - deps.add(new AssetDescriptor(definition.textureAtlas, TextureAtlas.class)); - return deps; - } - - @Override - public void loadAsync(AssetManager manager, String fileName, FileHandle file, MaterialTileMappingParameters parameter) { - mapping = MaterialTileMappingJsonLoader.create(file, definition, manager); - } - - @Override - public MaterialTileMapping loadSync(AssetManager manager, String fileName, FileHandle file, MaterialTileMappingParameters parameter) { - return mapping; - } -} diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionLoader.java index 9a2932d..98aa23e 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionLoader.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionLoader.java @@ -1,7 +1,6 @@ package ca.blarg.gdx.tilemap3d.assets.tilemesh; import ca.blarg.gdx.graphics.atlas.TextureAtlas; -import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping; import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh; import ca.blarg.gdx.tilemap3d.tilemesh.TileMeshCollection; import com.badlogic.gdx.assets.AssetDescriptor; @@ -29,8 +28,6 @@ public class TileMeshCollectionLoader extends AsynchronousAssetLoader deps = new Array(); - if (definition.materials != null) - deps.add(new AssetDescriptor(definition.materials, MaterialTileMapping.class)); if (definition.textureAtlas != null) deps.add(new AssetDescriptor(definition.textureAtlas, TextureAtlas.class)); diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshJsonLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshJsonLoader.java index 81ec2f0..4616afb 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshJsonLoader.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshJsonLoader.java @@ -20,20 +20,18 @@ class TileMeshJsonLoader { public static TileMesh create(JsonTileMesh definition, AssetManager assetManager) { if (!definition.cube && definition.model == null && definition.models == null) throw new RuntimeException("One of cube, model or models must be specified for each tile."); - if (definition.materials != null && definition.textureAtlas != null) - throw new RuntimeException("materials and textureAtlas cannot both be set."); - if (definition.model != null && definition.materials == null) - throw new RuntimeException("Missing materials section but using models to define tiles. When using models, a materials section to map model textures to texture atlas regions is required."); + if (definition.textureAtlas == null) + throw new RuntimeException("A texture atlas must be specified."); if (definition.collisionModel != null && definition.collisionShape != null) throw new RuntimeException("collisionModel and collisionShape cannot both be set."); - MaterialTileMapping materials = null; TextureAtlas atlas = null; - if (definition.materials != null) - materials = assetManager.get(definition.materials, MaterialTileMapping.class); - else if (definition.textureAtlas != null) + if (definition.textureAtlas != null) atlas = assetManager.get(definition.textureAtlas, TextureAtlas.class); + if (!atlas.materialTileMapping.hasMappings() && !definition.cube) + throw new RuntimeException("No material mappings defined for non-cube tile mesh. Material mappings needed to map from source model(s) textures to texture atlas tiles."); + boolean isCube = definition.cube; TextureRegion texture = null; TextureRegion topTexture = null; @@ -142,7 +140,7 @@ class TileMeshJsonLoader { throw new RuntimeException("collisionShape not recognized."); } - return new ModelTileMesh(model, collisionModel, materials, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset); + return new ModelTileMesh(model, collisionModel, atlas.materialTileMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset); } else if (definition.models != null) { int numModels = definition.models.size(); @@ -176,7 +174,7 @@ class TileMeshJsonLoader { throw new RuntimeException("collisionShape not recognized."); } - return new MultiModelTileMesh(submodels, colors, scaleToSizes, positionOffsets, collisionModel, materials, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset); + return new MultiModelTileMesh(submodels, colors, scaleToSizes, positionOffsets, collisionModel, atlas.materialTileMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset); } else throw new RuntimeException("Unrecognized tile mesh type."); diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshLoader.java index a1ec552..5a3d059 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshLoader.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshLoader.java @@ -1,7 +1,6 @@ package ca.blarg.gdx.tilemap3d.assets.tilemesh; import ca.blarg.gdx.graphics.atlas.TextureAtlas; -import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping; import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh; import com.badlogic.gdx.assets.AssetDescriptor; import com.badlogic.gdx.assets.AssetLoaderParameters; @@ -29,8 +28,6 @@ public class TileMeshLoader extends AsynchronousAssetLoader deps = new Array(); - if (definition.materials != null) - deps.add(new AssetDescriptor(definition.materials, MaterialTileMapping.class)); if (definition.textureAtlas != null) deps.add(new AssetDescriptor(definition.textureAtlas, TextureAtlas.class)); diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/BaseModelTileMesh.java b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/BaseModelTileMesh.java index bf04697..71fc62c 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/BaseModelTileMesh.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/BaseModelTileMesh.java @@ -1,5 +1,9 @@ package ca.blarg.gdx.tilemap3d.tilemesh; +import ca.blarg.gdx.graphics.Vertices; +import ca.blarg.gdx.graphics.atlas.MaterialTileMapping; +import ca.blarg.gdx.graphics.atlas.TextureAtlas; +import ca.blarg.gdx.math.MathHelpers; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.VertexAttributes; import com.badlogic.gdx.graphics.g3d.Model; @@ -11,9 +15,6 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.collision.BoundingBox; import com.badlogic.gdx.utils.Array; -import ca.blarg.gdx.graphics.Vertices; -import ca.blarg.gdx.graphics.atlas.TextureAtlas; -import ca.blarg.gdx.math.MathHelpers; import java.nio.FloatBuffer; import java.nio.ShortBuffer; diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MaterialTileMapping.java b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MaterialTileMapping.java deleted file mode 100644 index 21d4140..0000000 --- a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MaterialTileMapping.java +++ /dev/null @@ -1,68 +0,0 @@ -package ca.blarg.gdx.tilemap3d.tilemesh; - -import com.badlogic.gdx.graphics.g2d.TextureRegion; -import com.badlogic.gdx.math.Vector2; -import ca.blarg.gdx.graphics.atlas.TextureAtlas; - -import java.util.HashMap; -import java.util.Map; - -public class MaterialTileMapping { - public class TileTexture { - public TextureRegion region; - public float materialMinU = 0.0f; - public float materialMaxU = 1.0f; - public float materialMinV = 0.0f; - public float materialMaxV = 1.0f; - } - - private Map mappings; - - public MaterialTileMapping() { - mappings = new HashMap(); - } - - public MaterialTileMapping add(String materialName, TextureRegion region) { - TileTexture tileTexture = new TileTexture(); - tileTexture.region = region; - mappings.put(materialName, tileTexture); - return this; - } - - public MaterialTileMapping add(String materialName, TextureRegion region, float materialMinU, float materialMaxU, float materialMinV, float materialMaxV) { - TileTexture tileTexture = new TileTexture(); - tileTexture.region = region; - tileTexture.materialMinU = materialMinU; - tileTexture.materialMaxU = materialMaxU; - tileTexture.materialMinV = materialMinV; - tileTexture.materialMaxV = materialMaxV; - mappings.put(materialName, tileTexture); - return this; - } - - public TileTexture get(String materialName) { - return mappings.get(materialName); - } - - public void scaleUV(String materialName, Vector2 srcTexCoord, Vector2 out) { - TileTexture tileTexture = mappings.get(materialName); - if (tileTexture == null) - throw new IllegalArgumentException("No matching material."); - - out.x = TextureAtlas.scaleTexCoordU(srcTexCoord.x, tileTexture.materialMinU, tileTexture.materialMaxU, tileTexture.region); - out.y = TextureAtlas.scaleTexCoordV(srcTexCoord.y, tileTexture.materialMinV, tileTexture.materialMaxV, tileTexture.region); - } - - public void scaleUV(String materialName, float srcU, float srcV, Vector2 out) { - TileTexture tileTexture = mappings.get(materialName); - if (tileTexture == null) - throw new IllegalArgumentException("No matching material."); - - out.x = TextureAtlas.scaleTexCoordU(srcU, tileTexture.materialMinU, tileTexture.materialMaxU, tileTexture.region); - out.y = TextureAtlas.scaleTexCoordV(srcV, tileTexture.materialMinV, tileTexture.materialMaxV, tileTexture.region); - } - - public void clear() { - mappings.clear(); - } -} diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/ModelTileMesh.java b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/ModelTileMesh.java index ca860dd..7b13e61 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/ModelTileMesh.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/ModelTileMesh.java @@ -1,13 +1,14 @@ package ca.blarg.gdx.tilemap3d.tilemesh; +import ca.blarg.gdx.graphics.Vertices; +import ca.blarg.gdx.graphics.atlas.MaterialTileMapping; +import ca.blarg.gdx.math.MathHelpers; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.VertexAttribute; import com.badlogic.gdx.graphics.g3d.Model; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.collision.BoundingBox; import com.badlogic.gdx.utils.Array; -import ca.blarg.gdx.graphics.Vertices; -import ca.blarg.gdx.math.MathHelpers; public class ModelTileMesh extends BaseModelTileMesh { static final Vector3 tmpPosition = new Vector3(); diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MultiModelTileMesh.java b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MultiModelTileMesh.java index 49aa1b0..d34f21a 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MultiModelTileMesh.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/MultiModelTileMesh.java @@ -1,13 +1,14 @@ package ca.blarg.gdx.tilemap3d.tilemesh; +import ca.blarg.gdx.graphics.Vertices; +import ca.blarg.gdx.graphics.atlas.MaterialTileMapping; +import ca.blarg.gdx.math.MathHelpers; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.VertexAttribute; import com.badlogic.gdx.graphics.g3d.Model; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.collision.BoundingBox; import com.badlogic.gdx.utils.Array; -import ca.blarg.gdx.graphics.Vertices; -import ca.blarg.gdx.math.MathHelpers; public class MultiModelTileMesh extends BaseModelTileMesh { BoundingBox bounds; diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/TileMeshCollection.java b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/TileMeshCollection.java index 054c555..2ddf75a 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/TileMeshCollection.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/tilemesh/TileMeshCollection.java @@ -1,6 +1,7 @@ package ca.blarg.gdx.tilemap3d.tilemesh; import ca.blarg.gdx.Bitfield; +import ca.blarg.gdx.graphics.atlas.MaterialTileMapping; import ca.blarg.gdx.graphics.atlas.TextureAtlas; import ca.blarg.gdx.tilemap3d.Tile; import com.badlogic.gdx.graphics.Color;