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)51inline xr_level_ps_static::xr_level_ps_static(xr_reader& r) { load(r); } xr_level_ps_static()52inline xr_level_ps_static::xr_level_ps_static(): m_version(PS_VERSION_0) {} version()53inline uint32_t xr_level_ps_static::version() const { return m_version; } version()54inline uint32_t& xr_level_ps_static::version() { return m_version; } particles()55inline const particle_data_vec& xr_level_ps_static::particles() const { return m_particles; } 56 57 } // end of namespace xray_re 58 59 #endif 60