1 #ifndef __GNUC__
2 #pragma once
3 #endif
4 #ifndef __XR_BLENDER_H__
5 #define __XR_BLENDER_H__
6 
7 #include "xr_types.h"
8 
9 namespace xray_re {
10 
11 class xr_reader;
12 class xr_writer;
13 
14 struct blender_desc {
15 	uint64_t	clsid;
16 	char		name[128];
17 	char		owner[32];
18 	uint32_t	time;
19 	uint16_t	version;
20 	uint16_t	__unused_;
21 };
22 
23 class xr_blender {
24 public:
25 	virtual			~xr_blender();
26 
27 	virtual void		load(xr_reader& r);
28 	virtual void		save(xr_writer& w) const;
29 
30 	virtual const char*	comment() const = 0;
31 	virtual bool		can_be_detailed() const;
32 	virtual bool		can_be_lmapped() const;
33 
34 protected:
35 	blender_desc		m_desc;
36 };
37 
38 class xr_blender_accum_direct: public xr_blender {
39 public:
40 };
41 
42 class xr_blender_accum_direct_mask: public xr_blender {
43 public:
44 };
45 
46 class xr_blender_accum_point: public xr_blender {
47 public:
48 };
49 
50 class xr_blender_accum_reflected: public xr_blender {
51 public:
52 };
53 
54 class xr_blender_accum_spot: public xr_blender {
55 public:
56 };
57 
58 class xr_blender_bloom_build: public xr_blender {
59 public:
60 };
61 
62 class xr_blender_blur: public xr_blender {
63 public:
64 	virtual const char*	comment() const;
65 };
66 
67 class xr_blender_bmmd: public xr_blender {
68 public:
69 	virtual const char*	comment() const;
70 	virtual bool		can_be_detailed() const;
71 	virtual bool		can_be_lmapped() const;
72 };
73 
74 class xr_blender_combine: public xr_blender {
75 public:
76 };
77 
78 class xr_blender_default: public xr_blender {
79 public:
80 	virtual const char*	comment() const;
81 	virtual bool		can_be_detailed() const;
82 	virtual bool		can_be_lmapped() const;
83 };
84 
85 class xr_blender_default_aref: public xr_blender {
86 public:
87 	virtual const char*	comment() const;
88 	virtual bool		can_be_detailed() const;
89 	virtual bool		can_be_lmapped() const;
90 };
91 
92 class xr_blender_deffer_aref: public xr_blender {
93 public:
94 };
95 
96 class xr_blender_deffer_flat: public xr_blender {
97 public:
98 };
99 
100 class xr_blender_deffer_model: public xr_blender {
101 public:
102 };
103 
104 class xr_blender_detail_still: public xr_blender {
105 public:
106 	virtual const char*	comment() const;
107 };
108 
109 class xr_blender_editor_selection: public xr_blender {
110 public:
111 	virtual const char*	comment() const;
112 };
113 
114 class xr_blender_editor_wire: public xr_blender {
115 public:
116 	virtual const char*	comment() const;
117 };
118 
119 class xr_blender_la_em_b: public xr_blender {
120 public:
121 	virtual const char*	comment() const;
122 	virtual bool		can_be_lmapped() const;
123 };
124 
125 class xr_blender_light_occq: public xr_blender {
126 public:
127 };
128 
129 class xr_blender_lm_eb_b: public xr_blender {
130 public:
131 	virtual const char*	comment() const;
132 	virtual bool		can_be_lmapped() const;
133 };
134 
135 class xr_blender_luminance: public xr_blender {
136 public:
137 };
138 
139 class xr_blender_model: public xr_blender {
140 public:
141 	virtual const char*	comment() const;
142 };
143 
144 class xr_blender_model_eb_b: public xr_blender {
145 public:
146 	virtual const char*	comment() const;
147 };
148 
149 class xr_blender_particle: public xr_blender {
150 public:
151 	virtual const char*	comment() const;
152 };
153 
154 class xr_blender_screen_gray: public xr_blender {
155 public:
156 	virtual const char*	comment() const;
157 };
158 
159 class xr_blender_screen_set: public xr_blender {
160 public:
161 	virtual const char*	comment() const;
162 };
163 
164 class xr_blender_sh_world: public xr_blender {
165 public:
166 	virtual const char*	comment() const;
167 };
168 
169 class xr_blender_tree: public xr_blender {
170 public:
171 	virtual const char*	comment() const;
172 	virtual bool		can_be_detailed() const;
173 };
174 
175 class xr_blender_vertex: public xr_blender {
176 public:
177 	virtual const char*	comment() const;
178 	virtual bool		can_be_detailed() const;
179 };
180 
181 class xr_blender_vertex_aref: public xr_blender {
182 public:
183 	virtual const char*	comment() const;
184 };
185 
186 xr_blender* create_blender(uint64_t clsid);
187 
188 } // end of namespace xray_re
189 
190 #endif
191