Yeah sorry that was just a bit of code i left there wasnt the whole thing haha
Okay the map is made by a 2D image which is then turned into a grid style
Code for map (This is a massive bit of code)
public Map(Bitmap map, float xPos,float yPos,float zPos) {
this.mapImage = map;
ArrayList<Float> verticesArray = new ArrayList<>();
ArrayList<Integer> indicesArray = new ArrayList<>();
ArrayList<Float> textureArray = new ArrayList<>();
for(int x = 0;x < mapImage.getWidth();x++){
for(int z = 0; z < mapImage.getHeight();z++){
if((mapImage.getPixel(x,z) & 0xFFFFFF) == 0){
continue;
}
// Top
indicesArray.add(verticesArray.size()/3 + 0);
indicesArray.add(verticesArray.size()/3 + 1);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 3);
indicesArray.add(verticesArray.size()/3 + 0);
addVertex(verticesArray, x*WIDTH, HEIGHT, z*LENGTH);
addVertex(verticesArray, x*WIDTH, HEIGHT, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, HEIGHT, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, HEIGHT, z*LENGTH);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
// Ground
indicesArray.add(verticesArray.size()/3 + 0);
indicesArray.add(verticesArray.size()/3 + 1);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 3);
indicesArray.add(verticesArray.size()/3 + 0);
addVertex(verticesArray, x*WIDTH, 0, z*LENGTH);
addVertex(verticesArray, x*WIDTH, 0, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, 0, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, 0, z*LENGTH);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
// Walls
if((mapImage.getPixel(x,z -1) & 0xFFFFFF) == 0){
indicesArray.add(verticesArray.size()/3 + 0);
indicesArray.add(verticesArray.size()/3 + 1);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 3);
indicesArray.add(verticesArray.size()/3 + 0);
addVertex(verticesArray, x*WIDTH, 0, z*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, 0, z*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, HEIGHT, z*LENGTH);
addVertex(verticesArray, x*WIDTH, HEIGHT, z*LENGTH);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
}
if((mapImage.getPixel(x,z +1) & 0xFFFFFF) == 0){
indicesArray.add(verticesArray.size()/3 + 0);
indicesArray.add(verticesArray.size()/3 + 1);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 3);
indicesArray.add(verticesArray.size()/3 + 0);
addVertex(verticesArray, x*WIDTH, 0, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, 0, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, HEIGHT, (z+1)*LENGTH);
addVertex(verticesArray, x*WIDTH, HEIGHT, (z+1)*LENGTH);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
}
if((mapImage.getPixel(x-1,z) & 0xFFFFFF) == 0){
indicesArray.add(verticesArray.size()/3 + 0);
indicesArray.add(verticesArray.size()/3 + 1);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 3);
indicesArray.add(verticesArray.size()/3 + 0);
addVertex(verticesArray, x*WIDTH, 0, z*LENGTH);
addVertex(verticesArray, x*WIDTH, 0, (z+1)*LENGTH);
addVertex(verticesArray, x*WIDTH, HEIGHT, (z+1)*LENGTH);
addVertex(verticesArray, x*WIDTH, HEIGHT, z*LENGTH);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
}
if((mapImage.getPixel(x+1,z) & 0xFFFFFF) == 0){
indicesArray.add(verticesArray.size()/3 + 0);
indicesArray.add(verticesArray.size()/3 + 1);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 2);
indicesArray.add(verticesArray.size()/3 + 3);
indicesArray.add(verticesArray.size()/3 + 0);
addVertex(verticesArray, (x+1)*WIDTH, 0, z*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, 0, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, HEIGHT, (z+1)*LENGTH);
addVertex(verticesArray, (x+1)*WIDTH, HEIGHT, z*LENGTH);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(1f/NUMBER_TEX);
textureArray.add(0f/NUMBER_TEX);
}
}
}
float[] vertices = new float[verticesArray.size()];
int[] indices = new int[indicesArray.size()];
float[] textureCoords = new float[textureArray.size()];
for(int i = 0;i < verticesArray.size();i++){
vertices[i] = verticesArray.get(i);
}
for(int i = 0;i < indicesArray.size();i++){
indices[i] = indicesArray.get(i);
}
for(int i = 0;i < textureArray.size();i++){
textureCoords[i] = textureArray.get(i);
}
float[] normals = {
0,1,0
};
rawModel = new VertexArray(vertices, indices, textureCoords, normals);
Texture stoneTexture = Utils.loadTexture("tileSheet");
mapModel = new TexturedModel(new Model(rawModel), stoneTexture);
mapModel.getModel().setPosition(xPos*WIDTH, yPos*HEIGHT, zPos*LENGTH);
}