fix block meshgen iteration bug
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2025-03-26 19:03:51 -04:00
parent f048b26064
commit 8ddb35d0f8
2 changed files with 96 additions and 2 deletions

View File

@ -315,7 +315,7 @@ public class BlockMeshgen {
QuadMesh quad1 = null;
QuadMesh quad2 = null;
int zEnd = 0;
for(int i = 0; i < quadMeshes.size(); i++){
for(int i = 0; i < quadMeshes.size();){
quad1 = quadMeshes.get(i);
zEnd = 1;
for(int j = i + 1; j < quadMeshes.size(); j++){
@ -325,7 +325,6 @@ public class BlockMeshgen {
} else {
BlockMeshgen.meshifyBox(verts,normals,uvs,indices,samplers,quad1,zEnd,quad1.type,verts.size());
quad1 = quad2;
zEnd = 1;
break;
}
}

View File

@ -1089,6 +1089,101 @@ public class BlockMeshgenTests {
BlockMeshData meshData = BlockMeshgen.rasterize(chunkData);
//error check result
assertEquals(expectedData.length, meshData.vertices.length);
for(int i = 0; i < expectedData.length; i++){
assertEquals(expectedData[i], meshData.vertices[i]);
}
}
@UnitTest
public void test_rasterize_11(){
//expected data
float[] expectedData = new float[]{
//block 1
1,1,1,
2,1,1,
1,3,1,
2,3,1,
1,1,1,
1,1,3,
1,3,1,
1,3,3,
1,1,1,
1,1,3,
2,1,1,
2,1,3,
1,1,3,
2,1,3,
1,3,3,
2,3,3,
2,1,1,
2,1,3,
2,3,1,
2,3,3,
1,3,1,
1,3,3,
2,3,1,
2,3,3,
//block 2
2,1,1,
3,1,1,
2,2,1,
3,2,1,
2,1,1,
2,1,2,
2,2,1,
2,2,2,
2,1,1,
2,1,2,
3,1,1,
3,1,2,
2,1,2,
3,1,2,
2,2,2,
3,2,2,
3,1,1,
3,1,2,
3,2,1,
3,2,2,
2,2,1,
2,2,2,
3,2,1,
3,2,2,
};
for(int i = 0; i < expectedData.length; i++){
expectedData[i] = expectedData[i] * BlockChunkData.BLOCK_SIZE_MULTIPLIER;
}
//setup data
BlockChunkData chunkData = new BlockChunkData();
short[] types = new short[BlockChunkData.CHUNK_DATA_WIDTH * BlockChunkData.CHUNK_DATA_WIDTH * BlockChunkData.CHUNK_DATA_WIDTH];
chunkData.setType(types);
//block 1
chunkData.setType(1, 1, 1, (short)1);
chunkData.setType(1, 2, 1, (short)1);
chunkData.setType(1, 2, 2, (short)1);
chunkData.setType(1, 1, 2, (short)1);
//block 2
chunkData.setType(2, 1, 1, (short)1);
//call
BlockMeshData meshData = BlockMeshgen.rasterize(chunkData);
//error check result
assertEquals(expectedData.length, meshData.vertices.length);