1 #ifndef __GNUC__ 2 #pragma once 3 #endif 4 #ifndef __XR_LEVEL_GLOWS_H__ 5 #define __XR_LEVEL_GLOWS_H__ 6 7 #include <vector> 8 #include "xr_vector3.h" 9 10 namespace xray_re { 11 12 // xrLC v5, v8 13 struct fsl_glow_v5 { 14 fvector3 position; 15 float radius; 16 uint32_t texture_id; 17 uint32_t shader_id; 18 }; 19 20 // xrLC v13+ 21 #pragma pack(push, 1) 22 struct fsl_glow_v13 { 23 fvector3 position; 24 float radius; 25 uint16_t shader_texture_id; 26 }; 27 #pragma pack(pop) 28 29 // in-memory structure 30 struct glow_data { 31 fvector3 position; 32 float radius; 33 uint16_t shader_id; 34 uint16_t texture_id; 35 }; 36 37 TYPEDEF_STD_VECTOR_PTR(glow_data) 38 39 class xr_reader; 40 class xr_writer; 41 42 class xr_level_glows { 43 public: 44 xr_level_glows(uint32_t xrlc_version, xr_reader& r); 45 virtual ~xr_level_glows(); 46 47 void load(uint32_t xrlc_version, xr_reader& r); 48 void save(xr_writer& w) const; 49 50 const glow_data_vec& glows() const; 51 52 private: 53 void load_v5(xr_reader& r); 54 void load_v13(xr_reader& r); 55 56 private: 57 glow_data_vec m_glows; 58 }; 59 xr_level_glows(uint32_t xrlc_version,xr_reader & r)60inline xr_level_glows::xr_level_glows(uint32_t xrlc_version, xr_reader& r) 61 { 62 load(xrlc_version, r); 63 } 64 glows()65inline const glow_data_vec& xr_level_glows::glows() const { return m_glows; } 66 67 } // end of namespace xray_re 68 69 #endif 70