basic support for primitive collision shapes to be specified for a mesh

This commit is contained in:
Gered 2013-12-31 12:53:31 -05:00
parent 148c051b97
commit 5ef70cb13e
2 changed files with 33 additions and 12 deletions

View file

@ -0,0 +1,23 @@
package ca.blarg.gdx.tilemap3d.tilemesh;
import com.badlogic.gdx.graphics.VertexAttributes;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
import com.badlogic.gdx.utils.ObjectMap;
public class CollisionShapes {
static final ModelBuilder modelBuilder = new ModelBuilder();
static final ObjectMap<String, Model> shapes = new ObjectMap<String, Model>();
static {
shapes.put("cube-1x1x1", buildCube1x1x1());
}
private static Model buildCube1x1x1() {
return modelBuilder.createBox(1.0f, 1.0f, 1.0f, null, VertexAttributes.Usage.Position);
}
public static Model get(String shapeName) {
return shapes.get(shapeName);
}
}

View file

@ -1,5 +1,12 @@
package ca.blarg.gdx.tilemap3d.tilemesh.json;
import ca.blarg.gdx.Bitfield;
import ca.blarg.gdx.graphics.atlas.TextureAtlas;
import ca.blarg.gdx.io.FileHelpers;
import ca.blarg.gdx.tilemap3d.tilemesh.CollisionShapes;
import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMeshCollection;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.loaders.ModelLoader;
import com.badlogic.gdx.files.FileHandle;
@ -10,16 +17,6 @@ import com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonReader;
import ca.blarg.gdx.Bitfield;
import ca.blarg.gdx.graphics.atlas.TextureAtlas;
import ca.blarg.gdx.io.FileHelpers;
import ca.blarg.gdx.tilemap3d.tilemesh.MaterialTileMapping;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMesh;
import ca.blarg.gdx.tilemap3d.tilemesh.TileMeshCollection;
import ca.blarg.gdx.tilemap3d.tilemesh.json.JsonMaterialMapping;
import ca.blarg.gdx.tilemap3d.tilemesh.json.JsonTileDefinition;
import ca.blarg.gdx.tilemap3d.tilemesh.json.JsonTileMeshCollection;
import ca.blarg.gdx.tilemap3d.tilemesh.json.JsonTileSubModels;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.HashMap;
@ -180,8 +177,9 @@ public final class TileMeshCollectionLoader {
}
}
if (tileDef.collisionShape != null) {
collisionModel = null; // using a shape instead!
throw new NotImplementedException();
collisionModel = CollisionShapes.get(tileDef.collisionShape);
if (collisionModel == null)
throw new RuntimeException("collisionShape not recognized.");
}
collection.add(model, collisionModel, materialMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);