27#define WOWS_ERROR_NOT_A_FILE 12
28#define WOWS_ERROR_NOT_A_DIR 13
29#define WOWS_ERROR_UNKNOWN 7
39#define WOWS_VER_UNKNOWN "unknown"
40#define WOWS_ID_UNKNOWN 0
42#define WOWS_VER_SET3_XYNUV2IIIWWTBPC "set3/xyznuv2iiiwwtbpc"
43#define WOWS_ID_SET3_XYNUV2IIIWWTBPC 1
45#define WOWS_VER_SET3_XYNUV2TBIPC "set3/xyznuv2tbipc"
46#define WOWS_ID_SET3_XYNUV2TBIPC 2
48#define WOWS_VER_SET3_XYNUV2TBPC "set3/xyznuv2tbpc"
49#define WOWS_ID_SET3_XYNUV2TBPC 3
51#define WOWS_VER_SET3_XYNUVIIIWWPC "set3/xyznuviiiwwpc"
52#define WOWS_ID_SET3_XYNUVIIIWWPC 4
54#define WOWS_VER_SET3_XYNUVIIIWWR "set3/xyznuviiiwwr"
55#define WOWS_ID_SET3_XYNUVIIIWWR 5
57#define WOWS_VER_SET3_XYNUVIIIWWTBPC "set3/xyznuviiiwwtbpc"
58#define WOWS_ID_SET3_XYNUVIIIWWTBPC 6
60#define WOWS_VER_SET3_XYNUVPC "set3/xyznuvpc"
61#define WOWS_ID_SET3_XYNUVPC 7
63#define WOWS_VER_SET3_XYNUVRPC "set3/xyznuvrpc"
64#define WOWS_ID_SET3_XYNUVRPC 8
65#define WOWS_SIZE_XYNUVRPC 28
67#define WOWS_VER_SET3_XYNUVTBIPC "set3/xyznuvtbipc"
68#define WOWS_ID_SET3_XYNUVTBIPC 9
70#define WOWS_VER_SET3_XYNUVTBOI "set3/xyznuvtboi"
71#define WOWS_ID_SET3_XYNUVTBOI 10
73#define WOWS_VER_SET3_XYNUVTBPC "set3/xyznuvtbpc"
74#define WOWS_ID_SET3_XYNUVTBPC 11
84#define WOWS_VERTEX_FIELDS \
131#define WOWS_HEADER_SIZE 72
155#define WOWS_BLOC_INFO_SIZE 16
172#define WOWS_VERTEX_META_SIZE 32
210#define WOWS_INDEX_META_SIZE 16
338 uint32_t n_sections);
int wows_parse_geometry_fp(FILE *input, wows_geometry **geometry_content)
Parse a .geometry file from an already-open FILE stream.
int wows_parse_geometry_buffer(char *contents, size_t length, wows_geometry **geometry_content)
Parse a .geometry file from a raw memory buffer.
int wows_geometry_free(wows_geometry *geometry_content)
Free all memory associated with a parsed geometry.
int wows_parse_geometry(char *input, wows_geometry **geometry_content)
Parse a .geometry file from a memory-mapped path.
int wows_geometry_to_glb_sections(wows_geometry *geometry, const char *output_path, const uint32_t *sections, uint32_t n_sections)
Export a subset of draw-call sections as a GLB file.
int wows_geometry_to_glb(wows_geometry *geometry, const char *output_path)
Export a full geometry as a binary glTF (GLB) file.
int wows_geometry_print(wows_geometry *geometry_content, bool verbose)
Print a human-readable summary of a parsed geometry to stdout.
Library context holding global parse settings.
Definition wows-geometry.h:259
bool is_le
Definition wows-geometry.h:261
uint8_t debug_level
Definition wows-geometry.h:260
char * err_msg
Definition wows-geometry.h:262
Decoded index buffer for one merged index stream.
Definition wows-geometry.h:229
uint16_t index_size
Definition wows-geometry.h:232
uint32_t index_count
Definition wows-geometry.h:231
uint8_t * raw_data
Definition wows-geometry.h:230
Draw-call descriptor mapping a render set to a slice of a merged buffer.
Definition wows-geometry.h:163
uint32_t items_offset
Definition wows-geometry.h:167
uint32_t items_count
Definition wows-geometry.h:168
uint32_t mapping_id
Definition wows-geometry.h:164
uint16_t packed_texel_density
Definition wows-geometry.h:166
uint16_t merged_buffer_index
Definition wows-geometry.h:165
Decoded vertex buffer for one merged vertex stream.
Definition wows-geometry.h:203
uint32_t vertex_count
Definition wows-geometry.h:205
uint8_t _vertex_type
Definition wows-geometry.h:206
uint8_t * raw_data
Definition wows-geometry.h:204
Top-level container for a fully parsed .geometry file.
Definition wows-geometry.h:241
wows_geometry_index_section_metadata * index_meta_sections
Definition wows-geometry.h:248
wows_geometry_header * header
Definition wows-geometry.h:242
wows_geometry_info * vertex_bloc_map
Definition wows-geometry.h:243
wows_geometry_vertex_section ** vertexes
Definition wows-geometry.h:249
wows_geometry_info * index_bloc_map
Definition wows-geometry.h:244
wows_geometry_vertex_section_metadata * vertex_meta_sections
Definition wows-geometry.h:246
wows_geometry_index_section ** indexes
Definition wows-geometry.h:250
Vertex with an extra 32-bit R attribute (R layouts).
Definition wows-geometry.h:125
WOWS_VERTEX_FIELDS uint32_t r
Definition wows-geometry.h:127
Vertex with tangent and binormal vectors (TB layouts).
Definition wows-geometry.h:110
uint32_t b
Definition wows-geometry.h:116
float _by
Definition wows-geometry.h:118
float _tx
Definition wows-geometry.h:113
WOWS_VERTEX_FIELDS uint32_t t
Definition wows-geometry.h:112
float _ty
Definition wows-geometry.h:114
float _bz
Definition wows-geometry.h:119
float _bx
Definition wows-geometry.h:117
float _tz
Definition wows-geometry.h:115
Minimal vertex containing only position, normal, and UV.
Definition wows-geometry.h:100
#define WOWS_VERTEX_FIELDS
Common vertex fields shared by every vertex layout.
Definition wows-geometry.h:84