public void move(IntVec3 delta) { Debug.Log(delta.x + ", " + delta.y + ", " + delta.z); RenderChunk[,,] newchunks = new RenderChunk[Settings.map_size, Settings.map_size, Settings.map_size]; for (int i = 0; i < Settings.map_size; i++) { for (int j = 0; j < Settings.map_size; j++) { for (int k = 0; k < Settings.map_size; k++) { newchunks[i, j, k] = null; } } } for (int i = 0; i < Settings.map_size; i++) { for (int j = 0; j < Settings.map_size; j++) { for (int k = 0; k < Settings.map_size; k++) { IntVec3 index = new IntVec3(i, j, k) - delta; if (index.x >= 0 && index.y >= 0 && index.z >= 0 && index.x < Settings.map_size && index.y < Settings.map_size && index.z < Settings.map_size) { newchunks[index.x, index.y, index.z] = chunks[i, j, k]; } else if (chunks[i, j, k] != null) { chunks[i, j, k].destroy(); } } } } chunks = newchunks; chunkpos += delta; }
void process(MeshTask task) { IntVec3 pos = Client.view.world.getChunkIndex(task.chunk.pos * Settings.chunk_size); if (pos == null) { return; } RenderChunk rc = Client.view.world.chunks[pos.x, pos.y, pos.z]; rc.setMesh(task.mesh); }