diff --git a/const.h b/const.h index 5aa1d6b..186243b 100644 --- a/const.h +++ b/const.h @@ -30,8 +30,6 @@ typedef struct Vertex2 { #define CTRI_ALL CBLOCK_ALL * 18 * sizeof(Vertex) -#define MAX_R 1 - typedef struct Chunk { unsigned char exists; unsigned int x; diff --git a/cubes.c b/cubes.c index 644a945..f65ce63 100644 --- a/cubes.c +++ b/cubes.c @@ -22,7 +22,6 @@ int oy = -1024; int oz = -1024; Chunk *chunk_old = NULL; -int read_order = 0; void gen_face(Vertex *cube, int i, int x, int y, int z, int x2, int y2, int z2, int *j, int is_text, Chunk dat, int ci, int a3) { @@ -32,11 +31,11 @@ void gen_face(Vertex *cube, int i, int x, int y, int z, int x2, int y2, int z2, if (is_text) { a.pos[i]--; int exists = 0; - int type = cube_exists(x, y, z, dat, ci, read_order); - int typeB = cube_exists(a.pos[0], a.pos[1], a.pos[2], dat, ci, read_order); + int type = cube_exists(x, y, z, dat, ci); + int typeB = cube_exists(a.pos[0], a.pos[1], a.pos[2], dat, ci); exists = ((!!type) != (!!typeB)); - a2.pos[0] = exists ? TEXT_GAP_H * (type ? (type - 1) : (typeB-1)) : -1.0; + a2.pos[0] = exists ? TEXT_GAP_H * (type ? (type - 1) : (typeB - 1)) : -1.0; a2.pos[1] = exists ? TEXT_GAP_V * (i + (!!type) * 3) : -1.0; a2.pos[2] = 0; if (!exists) { @@ -104,7 +103,7 @@ void *gen_chunk(void *args) { (CHUNK_ALL);*/ Chunk chunk = fetch_chunk(x2 / CHUNK_LENGTH, y2 / CHUNK_LENGTH, - z2 / CHUNK_LENGTH, a, 0, read_order); + z2 / CHUNK_LENGTH, a, 0); if (chunk.exists != 0 && the_j > -1) chunk_old[the_j] = chunk; @@ -141,7 +140,7 @@ void *gen_chunk(void *args) { } int gen_cubes(Vertex *cube, Vertex *text, Vertex *cubeO, Vertex *textO, int x, - int y, int z, int r, int is_purge, int *i2) { + int y, int z, int is_purge, int *i2) { Vertex noth = {{-1, -1, -1}}; for (int i = 0; i < CBLOCK_ALL * 18; i++) { cube[i] = noth; @@ -152,7 +151,7 @@ int gen_cubes(Vertex *cube, Vertex *text, Vertex *cubeO, Vertex *textO, int x, x *= CHUNK_LENGTH; y *= CHUNK_LENGTH; z *= CHUNK_LENGTH; - int a3 = CHUNK_DIAMETER_H + (r * 2); + int a3 = CHUNK_DIAMETER_H; int a = 0; //(z % CHUNK_DIAMETER_H) + (x % CHUNK_DIAMETER_H) * CHUNK_DIAMETER_H + //(y % CHUNK_DIAMETER_V) * CHUNK_DIAMETER_H * CHUNK_DIAMETER_H; @@ -170,27 +169,23 @@ int gen_cubes(Vertex *cube, Vertex *text, Vertex *cubeO, Vertex *textO, int x, if (!chunk_old) { chunk_old = calloc((CHUNK_ALL), sizeof(struct Chunk)); } - read_order = !read_order; pthread_t thread_id[a3]; int j = 0; - for (int y2 = y - (CHUNK_RADIUS_V + r) * CHUNK_LENGTH; - y2 <= y + (CHUNK_RADIUS_V + r) * CHUNK_LENGTH; y2 += CHUNK_LENGTH) { + for (int y2 = y - (CHUNK_RADIUS_V)*CHUNK_LENGTH; + y2 <= y + (CHUNK_RADIUS_V)*CHUNK_LENGTH; y2 += CHUNK_LENGTH) { - for (int x2 = x - (CHUNK_RADIUS_H + r) * CHUNK_LENGTH; - x2 <= x + (CHUNK_RADIUS_H + r) * CHUNK_LENGTH; x2 += CHUNK_LENGTH) { + for (int x2 = x - (CHUNK_RADIUS_H)*CHUNK_LENGTH; + x2 <= x + (CHUNK_RADIUS_H)*CHUNK_LENGTH; x2 += CHUNK_LENGTH) { - for (int z2 = z - (CHUNK_RADIUS_H + r) * CHUNK_LENGTH; - z2 <= z + (CHUNK_RADIUS_H + r) * CHUNK_LENGTH; z2 += CHUNK_LENGTH) { + for (int z2 = z - (CHUNK_RADIUS_H)*CHUNK_LENGTH; + z2 <= z + (CHUNK_RADIUS_H)*CHUNK_LENGTH; z2 += CHUNK_LENGTH) { VertexI pos = { - {x + (((x2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H + r * 2)) - - CHUNK_RADIUS_H) * + {x + (((x2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H)) - CHUNK_RADIUS_H) * CHUNK_LENGTH, - y + (((y2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_V + r * 2)) - - CHUNK_RADIUS_V) * + y + (((y2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_V)) - CHUNK_RADIUS_V) * CHUNK_LENGTH, - z + (((z2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H + r * 2)) - - CHUNK_RADIUS_H) * + z + (((z2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H)) - CHUNK_RADIUS_H) * CHUNK_LENGTH}}; int a2 = a % a3; @@ -214,7 +209,8 @@ int gen_cubes(Vertex *cube, Vertex *text, Vertex *cubeO, Vertex *textO, int x, if (cached) { thread_return[a2] = i2[a2 / a3]; thread_id[a2] = -1; - } else if (pos.pos[0] < 0 || pos.pos[1] < 0 || pos.pos[2] < 0 || pos.pos[1] < ((y - CHUNK_LENGTH*CHUNK_RADIUS_V) * 1.1)) { + } else if (pos.pos[0] < 0 || pos.pos[1] < 0 || pos.pos[2] < 0 || + pos.pos[1] < ((y - CHUNK_LENGTH * CHUNK_RADIUS_V) * 1.05)) { thread_return[a2] = -1; thread_id[a2] = -1; } else { diff --git a/cubes.h b/cubes.h index 141969e..62937e0 100644 --- a/cubes.h +++ b/cubes.h @@ -1,3 +1,3 @@ #include "const.h" -int gen_cubes(Vertex *cube, Vertex *text, Vertex *cubeO, Vertex *textO, int x, int y, int z, int r, int is_purge, int *i2); \ No newline at end of file +int gen_cubes(Vertex *cube, Vertex *text, Vertex *cubeO, Vertex *textO, int x, int y, int z, int is_purge, int *i2); \ No newline at end of file diff --git a/gen.c b/gen.c index 1ccb55a..1afff75 100644 --- a/gen.c +++ b/gen.c @@ -58,7 +58,7 @@ double perlin_calc(double x, double y, double s) { return value; } -Chunk fetch_chunk(int x, int y, int z, int ci, int h, int r_order) { +Chunk fetch_chunk(int x, int y, int z, int ci, int h) { Chunk *chunks2 = chunks; // &chunks[CBUF_ALL * ci]; @@ -168,14 +168,14 @@ void purge_chunks(int ci) { // memset(chunks, 0, sizeof(Chunk) *CHUNK_ALL); } -int cube_exists(int x, int y, int z, Chunk dat, int ci, int r_order) { +int cube_exists(int x, int y, int z, Chunk dat, int ci) { if (x < 0 || y < 0 || z < 0) return 0; if (dat.exists == 0 || dat.x != (x / CHUNK_LENGTH) || dat.y != (y / CHUNK_LENGTH) || dat.z != (z / CHUNK_LENGTH)) { dat = fetch_chunk((x / CHUNK_LENGTH), (y / CHUNK_LENGTH), - (z / CHUNK_LENGTH), ci, dat.exists, r_order); + (z / CHUNK_LENGTH), ci, dat.exists); prevExists = dat.exists; } diff --git a/gen.h b/gen.h index 78e2d8f..b3da317 100644 --- a/gen.h +++ b/gen.h @@ -1,5 +1,5 @@ #include "const.h" -int cube_exists(int x, int y, int z, Chunk dat, int ci, int r_order); -Chunk fetch_chunk(int x, int y, int z, int ci, int h, int r_order); +int cube_exists(int x, int y, int z, Chunk dat, int ci); +Chunk fetch_chunk(int x, int y, int z, int ci, int h); void purge_chunks(int ci); \ No newline at end of file diff --git a/main.c b/main.c index 48f0fef..9578566 100644 --- a/main.c +++ b/main.c @@ -100,7 +100,7 @@ void *render_chunks(void *args) { *cube_count = gen_cubes(*args2.cube, *args2.text, *args2.cubeO, *args2.textO, args2.pos[0] / CHUNK_LENGTH, args2.pos[1] / CHUNK_LENGTH, - args2.pos[2] / CHUNK_LENGTH, 0, 0, args2.i2); + args2.pos[2] / CHUNK_LENGTH, 0, args2.i2); *args2.is_render = 2; @@ -132,11 +132,11 @@ int main(void) { Vertex *text = malloc(CTRI_ALL); Vertex *cubeO = malloc(CTRI_ALL); Vertex *textO = malloc(CTRI_ALL); - int bleh = (CHUNK_DIAMETER_H + MAX_R * 2) * (CHUNK_DIAMETER_V + MAX_R * 2); + int bleh = (CHUNK_DIAMETER_H) * (CHUNK_DIAMETER_V); int *i2 = calloc(bleh, sizeof(int)); int cube_count = gen_cubes(cube, text, cubeO, textO, 10240 / CHUNK_LENGTH, - 64 / CHUNK_LENGTH, 10240 / CHUNK_LENGTH, 0, 1, i2); + 64 / CHUNK_LENGTH, 10240 / CHUNK_LENGTH, 1, i2); GLuint vertex_buffer[2]; GLuint vertex_array; @@ -188,10 +188,10 @@ int main(void) { vec3 oldPos = {0, 0, 0}; Chunk ch7; ch7.exists = 0; - int state = cube_exists(pos[0], pos[1], pos[2], ch7, 0, 0); + int state = cube_exists(pos[0], pos[1], pos[2], ch7, 0); while (1) { - if (state != cube_exists(pos[0], pos[1], pos[2], ch7, 0, 0)) + if (state != cube_exists(pos[0], pos[1], pos[2], ch7, 0)) break; pos[1] += (state ? 1 : -1); }