forgot to change this over to use AssetLoadingException
This commit is contained in:
parent
e38c6f3434
commit
75691fa357
|
@ -1,6 +1,7 @@
|
||||||
package ca.blarg.gdx.tilemap3d.assets.tilemesh;
|
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.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;
|
||||||
|
@ -17,20 +18,20 @@ class TileMeshJsonLoader {
|
||||||
return json.fromJson(JsonTileMesh.class, file);
|
return json.fromJson(JsonTileMesh.class, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TileMesh create(JsonTileMesh definition, AssetManager assetManager) {
|
public static TileMesh create(FileHandle file, JsonTileMesh definition, AssetManager assetManager) {
|
||||||
if (!definition.cube && definition.model == null && definition.models == null)
|
if (!definition.cube && definition.model == null && definition.models == null)
|
||||||
throw new RuntimeException("One of cube, model or models must be specified for each tile.");
|
throw new AssetLoadingException(file.path(), "One of cube, model or models must be specified for each tile.");
|
||||||
if (definition.textureAtlas == null)
|
if (definition.textureAtlas == null)
|
||||||
throw new RuntimeException("A texture atlas must be specified.");
|
throw new AssetLoadingException(file.path(), "A texture atlas must be specified.");
|
||||||
if (definition.collisionModel != null && definition.collisionShape != null)
|
if (definition.collisionModel != null && definition.collisionShape != null)
|
||||||
throw new RuntimeException("collisionModel and collisionShape cannot both be set.");
|
throw new AssetLoadingException(file.path(), "collisionModel and collisionShape cannot both be set.");
|
||||||
|
|
||||||
TextureAtlas atlas = null;
|
TextureAtlas atlas = null;
|
||||||
if (definition.textureAtlas != null)
|
if (definition.textureAtlas != null)
|
||||||
atlas = assetManager.get(definition.textureAtlas, TextureAtlas.class);
|
atlas = assetManager.get(definition.textureAtlas, TextureAtlas.class);
|
||||||
|
|
||||||
if (!atlas.materialTileMapping.hasMappings() && !definition.cube)
|
if (!atlas.materialTileMapping.hasMappings() && !definition.cube)
|
||||||
throw new RuntimeException("No material mappings defined for non-cube tile mesh. Material mappings needed to map from source model(s) textures to texture atlas tiles.");
|
throw new AssetLoadingException(file.path(), "No material mappings defined for non-cube tile mesh. Material mappings needed to map from source model(s) textures to texture atlas tiles.");
|
||||||
|
|
||||||
boolean isCube = definition.cube;
|
boolean isCube = definition.cube;
|
||||||
TextureRegion texture = null;
|
TextureRegion texture = null;
|
||||||
|
@ -100,7 +101,7 @@ class TileMeshJsonLoader {
|
||||||
} else if (definition.texture >= 0)
|
} else if (definition.texture >= 0)
|
||||||
texture = atlas.get(definition.texture);
|
texture = atlas.get(definition.texture);
|
||||||
else
|
else
|
||||||
throw new RuntimeException("No cube texture specified.");
|
throw new AssetLoadingException(file.path(), "No cube texture specified.");
|
||||||
|
|
||||||
if (definition.faces != null) {
|
if (definition.faces != null) {
|
||||||
if (definition.faces.contains("ALL"))
|
if (definition.faces.contains("ALL"))
|
||||||
|
@ -137,7 +138,7 @@ class TileMeshJsonLoader {
|
||||||
} else if (definition.collisionShape != null) {
|
} else if (definition.collisionShape != null) {
|
||||||
collisionModel = CollisionShapes.get(definition.collisionShape);
|
collisionModel = CollisionShapes.get(definition.collisionShape);
|
||||||
if (collisionModel == null)
|
if (collisionModel == null)
|
||||||
throw new RuntimeException("collisionShape not recognized.");
|
throw new AssetLoadingException(file.path(), "collisionShape not recognized.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ModelTileMesh(model, collisionModel, atlas.materialTileMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);
|
return new ModelTileMesh(model, collisionModel, atlas.materialTileMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);
|
||||||
|
@ -171,12 +172,12 @@ class TileMeshJsonLoader {
|
||||||
if (definition.collisionShape != null) {
|
if (definition.collisionShape != null) {
|
||||||
collisionModel = CollisionShapes.get(definition.collisionShape);
|
collisionModel = CollisionShapes.get(definition.collisionShape);
|
||||||
if (collisionModel == null)
|
if (collisionModel == null)
|
||||||
throw new RuntimeException("collisionShape not recognized.");
|
throw new AssetLoadingException(file.path(), "collisionShape not recognized.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MultiModelTileMesh(submodels, colors, scaleToSizes, positionOffsets, collisionModel, atlas.materialTileMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);
|
return new MultiModelTileMesh(submodels, colors, scaleToSizes, positionOffsets, collisionModel, atlas.materialTileMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
throw new RuntimeException("Unrecognized tile mesh type.");
|
throw new AssetLoadingException(file.path(), "Unrecognized tile mesh type.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class TileMeshLoader extends AsynchronousAssetLoader<TileMesh, TileMeshLo
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadAsync(AssetManager manager, String fileName, FileHandle file, TileMeshParameters parameter) {
|
public void loadAsync(AssetManager manager, String fileName, FileHandle file, TileMeshParameters parameter) {
|
||||||
mesh = TileMeshJsonLoader.create(definition, manager);
|
mesh = TileMeshJsonLoader.create(file, definition, manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue