You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
973 B
41 lines
973 B
#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
|
|
|