1 #ifndef __GNUC__
2 #pragma once
3 #endif
4 #ifndef __XR_LEVEL_PS_STATIC_H__
5 #define __XR_LEVEL_PS_STATIC_H__
6 
7 #include <string>
8 #include <vector>
9 #include "xr_matrix.h"
10 
11 namespace xray_re {
12 
13 const uint32_t PS_VERSION_0 = 0;	// implicit
14 const uint32_t PS_VERSION_1 = 1;	// introduced in Clear Sky
15 
16 enum {
17 	PS_CHUNK_VERSION	= 0x0000,	// CS only
18 };
19 
20 struct particle_data {
21 	uint16_t	extra;
22 	std::string	reference;
23 	fmatrix		xform;
24 };
25 
26 TYPEDEF_STD_VECTOR_PTR(particle_data);
27 
28 class xr_reader;
29 class xr_writer;
30 
31 class xr_level_ps_static {
32 public:
33 				xr_level_ps_static(xr_reader& r);
34 				xr_level_ps_static();
35 	virtual			~xr_level_ps_static();
36 
37 	bool			load(const char* path, const char* name);
38 	bool			save(const char* path, const char* name);
39 	void			load(xr_reader& r);
40 	void			save(xr_writer& w) const;
41 
42 	uint32_t		version() const;
43 	uint32_t&		version();
44 	const particle_data_vec&particles() const;
45 
46 private:
47 	uint32_t		m_version;
48 	particle_data_vec	m_particles;
49 };
50 
xr_level_ps_static(xr_reader & r)51 inline xr_level_ps_static::xr_level_ps_static(xr_reader& r) { load(r); }
xr_level_ps_static()52 inline xr_level_ps_static::xr_level_ps_static(): m_version(PS_VERSION_0) {}
version()53 inline uint32_t xr_level_ps_static::version() const { return m_version; }
version()54 inline uint32_t& xr_level_ps_static::version() { return m_version; }
particles()55 inline const particle_data_vec& xr_level_ps_static::particles() const { return m_particles; }
56 
57 } // end of namespace xray_re
58 
59 #endif
60