diff --git a/src/main/java/electrosphere/entity/types/terrain/TerrainChunkData.java b/src/main/java/electrosphere/entity/types/terrain/TerrainChunkData.java index e2982bed..b997e8d9 100644 --- a/src/main/java/electrosphere/entity/types/terrain/TerrainChunkData.java +++ b/src/main/java/electrosphere/entity/types/terrain/TerrainChunkData.java @@ -20,6 +20,11 @@ public class TerrainChunkData { //texture ratio vector List textureRatioVectors; //HOW MUCH of each texture in the atlas to sample + /** + * The LOD of the model + */ + int lod; + /** * Creates an object to hold data required to generate a chunk * @param vertices @@ -27,14 +32,16 @@ public class TerrainChunkData { * @param faceElements * @param uvs * @param textureSamplers + * @param lod The LOD of the model */ - public TerrainChunkData(List vertices, List normals, List faceElements, List uvs, List textureSamplers, List textureRatioVectors){ + public TerrainChunkData(List vertices, List normals, List faceElements, List uvs, List textureSamplers, List textureRatioVectors, int lod){ this.vertices = vertices; this.normals = normals; this.faceElements = faceElements; this.uvs = uvs; this.textureSamplers = textureSamplers; this.textureRatioVectors = textureRatioVectors; + this.lod = lod; } /** @@ -85,4 +92,12 @@ public class TerrainChunkData { return textureRatioVectors; } + /** + * Gets the LOD of the model + * @return The LOD + */ + public int getLOD(){ + return lod; + } + } diff --git a/src/main/java/electrosphere/renderer/meshgen/TerrainChunkModelGeneration.java b/src/main/java/electrosphere/renderer/meshgen/TerrainChunkModelGeneration.java index ced73d9f..573be002 100644 --- a/src/main/java/electrosphere/renderer/meshgen/TerrainChunkModelGeneration.java +++ b/src/main/java/electrosphere/renderer/meshgen/TerrainChunkModelGeneration.java @@ -763,7 +763,7 @@ public class TerrainChunkModelGeneration { } //List vertices, List normals, List faceElements, List uvs - TerrainChunkData rVal = new TerrainChunkData(vertsFlat, normalsFlat, elementsFlat, UVs, textureSamplers, textureRatioData); + TerrainChunkData rVal = new TerrainChunkData(vertsFlat, normalsFlat, elementsFlat, UVs, textureSamplers, textureRatioData, 0); return rVal; } @@ -892,14 +892,15 @@ public class TerrainChunkModelGeneration { //bounding sphere logic + int distance = ServerTerrainChunk.CHUNK_DIMENSION / 2 * (int)Math.pow(2,data.getLOD()); mesh.updateBoundingSphere( - ServerTerrainChunk.CHUNK_DIMENSION, - ServerTerrainChunk.CHUNK_DIMENSION, - ServerTerrainChunk.CHUNK_DIMENSION, + distance, + distance, + distance, (float)Math.sqrt( - ServerTerrainChunk.CHUNK_DIMENSION * ServerTerrainChunk.CHUNK_DIMENSION + - ServerTerrainChunk.CHUNK_DIMENSION * ServerTerrainChunk.CHUNK_DIMENSION + - ServerTerrainChunk.CHUNK_DIMENSION * ServerTerrainChunk.CHUNK_DIMENSION + distance * distance + + distance * distance + + distance * distance )); diff --git a/src/main/java/electrosphere/renderer/meshgen/TransvoxelModelGeneration.java b/src/main/java/electrosphere/renderer/meshgen/TransvoxelModelGeneration.java index 8622a1ff..65356f42 100644 --- a/src/main/java/electrosphere/renderer/meshgen/TransvoxelModelGeneration.java +++ b/src/main/java/electrosphere/renderer/meshgen/TransvoxelModelGeneration.java @@ -1694,7 +1694,7 @@ public class TransvoxelModelGeneration { } //List vertices, List normals, List faceElements, List uvs - TerrainChunkData rVal = new TerrainChunkData(vertsFlat, normalsFlat, elementsFlat, UVs, textureSamplers, textureRatioData); + TerrainChunkData rVal = new TerrainChunkData(vertsFlat, normalsFlat, elementsFlat, UVs, textureSamplers, textureRatioData, chunkData.levelOfDetail); return rVal; }