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()25 inline fog_vol_data::fog_vol_data(): particles(0) {}
~fog_vol_data()26 inline 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)49 inline xr_level_fog_vol::xr_level_fog_vol(xr_reader& r) { load(r); }
version()50 inline uint16_t xr_level_fog_vol::version() const { return m_version; }
fog_vols()51 inline 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