Search in sources :

Example 1 with LitChunk

use of org.terasology.world.chunks.LitChunk in project Terasology by MovingBlocks.

the class WorldProviderCoreImpl method getSunlight.

@Override
public byte getSunlight(int x, int y, int z) {
    Vector3i chunkPos = ChunkMath.calcChunkPos(x, y, z);
    LitChunk chunk = chunkProvider.getChunk(chunkPos);
    if (chunk != null) {
        Vector3i blockPos = ChunkMath.calcBlockPos(x, y, z);
        return chunk.getSunlight(blockPos);
    }
    return 0;
}
Also used : Vector3i(org.terasology.math.geom.Vector3i) LitChunk(org.terasology.world.chunks.LitChunk)

Example 2 with LitChunk

use of org.terasology.world.chunks.LitChunk in project Terasology by MovingBlocks.

the class WorldProviderCoreImpl method getLight.

@Override
public byte getLight(int x, int y, int z) {
    Vector3i chunkPos = ChunkMath.calcChunkPos(x, y, z);
    LitChunk chunk = chunkProvider.getChunk(chunkPos);
    if (chunk != null) {
        Vector3i blockPos = ChunkMath.calcBlockPos(x, y, z);
        return chunk.getLight(blockPos);
    }
    return 0;
}
Also used : Vector3i(org.terasology.math.geom.Vector3i) LitChunk(org.terasology.world.chunks.LitChunk)

Example 3 with LitChunk

use of org.terasology.world.chunks.LitChunk in project Terasology by MovingBlocks.

the class WorldProviderCoreImpl method getTotalLight.

@Override
public byte getTotalLight(int x, int y, int z) {
    Vector3i chunkPos = ChunkMath.calcChunkPos(x, y, z);
    LitChunk chunk = chunkProvider.getChunk(chunkPos);
    if (chunk != null) {
        Vector3i blockPos = ChunkMath.calcBlockPos(x, y, z);
        return (byte) Math.max(chunk.getSunlight(blockPos), chunk.getLight(blockPos));
    }
    return 0;
}
Also used : Vector3i(org.terasology.math.geom.Vector3i) LitChunk(org.terasology.world.chunks.LitChunk)

Example 4 with LitChunk

use of org.terasology.world.chunks.LitChunk in project Terasology by MovingBlocks.

the class LightMerger method merge.

private void merge(Chunk chunk) {
    Chunk[] localChunks = assembleLocalChunks(chunk);
    localChunks[CENTER_INDEX] = chunk;
    List<BatchPropagator> propagators = Lists.newArrayList();
    propagators.add(new StandardBatchPropagator(new LightPropagationRules(), new LocalChunkView(localChunks, lightRules)));
    PropagatorWorldView regenWorldView = new LocalChunkView(localChunks, sunlightRegenRules);
    PropagationRules sunlightRules = new SunlightPropagationRules(regenWorldView);
    PropagatorWorldView sunlightWorldView = new LocalChunkView(localChunks, sunlightRules);
    BatchPropagator sunlightPropagator = new StandardBatchPropagator(sunlightRules, sunlightWorldView);
    propagators.add(new SunlightRegenBatchPropagator(sunlightRegenRules, regenWorldView, sunlightPropagator, sunlightWorldView));
    propagators.add(sunlightPropagator);
    for (BatchPropagator propagator : propagators) {
        // Propagate Inwards
        for (Side side : Side.values()) {
            Vector3i adjChunkPos = side.getAdjacentPos(chunk.getPosition());
            LitChunk adjChunk = chunkProvider.getChunkUnready(adjChunkPos);
            if (adjChunk != null) {
                propagator.propagateBetween(adjChunk, chunk, side.reverse(), false);
            }
        }
        // Propagate Outwards
        for (Side side : Side.values()) {
            Vector3i adjChunkPos = side.getAdjacentPos(chunk.getPosition());
            LitChunk adjChunk = chunkProvider.getChunk(adjChunkPos);
            if (adjChunk != null) {
                propagator.propagateBetween(chunk, adjChunk, side, true);
            }
        }
    }
    for (BatchPropagator propagator : propagators) {
        propagator.process();
    }
    chunk.deflateSunlight();
}
Also used : StandardBatchPropagator(org.terasology.world.propagation.StandardBatchPropagator) StandardBatchPropagator(org.terasology.world.propagation.StandardBatchPropagator) SunlightRegenBatchPropagator(org.terasology.world.propagation.SunlightRegenBatchPropagator) BatchPropagator(org.terasology.world.propagation.BatchPropagator) SunlightRegenBatchPropagator(org.terasology.world.propagation.SunlightRegenBatchPropagator) LitChunk(org.terasology.world.chunks.LitChunk) Chunk(org.terasology.world.chunks.Chunk) LitChunk(org.terasology.world.chunks.LitChunk) Side(org.terasology.math.Side) PropagatorWorldView(org.terasology.world.propagation.PropagatorWorldView) Vector3i(org.terasology.math.geom.Vector3i) LocalChunkView(org.terasology.world.propagation.LocalChunkView) PropagationRules(org.terasology.world.propagation.PropagationRules)

Aggregations

Vector3i (org.terasology.math.geom.Vector3i)4 LitChunk (org.terasology.world.chunks.LitChunk)4 Side (org.terasology.math.Side)1 Chunk (org.terasology.world.chunks.Chunk)1 BatchPropagator (org.terasology.world.propagation.BatchPropagator)1 LocalChunkView (org.terasology.world.propagation.LocalChunkView)1 PropagationRules (org.terasology.world.propagation.PropagationRules)1 PropagatorWorldView (org.terasology.world.propagation.PropagatorWorldView)1 StandardBatchPropagator (org.terasology.world.propagation.StandardBatchPropagator)1 SunlightRegenBatchPropagator (org.terasology.world.propagation.SunlightRegenBatchPropagator)1