ProjectZombie/src/projectzombie/display/lighting/ChunkLightingCollection.java

49 lines
1.3 KiB
Java
Executable File

package projectzombie.display.lighting;
import projectzombie.util.math.MathHelpers;
import projectzombie.util.math.map.IMap2D;
import projectzombie.util.math.map.Map2D;
import projectzombie.util.math.vec.Vec2d;
import projectzombie.util.math.vec.Vec2i;
import projectzombie.world.chunk.Chunk;
public class ChunkLightingCollection implements IMap2D<ChunkLightingTemp>
{
private Map2D<ChunkLightingTemp> chunks = new Map2D<ChunkLightingTemp>(this);
public final int RENDER_DISTANCE = Chunk.RENDER_DISTANCE;
@Override
public ChunkLightingTemp getEmpty(Vec2i pos) {
return new ChunkLightingTemp();
}
private Vec2i getChunkPosFromPos(Vec2i pos) {
return this.getChunkPosFromPos(new Vec2d(pos.x, pos.y));
}
private Vec2i getChunkPosFromPos(Vec2d pos) {
return new Vec2i(
MathHelpers.floor(pos.x / (double)Chunk.CHUNK_SIZE.mx),
MathHelpers.floor(pos.y / (double)Chunk.CHUNK_SIZE.my));
}
public ChunkLightingTemp getChunkwCPos(Vec2i cpos) {
if(!chunks.contains(cpos)) {
ChunkLightingTemp chunk = new ChunkLightingTemp();
chunks.set(cpos, chunk);
return chunk;
} else {
return chunks.get(cpos);
}
}
public ChunkLightingTemp getChunk(Vec2i pos) {
return getChunkwCPos(getChunkPosFromPos(pos));
}
public ChunkLightingTemp getChunk(Vec2d pos) {
return getChunkwCPos(getChunkPosFromPos(pos));
}
}