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()7 xr_level_hom::~xr_level_hom()
8 {
9 	delete[] m_polys;
10 }
11 
load(xr_reader & r)12 void 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) const25 void 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