add MaterialTileMappingJsonLoader
This commit is contained in:
parent
d37c67e4ba
commit
0260286f96
|
@ -0,0 +1,52 @@
|
||||||
|
package ca.blarg.gdx.tilemap3d.json.tilemesh;
|
||||||
|
|
||||||
|
import ca.blarg.gdx.graphics.atlas.TextureAtlas;
|
||||||
|
import ca.blarg.gdx.loaders.textureatlas.TextureAtlasJsonLoader;
|
||||||
|
import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping;
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.assets.AssetManager;
|
||||||
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
|
import com.badlogic.gdx.utils.Json;
|
||||||
|
|
||||||
|
public class MaterialTileMappingJsonLoader {
|
||||||
|
public static JsonMaterialMapping load(FileHandle file) {
|
||||||
|
Json json = new Json();
|
||||||
|
return json.fromJson(JsonMaterialMapping.class, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MaterialTileMapping create(JsonMaterialMapping definition) {
|
||||||
|
return create(definition, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MaterialTileMapping create(JsonMaterialMapping definition, AssetManager assetManager) {
|
||||||
|
if (definition.materials == null || definition.materials.size() == 0)
|
||||||
|
throw new RuntimeException("No material mappings defined.");
|
||||||
|
|
||||||
|
TextureAtlas atlas;
|
||||||
|
if (assetManager != null)
|
||||||
|
atlas = assetManager.get(definition.textureAtlas, TextureAtlas.class);
|
||||||
|
else
|
||||||
|
atlas = TextureAtlasJsonLoader.loadAndCreate(Gdx.files.internal(definition.textureAtlas));
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MaterialTileMapping loadAndCreate(FileHandle file) {
|
||||||
|
JsonMaterialMapping definition = load(file);
|
||||||
|
return create(definition);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MaterialTileMapping loadAndCreate(FileHandle file, AssetManager assetManager) {
|
||||||
|
JsonMaterialMapping definition = load(file);
|
||||||
|
return create(definition, assetManager);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue