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();
}
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;
}
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;
}
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;
}
}
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);
}
}
Aggregations