| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #ifndef INCLUDE_CAVE_PARSE_H
- #define INCLUDE_CAVE_PARSE_H
- typedef struct
- {
- unsigned char block;
- unsigned char data;
- unsigned char light:4;
- unsigned char skylight:4;
- } raw_block;
- // this is the old fully-decoded chunk
- typedef struct
- {
- int xpos, zpos, max_y;
- int height[16][16];
- raw_block rb[16][16][256]; // [z][x][y] which becomes [y][x][z] in stb
- } chunk;
- chunk *get_decoded_chunk(int chunk_x, int chunk_z);
- #define NUM_SEGMENTS 16
- typedef struct
- {
- int max_y, xpos, zpos;
- unsigned char *blockdata[NUM_SEGMENTS];
- unsigned char *data[NUM_SEGMENTS];
- unsigned char *skylight[NUM_SEGMENTS];
- unsigned char *light[NUM_SEGMENTS];
-
- void *pointer_to_free;
- int refcount; // this allows multi-threaded building without wrapping in ANOTHER struct
- } fast_chunk;
- fast_chunk *get_decoded_fastchunk(int chunk_x, int chunk_z); // cache, never call free()
- fast_chunk *get_decoded_fastchunk_uncached(int chunk_x, int chunk_z);
- #endif
|