//
// Created by Tristan on 11/11/2025.
//

#ifndef WMO_H
#define WMO_H

#include "wmo_structs.h"

void get_wmo_group_names(HANDLE hMPQ, WMORootData *wmo_root_data, const char *wmo_file_path);
void get_mosb_skybox(const WMORootData *wmo_root_data);
void parse_mohd_chunk(const WMORootData *wmo_root_data);
void parse_mopv_chunk(const WMORootData *wmo_root_data);
void parse_mopt_chunk(const WMORootData *wmo_root_data);
void parse_mopr_chunk(const WMORootData *wmo_root_data);
void parse_mogp_sub_chunks(const char *mogp_data_buffer, DWORD mogp_data_size, WMOGroupData *out_group_data);
WMOGroupData parse_wmo_group_file(ArchiveManager *archives, const char *group_file_path);
void extract_wmo_geometry(const WMORootData *wmo_root_data, FILE *output_file);
void wmo_load_textures_to_gpu(ArchiveManager* manager, WMORootData* root);

bool smopoly_is_trans_face(SMOPolyFlags flags);
bool smopoly_is_color(SMOPolyFlags flags);
bool smopoly_is_render_face(SMOPolyFlags flags);
bool smopoly_is_collidable(SMOPolyFlags flags);

#endif //WMO_H
