Search in sources :

Example 31 with Chunk

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

the class LocalChunkProvider method updateChunkReadinessState.

private void updateChunkReadinessState(final ReadyChunkInfo readyChunkInfo) {
    Chunk chunk = readyChunkInfo.getChunk();
    chunk.markReady();
}
Also used : Chunk(org.terasology.world.chunks.Chunk) ManagedChunk(org.terasology.world.chunks.ManagedChunk)

Example 32 with Chunk

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

the class LocalChunkProvider method listAdjacentChunks.

private List<Chunk> listAdjacentChunks(Chunk chunk) {
    final Vector3i centerChunkPosition = chunk.getPosition();
    List<Chunk> adjacentChunks = new ArrayList<>(6);
    for (Side side : Side.values()) {
        final Vector3i adjacentChunkPosition = side.getAdjacentPos(centerChunkPosition);
        final Chunk adjacentChunk = chunkCache.get(adjacentChunkPosition);
        if (adjacentChunk != null) {
            adjacentChunks.add(adjacentChunk);
        }
    }
    return adjacentChunks;
}
Also used : Side(org.terasology.math.Side) Vector3i(org.terasology.math.geom.Vector3i) TIntArrayList(gnu.trove.list.array.TIntArrayList) ArrayList(java.util.ArrayList) Chunk(org.terasology.world.chunks.Chunk) ManagedChunk(org.terasology.world.chunks.ManagedChunk)

Example 33 with Chunk

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

the class LightMerger method assembleLocalChunks.

private Chunk[] assembleLocalChunks(Chunk chunk) {
    Chunk[] localChunks = new Chunk[27];
    int index = 0;
    for (int z = -1; z < 2; ++z) {
        for (int y = -1; y < 2; ++y) {
            for (int x = -1; x < 2; ++x) {
                Chunk localChunk = chunkProvider.getChunk(chunk.getPosition().x + x, chunk.getPosition().y + y, chunk.getPosition().z + z);
                if (localChunk != null) {
                    localChunks[index] = localChunk;
                }
                index++;
            }
        }
    }
    return localChunks;
}
Also used : LitChunk(org.terasology.world.chunks.LitChunk) Chunk(org.terasology.world.chunks.Chunk)

Example 34 with Chunk

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

the class NetClient method sendNewChunks.

private void sendNewChunks(NetData.NetMessage.Builder message) {
    if (!readyChunks.isEmpty()) {
        chunkSendCounter += chunkSendRate * NET_TICK_RATE * networkSystem.getBandwidthPerClient();
        if (chunkSendCounter > 1.0f) {
            chunkSendCounter -= 1.0f;
            Vector3i center = new Vector3i();
            LocationComponent loc = getEntity().getComponent(ClientComponent.class).character.getComponent(LocationComponent.class);
            if (loc != null) {
                center.set(ChunkMath.calcChunkPos(new Vector3i(loc.getWorldPosition(), RoundingMode.HALF_UP)));
            }
            Vector3i pos = null;
            int distance = Integer.MAX_VALUE;
            for (Vector3i chunkPos : readyChunks.keySet()) {
                int chunkDistance = chunkPos.distanceSquared(center);
                if (pos == null || chunkDistance < distance) {
                    pos = chunkPos;
                    distance = chunkDistance;
                }
            }
            Chunk chunk = readyChunks.remove(pos);
            relevantChunks.add(pos);
            message.addChunkInfo(chunk.encode());
        }
    } else {
        chunkSendCounter = 1.0f;
    }
}
Also used : Vector3i(org.terasology.math.geom.Vector3i) Chunk(org.terasology.world.chunks.Chunk) LocationComponent(org.terasology.logic.location.LocationComponent)

Example 35 with Chunk

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

the class ServerImpl method processReceivedChunks.

private void processReceivedChunks(NetData.NetMessage message) {
    for (EntityData.ChunkStore chunkInfo : message.getChunkInfoList()) {
        Chunk chunk = ChunkSerializer.decode(chunkInfo, blockManager, biomeManager);
        chunkQueue.offer(chunk);
    }
}
Also used : EntityData(org.terasology.protobuf.EntityData) Chunk(org.terasology.world.chunks.Chunk)

Aggregations

Chunk (org.terasology.world.chunks.Chunk)50 Vector3i (org.terasology.math.geom.Vector3i)31 Test (org.junit.Test)28 ChunkImpl (org.terasology.world.chunks.internal.ChunkImpl)18 ReadyChunkInfo (org.terasology.world.chunks.internal.ReadyChunkInfo)9 ManagedChunk (org.terasology.world.chunks.ManagedChunk)8 ChunkViewCoreImpl (org.terasology.world.internal.ChunkViewCoreImpl)8 ChunkStore (org.terasology.persistence.ChunkStore)7 EntityRef (org.terasology.entitySystem.entity.EntityRef)5 ChunkViewCore (org.terasology.world.internal.ChunkViewCore)5 ChunkProvider (org.terasology.world.chunks.ChunkProvider)3 TIntList (gnu.trove.list.TIntList)2 TShortObjectHashMap (gnu.trove.map.hash.TShortObjectHashMap)2 EntityStore (org.terasology.entitySystem.entity.EntityStore)2 EngineEntityManager (org.terasology.entitySystem.entity.internal.EngineEntityManager)2 Event (org.terasology.entitySystem.event.Event)2 LocationComponent (org.terasology.logic.location.LocationComponent)2 Side (org.terasology.math.Side)2 StorageManager (org.terasology.persistence.StorageManager)2 Block (org.terasology.world.block.Block)2