diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemap/TileMapJsonLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemap/TileMapJsonLoader.java index 6238d63..26ef2fe 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemap/TileMapJsonLoader.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemap/TileMapJsonLoader.java @@ -2,6 +2,7 @@ package ca.blarg.gdx.tilemap3d.assets.tilemap; import ca.blarg.gdx.Strings; import ca.blarg.gdx.assets.AssetLoadingException; +import ca.blarg.gdx.assets.AssetLoadingUtils; import ca.blarg.gdx.tilemap3d.ChunkVertexGenerator; import ca.blarg.gdx.tilemap3d.TileChunk; import ca.blarg.gdx.tilemap3d.TileMap; @@ -20,7 +21,11 @@ import java.nio.ByteBuffer; class TileMapJsonLoader { public static JsonTileMap load(FileHandle file) { 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) { diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionJsonLoader.java b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionJsonLoader.java index 4adb8f5..ac504c1 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionJsonLoader.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/assets/tilemesh/TileMeshCollectionJsonLoader.java @@ -1,6 +1,7 @@ package ca.blarg.gdx.tilemap3d.assets.tilemesh; import ca.blarg.gdx.assets.AssetLoadingException; +import ca.blarg.gdx.assets.AssetLoadingUtils; import ca.blarg.gdx.graphics.atlas.TextureAtlas; import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh; import ca.blarg.gdx.tilemap3d.tilemesh.TileMeshCollection; @@ -11,7 +12,16 @@ import com.badlogic.gdx.utils.Json; class TileMeshCollectionJsonLoader { public static JsonTileMeshCollection load(FileHandle file) { 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) { 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 ecca70c..655419a 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 @@ -2,6 +2,7 @@ package ca.blarg.gdx.tilemap3d.assets.tilemesh; import ca.blarg.gdx.Bitfield; import ca.blarg.gdx.assets.AssetLoadingException; +import ca.blarg.gdx.assets.AssetLoadingUtils; import ca.blarg.gdx.graphics.atlas.TextureAtlas; import ca.blarg.gdx.tilemap3d.tilemesh.*; import com.badlogic.gdx.assets.AssetManager; @@ -15,7 +16,21 @@ import com.badlogic.gdx.utils.Json; class TileMeshJsonLoader { public static JsonTileMesh load(FileHandle file) { 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) {