From 98e08b3fcd9dd39b89dca5be564890d7da1ee43c Mon Sep 17 00:00:00 2001 From: gered Date: Tue, 15 Apr 2014 13:45:35 -0400 Subject: [PATCH] add TileMesh libgdx asset loader --- .../json/tilemesh/TileMeshLoader.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/TileMeshLoader.java diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/TileMeshLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/TileMeshLoader.java new file mode 100644 index 0000000..59a98ea --- /dev/null +++ b/src/main/java/ca/blarg/gdx/tilemap3d/json/tilemesh/TileMeshLoader.java @@ -0,0 +1,61 @@ +package ca.blarg.gdx.tilemap3d.json.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; +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.graphics.g3d.Model; +import com.badlogic.gdx.utils.Array; + +@SuppressWarnings("unchecked") +public class TileMeshLoader extends AsynchronousAssetLoader { + public static class TileMeshParameter extends AssetLoaderParameters { + } + + public TileMeshLoader(FileHandleResolver resolver) { + super(resolver); + } + + JsonTileMesh definition; + TileMesh mesh; + + @Override + public Array getDependencies(String fileName, FileHandle file, TileMeshParameter parameter) { + definition = TileMeshJsonLoader.load(file); + Array 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)); + + if (!definition.cube) { + if (definition.model != null) + deps.add(new AssetDescriptor(definition.model, Model.class)); + else if (definition.models != null && definition.models.size() > 0) { + for (int i = 0; i < definition.models.size(); ++i) + deps.add(new AssetDescriptor(definition.models.get(i).submodel, Model.class)); + } + + if (definition.collisionModel != null) + deps.add(new AssetDescriptor(definition.collisionModel, Model.class)); + } + + return deps; + } + + @Override + public void loadAsync(AssetManager manager, String fileName, FileHandle file, TileMeshParameter parameter) { + mesh = TileMeshJsonLoader.create(definition, manager); + } + + @Override + public TileMesh loadSync(AssetManager manager, String fileName, FileHandle file, TileMeshParameter parameter) { + return mesh; + } +}