1 #include "xr_scene.h"
2 #include "xr_scene_particles.h"
3 #include "xr_reader.h"
4 #include "xr_writer.h"
5 
6 using namespace xray_re;
7 
xr_particle_object(xr_scene & scene)8 xr_particle_object::xr_particle_object(xr_scene& scene):
9 	xr_custom_object(scene, TOOLS_CLASS_PARTICLE) {}
10 
~xr_particle_object()11 xr_particle_object::~xr_particle_object() {}
12 
load(xr_reader & r)13 void xr_particle_object::load(xr_reader& r)
14 {
15 	uint16_t version;
16 	if (!r.r_chunk<uint16_t>(CPSOBJECT_CHUNK_VERSION, version))
17 		xr_not_expected();
18 	xr_assert(version == CPSOBJECT_VERSION);
19 	xr_custom_object::load(r);
20 	if (!r.find_chunk(CPSOBJECT_CHUNK_REFERENCE))
21 		xr_not_expected();
22 	r.r_sz(m_reference);
23 	r.debug_find_chunk();
24 }
25 
save_v12(xr_ini_writer * w) const26 void xr_particle_object::save_v12(xr_ini_writer* w) const
27 {
28 	xr_custom_object::save_v12(w);
29 
30 	w->write("game_type", 65535);
31 	w->write("ref_name", m_reference, false);
32 	w->write("version", CPSOBJECT_VERSION_V12);
33 }
34 
save(xr_writer & w) const35 void xr_particle_object::save(xr_writer& w) const
36 {
37 	xr_custom_object::save(w);
38 	w.w_chunk<uint16_t>(CPSOBJECT_CHUNK_VERSION, CPSOBJECT_VERSION);
39 	w.w_chunk(CPSOBJECT_CHUNK_REFERENCE, m_reference);
40 }
41 
42 ////////////////////////////////////////////////////////////////////////////////
43 
xr_scene_particles(xr_scene & scene)44 xr_scene_particles::xr_scene_particles(xr_scene& scene):
45 	xr_scene_objects(scene, "ps.part", SCENE_CHUNK_PARTICLES) {}
46 
~xr_scene_particles()47 xr_scene_particles::~xr_scene_particles() {}
48 
load(xr_reader & r)49 void xr_scene_particles::load(xr_reader& r)
50 {
51 	uint16_t version = 0;
52 	r.r_chunk<uint16_t>(TOOLS_CHUNK_VERSION, version);
53 	xr_assert(version == 0);
54 	xr_scene_objects::load(r);
55 }
56 
save(xr_writer & w) const57 void xr_scene_particles::save(xr_writer& w) const
58 {
59 	xr_scene_objects::save(w);
60 	w.w_chunk<uint16_t>(TOOLS_CHUNK_VERSION, 0);
61 }
62 
save_v12(xr_ini_writer * w) const63 void xr_scene_particles::save_v12(xr_ini_writer* w) const
64 {
65 	w->open_section("main");
66 	w->write("objects_count", this->objects().size());
67 	w->write("version", 0);
68 	w->close_section();
69 
70 	scene().write_revision(w);
71 
72 	xr_scene_objects::save_v12(w);
73 }
74