diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/MaterialTileMappingLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/MaterialTileMappingLoader.java new file mode 100644 index 0000000..6ca0de2 --- /dev/null +++ b/src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/MaterialTileMappingLoader.java @@ -0,0 +1,42 @@ +package ca.blarg.gdx.tilemap3d.json.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 MaterialTileMappingParameter extends AssetLoaderParameters { + } + + public MaterialTileMappingLoader(FileHandleResolver resolver) { + super(resolver); + } + + JsonMaterialMapping definition; + MaterialTileMapping mapping; + + @Override + public Array getDependencies(String fileName, FileHandle file, MaterialTileMappingParameter 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, MaterialTileMappingParameter parameter) { + mapping = MaterialTileMappingJsonLoader.create(definition, manager); + } + + @Override + public MaterialTileMapping loadSync(AssetManager manager, String fileName, FileHandle file, MaterialTileMappingParameter parameter) { + return mapping; + } +}