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)45inline xr_level_sectors::xr_level_sectors(uint32_t xrlc_version, xr_reader& r) 46 { 47 load(xrlc_version, r); 48 } 49 sectors()50inline const sector_data_vec& xr_level_sectors::sectors() const { return m_sectors; } 51 52 } // end of namespace xray_re 53 54 #endif 55