1 #ifndef __GNUC__ 2 #pragma once 3 #endif 4 #ifndef __XR_LEVEL_FOG_VOL_H__ 5 #define __XR_LEVEL_FOG_VOL_H__ 6 7 #include <string> 8 #include <vector> 9 #include "xr_matrix.h" 10 11 namespace xray_re { 12 13 const uint16_t FOG_VOL_VERSION_2 = 2; 14 const uint16_t FOG_VOL_VERSION_3 = 3; 15 16 struct fog_vol_data { 17 fog_vol_data(); 18 ~fog_vol_data(); 19 std::string ltx; 20 fmatrix xform; 21 uint32_t num_particles; 22 fmatrix* particles; 23 }; 24 fog_vol_data()25inline fog_vol_data::fog_vol_data(): particles(0) {} ~fog_vol_data()26inline fog_vol_data::~fog_vol_data() { delete[] particles; } 27 28 TYPEDEF_STD_VECTOR_PTR(fog_vol_data) 29 30 class xr_reader; 31 class xr_writer; 32 33 class xr_level_fog_vol { 34 public: 35 xr_level_fog_vol(xr_reader& r); 36 virtual ~xr_level_fog_vol(); 37 38 void load(xr_reader& r); 39 void save(xr_writer& w) const; 40 41 uint16_t version() const; 42 const fog_vol_data_vec& fog_vols() const; 43 44 private: 45 uint16_t m_version; 46 fog_vol_data_vec m_fog_vols; 47 }; 48 xr_level_fog_vol(xr_reader & r)49inline xr_level_fog_vol::xr_level_fog_vol(xr_reader& r) { load(r); } version()50inline uint16_t xr_level_fog_vol::version() const { return m_version; } fog_vols()51inline const fog_vol_data_vec& xr_level_fog_vol::fog_vols() const { return m_fog_vols; } 52 53 } // end of namespace xray_re 54 55 #endif 56