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; 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.Gdx;
import com.badlogic.gdx.assets.loaders.ModelLoader; import com.badlogic.gdx.assets.loaders.ModelLoader;
import com.badlogic.gdx.files.FileHandle; 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.math.Vector3;
import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonReader; 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 sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.HashMap; import java.util.HashMap;
@ -180,8 +177,9 @@ public final class TileMeshCollectionLoader {
} }
} }
if (tileDef.collisionShape != null) { if (tileDef.collisionShape != null) {
collisionModel = null; // using a shape instead! collisionModel = CollisionShapes.get(tileDef.collisionShape);
throw new NotImplementedException(); if (collisionModel == null)
throw new RuntimeException("collisionShape not recognized.");
} }
collection.add(model, collisionModel, materialMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset); collection.add(model, collisionModel, materialMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);