add support for local filenames to be specified in tile asset json files (that is, dependencies will be assumed to be in the same directory)

This commit is contained in:
Gered 2014-04-16 13:36:46 -04:00
parent 432923f82a
commit 7464200644
3 changed files with 33 additions and 3 deletions

View file

@ -2,6 +2,7 @@ package ca.blarg.gdx.tilemap3d.assets.tilemap;
import ca.blarg.gdx.Strings; import ca.blarg.gdx.Strings;
import ca.blarg.gdx.assets.AssetLoadingException; import ca.blarg.gdx.assets.AssetLoadingException;
import ca.blarg.gdx.assets.AssetLoadingUtils;
import ca.blarg.gdx.tilemap3d.ChunkVertexGenerator; import ca.blarg.gdx.tilemap3d.ChunkVertexGenerator;
import ca.blarg.gdx.tilemap3d.TileChunk; import ca.blarg.gdx.tilemap3d.TileChunk;
import ca.blarg.gdx.tilemap3d.TileMap; import ca.blarg.gdx.tilemap3d.TileMap;
@ -20,7 +21,11 @@ import java.nio.ByteBuffer;
class TileMapJsonLoader { class TileMapJsonLoader {
public static JsonTileMap load(FileHandle file) { public static JsonTileMap load(FileHandle file) {
Json json = new Json(); Json json = new Json();
return json.fromJson(JsonTileMap.class, file); JsonTileMap definition = json.fromJson(JsonTileMap.class, file);
definition.tileMeshes = AssetLoadingUtils.addPathIfNone(definition.tileMeshes, file.parent().path());
return definition;
} }
public static TileMap create(FileHandle file, JsonTileMap definition, AssetManager assetManager) { public static TileMap create(FileHandle file, JsonTileMap definition, AssetManager assetManager) {

View file

@ -1,6 +1,7 @@
package ca.blarg.gdx.tilemap3d.assets.tilemesh; package ca.blarg.gdx.tilemap3d.assets.tilemesh;
import ca.blarg.gdx.assets.AssetLoadingException; import ca.blarg.gdx.assets.AssetLoadingException;
import ca.blarg.gdx.assets.AssetLoadingUtils;
import ca.blarg.gdx.graphics.atlas.TextureAtlas; import ca.blarg.gdx.graphics.atlas.TextureAtlas;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh; import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMeshCollection; import ca.blarg.gdx.tilemap3d.tilemesh.TileMeshCollection;
@ -11,7 +12,16 @@ import com.badlogic.gdx.utils.Json;
class TileMeshCollectionJsonLoader { class TileMeshCollectionJsonLoader {
public static JsonTileMeshCollection load(FileHandle file) { public static JsonTileMeshCollection load(FileHandle file) {
Json json = new Json(); Json json = new Json();
return json.fromJson(JsonTileMeshCollection.class, file); JsonTileMeshCollection definition = json.fromJson(JsonTileMeshCollection.class, file);
String path = file.parent().path();
definition.textureAtlas = AssetLoadingUtils.addPathIfNone(definition.textureAtlas, path);
if (definition.tiles != null) {
for (int i = 0; i < definition.tiles.size(); ++i)
definition.tiles.set(i, AssetLoadingUtils.addPathIfNone(definition.tiles.get(i), path));
}
return definition;
} }
public static TileMeshCollection create(FileHandle file, JsonTileMeshCollection definition, AssetManager assetManager) { public static TileMeshCollection create(FileHandle file, JsonTileMeshCollection definition, AssetManager assetManager) {

View file

@ -2,6 +2,7 @@ package ca.blarg.gdx.tilemap3d.assets.tilemesh;
import ca.blarg.gdx.Bitfield; import ca.blarg.gdx.Bitfield;
import ca.blarg.gdx.assets.AssetLoadingException; import ca.blarg.gdx.assets.AssetLoadingException;
import ca.blarg.gdx.assets.AssetLoadingUtils;
import ca.blarg.gdx.graphics.atlas.TextureAtlas; import ca.blarg.gdx.graphics.atlas.TextureAtlas;
import ca.blarg.gdx.tilemap3d.tilemesh.*; import ca.blarg.gdx.tilemap3d.tilemesh.*;
import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.AssetManager;
@ -15,7 +16,21 @@ import com.badlogic.gdx.utils.Json;
class TileMeshJsonLoader { class TileMeshJsonLoader {
public static JsonTileMesh load(FileHandle file) { public static JsonTileMesh load(FileHandle file) {
Json json = new Json(); Json json = new Json();
return json.fromJson(JsonTileMesh.class, file); JsonTileMesh definition = json.fromJson(JsonTileMesh.class, file);
String path = file.parent().path();
definition.textureAtlas = AssetLoadingUtils.addPathIfNone(definition.textureAtlas, path);
definition.model = AssetLoadingUtils.addPathIfNone(definition.model, path);
definition.collisionModel = AssetLoadingUtils.addPathIfNone(definition.collisionModel, path);
if (definition.models != null) {
for (int i = 0; i < definition.models.size(); ++i) {
JsonTileMesh.SubModels subModel = definition.models.get(i);
subModel.submodel = AssetLoadingUtils.addPathIfNone(subModel.submodel, path);
}
}
return definition;
} }
public static TileMesh create(FileHandle file, JsonTileMesh definition, AssetManager assetManager) { public static TileMesh create(FileHandle file, JsonTileMesh definition, AssetManager assetManager) {