void make_world(Map *map, int p, int q) { int pad = 1; for (int dx = -pad; dx < CHUNK_SIZE + pad; dx++) { for (int dz = -pad; dz < CHUNK_SIZE + pad; dz++) { int x = p * CHUNK_SIZE + dx; int z = q * CHUNK_SIZE + dz; float f = simplex2(x * 0.01, z * 0.01, 4, 0.5, 2); float g = simplex2(-x * 0.01, -z * 0.01, 2, 0.9, 2); int mh = g * 32 + 16; int h = f * mh; int w = 1; int t = 12; if (h <= t) { h = t; w = 2; } if (dx < 0 || dz < 0 || dx >= CHUNK_SIZE || dz >= CHUNK_SIZE) { w = -1; } for (int y = 0; y < h; y++) { map_set(map, x, y, z, w); } } } db_update_chunk(map, p, q); }
void make_chunk(Chunk *chunk, int p, int q) { chunk->p = p; chunk->q = q; chunk->faces = 0; Map *map = &chunk->map; map_alloc(map); make_world(map, p, q); db_update_chunk(map, p, q); update_chunk(chunk); }