1 #include "xr_level_hom.h" 2 #include "xr_reader.h" 3 #include "xr_writer.h" 4 5 using namespace xray_re; 6 ~xr_level_hom()7xr_level_hom::~xr_level_hom() 8 { 9 delete[] m_polys; 10 } 11 load(xr_reader & r)12void xr_level_hom::load(xr_reader& r) 13 { 14 uint32_t version; 15 if (!r.r_chunk(HOM_CHUNK_VERSION, version)) 16 xr_not_expected(); 17 xr_assert(version == HOM_VERSION); 18 size_t size = r.find_chunk(HOM_CHUNK_POLYGONS); 19 xr_assert(size && (size % sizeof(hom_poly) == 0)); 20 m_polys = new hom_poly[size /= sizeof(hom_poly)]; 21 r.r_cseq(size, m_polys); 22 m_num_polys = uint32_t(size & UINT32_MAX); 23 } 24 save(xr_writer & w) const25void xr_level_hom::save(xr_writer& w) const 26 { 27 w.w_chunk<uint32_t>(HOM_CHUNK_VERSION, HOM_VERSION); 28 w.open_chunk(HOM_CHUNK_POLYGONS); 29 w.w_cseq(m_num_polys, m_polys); 30 w.close_chunk(); 31 } 32