1 #include "xr_shaders_xrlc_lib.h"
2 #include "xr_file_system.h"
3 #include "xr_utils.h"
4 
5 using namespace xray_re;
6 
~xr_shaders_xrlc_lib()7 xr_shaders_xrlc_lib::~xr_shaders_xrlc_lib()
8 {
9 	delete_elements(m_shaders);
10 }
11 
operator ()read_shader_xrlc12 struct read_shader_xrlc { void operator()(xr_shader_xrlc*& _s, xr_reader& r) {
13 	xr_shader_xrlc* s = new xr_shader_xrlc;
14 	_s = s;
15 	size_t pos = r.tell();
16 	r.r_sz(s->name);
17 	r.seek(pos + 128);
18 	s->dummy = r.r_u32();
19 	s->vert_translucency = r.r_float();
20 	s->vert_ambient = r.r_float();
21 	s->lm_density = r.r_float();
22 }};
23 
load(xr_reader & r)24 void xr_shaders_xrlc_lib::load(xr_reader& r)
25 {
26 	xr_assert(r.size()%SHADER_XRLC_SIZE == 0);
27 	r.r_seq(r.size()/SHADER_XRLC_SIZE, m_shaders, read_shader_xrlc());
28 }
29 
load(const char * path,const char * name)30 bool xr_shaders_xrlc_lib::load(const char* path, const char* name)
31 {
32 	xr_file_system& fs = xr_file_system::instance();
33 	xr_reader* r = fs.r_open(path, name);
34 	if (r == 0)
35 		return false;
36 	load(*r);
37 	fs.r_close(r);
38 	return true;
39 }
40