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 { private Map2D chunks = new Map2D(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)); } }