1 #ifndef __GNUC__
2 #pragma once
3 #endif
4 #ifndef __XR_SHADERS_XRLC_LIB_H__
5 #define __XR_SHADERS_XRLC_LIB_H__
6 
7 #include <string>
8 #include <vector>
9 #include "xr_types.h"
10 
11 namespace xray_re {
12 
13 class xr_reader;
14 
15 const size_t SHADER_XRLC_SIZE = 128 + 16;
16 
17 struct xr_shader_xrlc {
18 	std::string	name;
19 	union {
20 		uint32_t	dummy;
21 		struct {
22 			uint32_t	collision:1;
23 			uint32_t	rendering:1;
24 			uint32_t	optimize_uv:1;
25 			uint32_t	light_vertex:1;
26 			uint32_t	light_cast_shadow:1;
27 			uint32_t	light_sharp:1;
28 			uint32_t	unused:26;
29 		};
30 	};
31 	float		vert_translucency;
32 	float		vert_ambient;
33 	float		lm_density;
34 };
35 
TYPEDEF_STD_VECTOR_PTR(xr_shader_xrlc)36 TYPEDEF_STD_VECTOR_PTR(xr_shader_xrlc)
37 
38 class xr_shaders_xrlc_lib {
39 public:
40 	virtual		~xr_shaders_xrlc_lib();
41 
42 	bool		load(const char* path, const char* name);
43 	void		load(xr_reader& r);
44 
45 	const xr_shader_xrlc_vec&	shaders() const;
46 
47 private:
48 	xr_shader_xrlc_vec	m_shaders;
49 };
50 
shaders()51 inline const xr_shader_xrlc_vec& xr_shaders_xrlc_lib::shaders() const { return m_shaders; }
52 
53 } // end of namespace xray_re
54 
55 #endif
56