1 #ifndef __GNUC__
2 #pragma once
3 #endif
4 #ifndef __XR_LEVEL_SECTORS_H__
5 #define __XR_LEVEL_SECTORS_H__
6 
7 #include <vector>
8 #include "xr_types.h"
9 
10 namespace xray_re {
11 
12 enum {
13 	FSP_PORTALS	= 0x1,
14 	FSP_ROOT	= 0x2,
15 };
16 
17 struct sector_data {
18 	uint32_t		root;
19 	std::vector<uint16_t>	portals;
20 };
21 
22 TYPEDEF_STD_VECTOR_PTR(sector_data)
23 
24 class xr_reader;
25 class xr_writer;
26 
27 class xr_level_sectors {
28 public:
29 				xr_level_sectors(uint32_t xrlc_version, xr_reader& r);
30 	virtual			~xr_level_sectors();
31 
32 	void			load(uint32_t xrlc_version, xr_reader& r);
33 	void			save(xr_writer& w) const;
34 
35 	const sector_data_vec&	sectors() const;
36 
37 private:
38 	void			load_v5(xr_reader& r);
39 	void			load_v13(xr_reader& r);
40 
41 private:
42 	sector_data_vec		m_sectors;
43 };
44 
xr_level_sectors(uint32_t xrlc_version,xr_reader & r)45 inline xr_level_sectors::xr_level_sectors(uint32_t xrlc_version, xr_reader& r)
46 {
47 	load(xrlc_version, r);
48 }
49 
sectors()50 inline const sector_data_vec& xr_level_sectors::sectors() const { return m_sectors; }
51 
52 } // end of namespace xray_re
53 
54 #endif
55