add TileMeshCollection/Loader support for MultiModelTileMesh
This commit is contained in:
parent
bc92ab0681
commit
fe1209f039
|
@ -49,6 +49,28 @@ public class TileMeshCollection {
|
|||
return addMesh(tileMesh);
|
||||
}
|
||||
|
||||
public int add(
|
||||
Model[] models,
|
||||
Color[] modelColors,
|
||||
Vector3[] scaleModelsToSizes,
|
||||
Vector3[] modelPositionOffsets,
|
||||
Model collisionModel,
|
||||
MaterialTileMapping textures,
|
||||
byte opaqueSides,
|
||||
byte lightValue,
|
||||
boolean alpha,
|
||||
float translucency,
|
||||
Color color,
|
||||
Vector3 scaleToSize,
|
||||
Vector3 positionOffset,
|
||||
Vector3 collisionPositionOffset
|
||||
) {
|
||||
MultiModelTileMesh tileMesh = new MultiModelTileMesh(
|
||||
models, modelColors, scaleModelsToSizes, modelPositionOffsets, collisionModel, textures, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset
|
||||
);
|
||||
return addMesh(tileMesh);
|
||||
}
|
||||
|
||||
public int addCube(
|
||||
TextureRegion topTexture,
|
||||
TextureRegion bottomTexture,
|
||||
|
|
|
@ -171,6 +171,48 @@ public final class TileMeshCollectionLoader {
|
|||
}
|
||||
|
||||
collection.add(model, collisionModel, materialMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);
|
||||
|
||||
} else if (tileDef.models != null) {
|
||||
int numModels = tileDef.models.size();
|
||||
Model[] submodels = new Model[numModels];
|
||||
Color[] colors = new Color[numModels];
|
||||
Vector3[] scaleToSizes = new Vector3[numModels];
|
||||
Vector3[] positionOffsets = new Vector3[numModels];
|
||||
|
||||
for (int j = 0; j < numModels; ++j) {
|
||||
JsonTileSubModels subModelDef = tileDef.models.get(j);
|
||||
|
||||
submodels[j] = models.get(subModelDef.submodel);
|
||||
if (model == null) {
|
||||
submodels[j] = loader.loadModel(Gdx.files.internal(subModelDef.submodel));
|
||||
models.put(subModelDef.submodel, submodels[j]);
|
||||
}
|
||||
|
||||
if (subModelDef.color == null)
|
||||
colors[j] = new Color(Color.WHITE);
|
||||
else
|
||||
colors[j] = new Color(subModelDef.color);
|
||||
|
||||
scaleToSizes[j] = subModelDef.scaleToSize;
|
||||
positionOffsets[j] = subModelDef.positionOffset;
|
||||
}
|
||||
|
||||
collisionModel = null;
|
||||
|
||||
if (tileDef.collisionModel != null) {
|
||||
//override with a specific collision model
|
||||
collisionModel = models.get(tileDef.collisionModel);
|
||||
if (collisionModel == null) {
|
||||
collisionModel = loader.loadModel(Gdx.files.internal(tileDef.collisionModel));
|
||||
models.put(tileDef.collisionModel, collisionModel);
|
||||
}
|
||||
}
|
||||
if (tileDef.collisionShape != null) {
|
||||
collisionModel = null; // using a shape instead!
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
collection.add(submodels, colors, scaleToSizes, positionOffsets, collisionModel, materialMapping, opaqueSides, lightValue, alpha, translucency, color, scaleToSize, positionOffset, collisionPositionOffset);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue