49 lines
1.3 KiB
Java
Executable File
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));
|
|
}
|
|
}
|