rev |
line source |
nuclear@0
|
1 /*
|
nuclear@0
|
2 Open Asset Import Library (assimp)
|
nuclear@0
|
3 ----------------------------------------------------------------------
|
nuclear@0
|
4
|
nuclear@0
|
5 Copyright (c) 2006-2012, assimp team
|
nuclear@0
|
6 All rights reserved.
|
nuclear@0
|
7
|
nuclear@0
|
8 Redistribution and use of this software in source and binary forms,
|
nuclear@0
|
9 with or without modification, are permitted provided that the
|
nuclear@0
|
10 following conditions are met:
|
nuclear@0
|
11
|
nuclear@0
|
12 * Redistributions of source code must retain the above
|
nuclear@0
|
13 copyright notice, this list of conditions and the
|
nuclear@0
|
14 following disclaimer.
|
nuclear@0
|
15
|
nuclear@0
|
16 * Redistributions in binary form must reproduce the above
|
nuclear@0
|
17 copyright notice, this list of conditions and the
|
nuclear@0
|
18 following disclaimer in the documentation and/or other
|
nuclear@0
|
19 materials provided with the distribution.
|
nuclear@0
|
20
|
nuclear@0
|
21 * Neither the name of the assimp team, nor the names of its
|
nuclear@0
|
22 contributors may be used to endorse or promote products
|
nuclear@0
|
23 derived from this software without specific prior
|
nuclear@0
|
24 written permission of the assimp team.
|
nuclear@0
|
25
|
nuclear@0
|
26 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
nuclear@0
|
27 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
nuclear@0
|
28 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
nuclear@0
|
29 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
nuclear@0
|
30 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
nuclear@0
|
31 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
nuclear@0
|
32 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
nuclear@0
|
33 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
nuclear@0
|
34 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
nuclear@0
|
35 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
nuclear@0
|
36 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
nuclear@0
|
37
|
nuclear@0
|
38 ----------------------------------------------------------------------
|
nuclear@0
|
39 */
|
nuclear@0
|
40
|
nuclear@0
|
41 /** @file BlenderScene.h
|
nuclear@0
|
42 * @brief Intermediate representation of a BLEND scene.
|
nuclear@0
|
43 */
|
nuclear@0
|
44 #ifndef INCLUDED_AI_BLEND_SCENE_H
|
nuclear@0
|
45 #define INCLUDED_AI_BLEND_SCENE_H
|
nuclear@0
|
46
|
nuclear@0
|
47 namespace Assimp {
|
nuclear@0
|
48 namespace Blender {
|
nuclear@0
|
49
|
nuclear@0
|
50 // Minor parts of this file are extracts from blender data structures,
|
nuclear@0
|
51 // declared in the ./source/blender/makesdna directory.
|
nuclear@0
|
52 // Stuff that is not used by Assimp is commented.
|
nuclear@0
|
53
|
nuclear@0
|
54
|
nuclear@0
|
55 // NOTE
|
nuclear@0
|
56 // this file serves as input data to the `./scripts/genblenddna.py`
|
nuclear@0
|
57 // script. This script generates the actual binding code to read a
|
nuclear@0
|
58 // blender file with a possibly different DNA into our structures.
|
nuclear@0
|
59 // Only `struct` declarations are considered and the following
|
nuclear@0
|
60 // rules must be obeyed in order for the script to work properly:
|
nuclear@0
|
61 //
|
nuclear@0
|
62 // * C++ style comments only
|
nuclear@0
|
63 //
|
nuclear@0
|
64 // * Structures may include the primitive types char, int, short,
|
nuclear@0
|
65 // float, double. Signedness specifiers are not allowed on
|
nuclear@0
|
66 // integers. Enum types are allowed, but they must have been
|
nuclear@0
|
67 // defined in this header.
|
nuclear@0
|
68 //
|
nuclear@0
|
69 // * Structures may aggregate other structures, unless not defined
|
nuclear@0
|
70 // in this header.
|
nuclear@0
|
71 //
|
nuclear@0
|
72 // * Pointers to other structures or primitive types are allowed.
|
nuclear@0
|
73 // No references or double pointers or arrays of pointers.
|
nuclear@0
|
74 // A pointer to a T is normally written as boost::shared_ptr, while a
|
nuclear@0
|
75 // pointer to an array of elements is written as boost::
|
nuclear@0
|
76 // shared_array. To avoid cyclic pointers, use raw pointers in
|
nuclear@0
|
77 // one direction.
|
nuclear@0
|
78 //
|
nuclear@0
|
79 // * Arrays can have maximally two-dimensions. Any non-pointer
|
nuclear@0
|
80 // type can form them.
|
nuclear@0
|
81 //
|
nuclear@0
|
82 // * Multiple fields can be declare in a single line (i.e `int a,b;`)
|
nuclear@0
|
83 // provided they are neither pointers nor arrays.
|
nuclear@0
|
84 //
|
nuclear@0
|
85 // * One of WARN, FAIL can be appended to the declaration (
|
nuclear@0
|
86 // prior to the semiolon to specifiy the error handling policy if
|
nuclear@0
|
87 // this field is missing in the input DNA). If none of those
|
nuclear@0
|
88 // is specified the default policy is to subtitute a default
|
nuclear@0
|
89 // value for the field.
|
nuclear@0
|
90 //
|
nuclear@0
|
91
|
nuclear@0
|
92 #define WARN // warn if field is missing, substitute default value
|
nuclear@0
|
93 #define FAIL // fail the import if the field does not exist
|
nuclear@0
|
94
|
nuclear@0
|
95 struct Object;
|
nuclear@0
|
96 struct MTex;
|
nuclear@0
|
97 struct Image;
|
nuclear@0
|
98
|
nuclear@0
|
99 #define AI_BLEND_MESH_MAX_VERTS 2000000000L
|
nuclear@0
|
100
|
nuclear@0
|
101 // -------------------------------------------------------------------------------
|
nuclear@0
|
102 struct ID : ElemBase {
|
nuclear@0
|
103
|
nuclear@0
|
104 char name[24] WARN;
|
nuclear@0
|
105 short flag;
|
nuclear@0
|
106 };
|
nuclear@0
|
107
|
nuclear@0
|
108 // -------------------------------------------------------------------------------
|
nuclear@0
|
109 struct ListBase : ElemBase {
|
nuclear@0
|
110
|
nuclear@0
|
111 boost::shared_ptr<ElemBase> first;
|
nuclear@0
|
112 boost::shared_ptr<ElemBase> last;
|
nuclear@0
|
113 };
|
nuclear@0
|
114
|
nuclear@0
|
115
|
nuclear@0
|
116 // -------------------------------------------------------------------------------
|
nuclear@0
|
117 struct PackedFile : ElemBase {
|
nuclear@0
|
118 int size WARN;
|
nuclear@0
|
119 int seek WARN;
|
nuclear@0
|
120 boost::shared_ptr< FileOffset > data WARN;
|
nuclear@0
|
121 };
|
nuclear@0
|
122
|
nuclear@0
|
123 // -------------------------------------------------------------------------------
|
nuclear@0
|
124 struct GroupObject : ElemBase {
|
nuclear@0
|
125
|
nuclear@0
|
126 boost::shared_ptr<GroupObject> prev,next FAIL;
|
nuclear@0
|
127 boost::shared_ptr<Object> ob;
|
nuclear@0
|
128 };
|
nuclear@0
|
129
|
nuclear@0
|
130 // -------------------------------------------------------------------------------
|
nuclear@0
|
131 struct Group : ElemBase {
|
nuclear@0
|
132 ID id FAIL;
|
nuclear@0
|
133 int layer;
|
nuclear@0
|
134
|
nuclear@0
|
135 boost::shared_ptr<GroupObject> gobject;
|
nuclear@0
|
136 };
|
nuclear@0
|
137
|
nuclear@0
|
138 // -------------------------------------------------------------------------------
|
nuclear@0
|
139 struct World : ElemBase {
|
nuclear@0
|
140 ID id FAIL;
|
nuclear@0
|
141
|
nuclear@0
|
142 };
|
nuclear@0
|
143
|
nuclear@0
|
144 // -------------------------------------------------------------------------------
|
nuclear@0
|
145 struct MVert : ElemBase {
|
nuclear@0
|
146 float co[3] FAIL;
|
nuclear@0
|
147 float no[3] FAIL;
|
nuclear@0
|
148 char flag;
|
nuclear@0
|
149 int mat_nr WARN;
|
nuclear@0
|
150 int bweight;
|
nuclear@0
|
151 };
|
nuclear@0
|
152
|
nuclear@0
|
153 // -------------------------------------------------------------------------------
|
nuclear@0
|
154 struct MEdge : ElemBase {
|
nuclear@0
|
155 int v1, v2 FAIL;
|
nuclear@0
|
156 char crease, bweight;
|
nuclear@0
|
157 short flag;
|
nuclear@0
|
158 };
|
nuclear@0
|
159
|
nuclear@0
|
160 // -------------------------------------------------------------------------------
|
nuclear@0
|
161 struct MLoop : ElemBase {
|
nuclear@0
|
162 int v, e;
|
nuclear@0
|
163 };
|
nuclear@0
|
164
|
nuclear@0
|
165 // -------------------------------------------------------------------------------
|
nuclear@0
|
166 struct MLoopUV : ElemBase {
|
nuclear@0
|
167 float uv[2];
|
nuclear@0
|
168 int flag;
|
nuclear@0
|
169 };
|
nuclear@0
|
170
|
nuclear@0
|
171 // -------------------------------------------------------------------------------
|
nuclear@0
|
172 // Note that red and blue are not swapped, as with MCol
|
nuclear@0
|
173 struct MLoopCol : ElemBase {
|
nuclear@0
|
174 char r, g, b, a;
|
nuclear@0
|
175 };
|
nuclear@0
|
176
|
nuclear@0
|
177 // -------------------------------------------------------------------------------
|
nuclear@0
|
178 struct MPoly : ElemBase {
|
nuclear@0
|
179 int loopstart;
|
nuclear@0
|
180 int totloop;
|
nuclear@0
|
181 short mat_nr;
|
nuclear@0
|
182 char flag;
|
nuclear@0
|
183 };
|
nuclear@0
|
184
|
nuclear@0
|
185 // -------------------------------------------------------------------------------
|
nuclear@0
|
186 struct MTexPoly : ElemBase {
|
nuclear@0
|
187 Image* tpage;
|
nuclear@0
|
188 char flag, transp;
|
nuclear@0
|
189 short mode, tile, pad;
|
nuclear@0
|
190 };
|
nuclear@0
|
191
|
nuclear@0
|
192 // -------------------------------------------------------------------------------
|
nuclear@0
|
193 struct MCol : ElemBase {
|
nuclear@0
|
194 char r,g,b,a FAIL;
|
nuclear@0
|
195 };
|
nuclear@0
|
196
|
nuclear@0
|
197 // -------------------------------------------------------------------------------
|
nuclear@0
|
198 struct MFace : ElemBase {
|
nuclear@0
|
199 int v1,v2,v3,v4 FAIL;
|
nuclear@0
|
200 int mat_nr FAIL;
|
nuclear@0
|
201 char flag;
|
nuclear@0
|
202 };
|
nuclear@0
|
203
|
nuclear@0
|
204 // -------------------------------------------------------------------------------
|
nuclear@0
|
205 struct TFace : ElemBase {
|
nuclear@0
|
206 float uv[4][2] FAIL;
|
nuclear@0
|
207 int col[4] FAIL;
|
nuclear@0
|
208 char flag;
|
nuclear@0
|
209 short mode;
|
nuclear@0
|
210 short tile;
|
nuclear@0
|
211 short unwrap;
|
nuclear@0
|
212 };
|
nuclear@0
|
213
|
nuclear@0
|
214 // -------------------------------------------------------------------------------
|
nuclear@0
|
215 struct MTFace : ElemBase {
|
nuclear@0
|
216
|
nuclear@0
|
217 float uv[4][2] FAIL;
|
nuclear@0
|
218 char flag;
|
nuclear@0
|
219 short mode;
|
nuclear@0
|
220 short tile;
|
nuclear@0
|
221 short unwrap;
|
nuclear@0
|
222
|
nuclear@0
|
223 // boost::shared_ptr<Image> tpage;
|
nuclear@0
|
224 };
|
nuclear@0
|
225
|
nuclear@0
|
226 // -------------------------------------------------------------------------------
|
nuclear@0
|
227 struct MDeformWeight : ElemBase {
|
nuclear@0
|
228 int def_nr FAIL;
|
nuclear@0
|
229 float weight FAIL;
|
nuclear@0
|
230 };
|
nuclear@0
|
231
|
nuclear@0
|
232 // -------------------------------------------------------------------------------
|
nuclear@0
|
233 struct MDeformVert : ElemBase {
|
nuclear@0
|
234
|
nuclear@0
|
235 vector<MDeformWeight> dw WARN;
|
nuclear@0
|
236 int totweight;
|
nuclear@0
|
237 };
|
nuclear@0
|
238
|
nuclear@0
|
239 // -------------------------------------------------------------------------------
|
nuclear@0
|
240 struct Material : ElemBase {
|
nuclear@0
|
241 ID id FAIL;
|
nuclear@0
|
242
|
nuclear@0
|
243 float r,g,b WARN;
|
nuclear@0
|
244 float specr,specg,specb WARN;
|
nuclear@0
|
245 short har;
|
nuclear@0
|
246 float ambr,ambg,ambb WARN;
|
nuclear@0
|
247 float mirr,mirg,mirb;
|
nuclear@0
|
248 float emit WARN;
|
nuclear@0
|
249 float alpha WARN;
|
nuclear@0
|
250 float ref;
|
nuclear@0
|
251 float translucency;
|
nuclear@0
|
252 float roughness;
|
nuclear@0
|
253 float darkness;
|
nuclear@0
|
254 float refrac;
|
nuclear@0
|
255
|
nuclear@0
|
256 boost::shared_ptr<Group> group;
|
nuclear@0
|
257
|
nuclear@0
|
258 short diff_shader WARN;
|
nuclear@0
|
259 short spec_shader WARN;
|
nuclear@0
|
260
|
nuclear@0
|
261 boost::shared_ptr<MTex> mtex[18];
|
nuclear@0
|
262 };
|
nuclear@0
|
263
|
nuclear@0
|
264 // -------------------------------------------------------------------------------
|
nuclear@0
|
265 struct Mesh : ElemBase {
|
nuclear@0
|
266 ID id FAIL;
|
nuclear@0
|
267
|
nuclear@0
|
268 int totface FAIL;
|
nuclear@0
|
269 int totedge FAIL;
|
nuclear@0
|
270 int totvert FAIL;
|
nuclear@0
|
271 int totloop;
|
nuclear@0
|
272 int totpoly;
|
nuclear@0
|
273
|
nuclear@0
|
274 short subdiv;
|
nuclear@0
|
275 short subdivr;
|
nuclear@0
|
276 short subsurftype;
|
nuclear@0
|
277 short smoothresh;
|
nuclear@0
|
278
|
nuclear@0
|
279 vector<MFace> mface FAIL;
|
nuclear@0
|
280 vector<MTFace> mtface;
|
nuclear@0
|
281 vector<TFace> tface;
|
nuclear@0
|
282 vector<MVert> mvert FAIL;
|
nuclear@0
|
283 vector<MEdge> medge WARN;
|
nuclear@0
|
284 vector<MLoop> mloop;
|
nuclear@0
|
285 vector<MLoopUV> mloopuv;
|
nuclear@0
|
286 vector<MLoopCol> mloopcol;
|
nuclear@0
|
287 vector<MPoly> mpoly;
|
nuclear@0
|
288 vector<MTexPoly> mtpoly;
|
nuclear@0
|
289 vector<MDeformVert> dvert;
|
nuclear@0
|
290 vector<MCol> mcol;
|
nuclear@0
|
291
|
nuclear@0
|
292 vector< boost::shared_ptr<Material> > mat FAIL;
|
nuclear@0
|
293 };
|
nuclear@0
|
294
|
nuclear@0
|
295 // -------------------------------------------------------------------------------
|
nuclear@0
|
296 struct Library : ElemBase {
|
nuclear@0
|
297 ID id FAIL;
|
nuclear@0
|
298
|
nuclear@0
|
299 char name[240] WARN;
|
nuclear@0
|
300 char filename[240] FAIL;
|
nuclear@0
|
301 boost::shared_ptr<Library> parent WARN;
|
nuclear@0
|
302 };
|
nuclear@0
|
303
|
nuclear@0
|
304 // -------------------------------------------------------------------------------
|
nuclear@0
|
305 struct Camera : ElemBase {
|
nuclear@0
|
306 enum Type {
|
nuclear@0
|
307 Type_PERSP = 0
|
nuclear@0
|
308 ,Type_ORTHO = 1
|
nuclear@0
|
309 };
|
nuclear@0
|
310
|
nuclear@0
|
311 ID id FAIL;
|
nuclear@0
|
312
|
nuclear@0
|
313 // struct AnimData *adt;
|
nuclear@0
|
314
|
nuclear@0
|
315 Type type,flag WARN;
|
nuclear@0
|
316 float angle WARN;
|
nuclear@0
|
317 //float passepartalpha, angle;
|
nuclear@0
|
318 //float clipsta, clipend;
|
nuclear@0
|
319 //float lens, ortho_scale, drawsize;
|
nuclear@0
|
320 //float shiftx, shifty;
|
nuclear@0
|
321
|
nuclear@0
|
322 //float YF_dofdist, YF_aperture;
|
nuclear@0
|
323 //short YF_bkhtype, YF_bkhbias;
|
nuclear@0
|
324 //float YF_bkhrot;
|
nuclear@0
|
325 };
|
nuclear@0
|
326
|
nuclear@0
|
327
|
nuclear@0
|
328 // -------------------------------------------------------------------------------
|
nuclear@0
|
329 struct Lamp : ElemBase {
|
nuclear@0
|
330
|
nuclear@0
|
331 enum FalloffType {
|
nuclear@0
|
332 FalloffType_Constant = 0x0
|
nuclear@0
|
333 ,FalloffType_InvLinear = 0x1
|
nuclear@0
|
334 ,FalloffType_InvSquare = 0x2
|
nuclear@0
|
335 //,FalloffType_Curve = 0x3
|
nuclear@0
|
336 //,FalloffType_Sliders = 0x4
|
nuclear@0
|
337 };
|
nuclear@0
|
338
|
nuclear@0
|
339 enum Type {
|
nuclear@0
|
340 Type_Local = 0x0
|
nuclear@0
|
341 ,Type_Sun = 0x1
|
nuclear@0
|
342 ,Type_Spot = 0x2
|
nuclear@0
|
343 ,Type_Hemi = 0x3
|
nuclear@0
|
344 ,Type_Area = 0x4
|
nuclear@0
|
345 //,Type_YFPhoton = 0x5
|
nuclear@0
|
346 };
|
nuclear@0
|
347
|
nuclear@0
|
348 ID id FAIL;
|
nuclear@0
|
349 //AnimData *adt;
|
nuclear@0
|
350
|
nuclear@0
|
351 Type type FAIL;
|
nuclear@0
|
352 short flags;
|
nuclear@0
|
353
|
nuclear@0
|
354 //int mode;
|
nuclear@0
|
355
|
nuclear@0
|
356 short colormodel, totex;
|
nuclear@0
|
357 float r,g,b,k WARN;
|
nuclear@0
|
358 //float shdwr, shdwg, shdwb;
|
nuclear@0
|
359
|
nuclear@0
|
360 float energy, dist, spotsize, spotblend;
|
nuclear@0
|
361 //float haint;
|
nuclear@0
|
362
|
nuclear@0
|
363 float att1, att2;
|
nuclear@0
|
364 //struct CurveMapping *curfalloff;
|
nuclear@0
|
365 FalloffType falloff_type;
|
nuclear@0
|
366
|
nuclear@0
|
367 //float clipsta, clipend, shadspotsize;
|
nuclear@0
|
368 //float bias, soft, compressthresh;
|
nuclear@0
|
369 //short bufsize, samp, buffers, filtertype;
|
nuclear@0
|
370 //char bufflag, buftype;
|
nuclear@0
|
371
|
nuclear@0
|
372 //short ray_samp, ray_sampy, ray_sampz;
|
nuclear@0
|
373 //short ray_samp_type;
|
nuclear@0
|
374 //short area_shape;
|
nuclear@0
|
375 //float area_size, area_sizey, area_sizez;
|
nuclear@0
|
376 //float adapt_thresh;
|
nuclear@0
|
377 //short ray_samp_method;
|
nuclear@0
|
378
|
nuclear@0
|
379 //short texact, shadhalostep;
|
nuclear@0
|
380
|
nuclear@0
|
381 //short sun_effect_type;
|
nuclear@0
|
382 //short skyblendtype;
|
nuclear@0
|
383 //float horizon_brightness;
|
nuclear@0
|
384 //float spread;
|
nuclear@0
|
385 float sun_brightness;
|
nuclear@0
|
386 //float sun_size;
|
nuclear@0
|
387 //float backscattered_light;
|
nuclear@0
|
388 //float sun_intensity;
|
nuclear@0
|
389 //float atm_turbidity;
|
nuclear@0
|
390 //float atm_inscattering_factor;
|
nuclear@0
|
391 //float atm_extinction_factor;
|
nuclear@0
|
392 //float atm_distance_factor;
|
nuclear@0
|
393 //float skyblendfac;
|
nuclear@0
|
394 //float sky_exposure;
|
nuclear@0
|
395 //short sky_colorspace;
|
nuclear@0
|
396
|
nuclear@0
|
397 // int YF_numphotons, YF_numsearch;
|
nuclear@0
|
398 // short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad;
|
nuclear@0
|
399 // float YF_causticblur, YF_ltradius;
|
nuclear@0
|
400
|
nuclear@0
|
401 // float YF_glowint, YF_glowofs;
|
nuclear@0
|
402 // short YF_glowtype, YF_pad2;
|
nuclear@0
|
403
|
nuclear@0
|
404 //struct Ipo *ipo;
|
nuclear@0
|
405 //struct MTex *mtex[18];
|
nuclear@0
|
406 // short pr_texture;
|
nuclear@0
|
407
|
nuclear@0
|
408 //struct PreviewImage *preview;
|
nuclear@0
|
409 };
|
nuclear@0
|
410
|
nuclear@0
|
411 // -------------------------------------------------------------------------------
|
nuclear@0
|
412 struct ModifierData : ElemBase {
|
nuclear@0
|
413 enum ModifierType {
|
nuclear@0
|
414 eModifierType_None = 0,
|
nuclear@0
|
415 eModifierType_Subsurf,
|
nuclear@0
|
416 eModifierType_Lattice,
|
nuclear@0
|
417 eModifierType_Curve,
|
nuclear@0
|
418 eModifierType_Build,
|
nuclear@0
|
419 eModifierType_Mirror,
|
nuclear@0
|
420 eModifierType_Decimate,
|
nuclear@0
|
421 eModifierType_Wave,
|
nuclear@0
|
422 eModifierType_Armature,
|
nuclear@0
|
423 eModifierType_Hook,
|
nuclear@0
|
424 eModifierType_Softbody,
|
nuclear@0
|
425 eModifierType_Boolean,
|
nuclear@0
|
426 eModifierType_Array,
|
nuclear@0
|
427 eModifierType_EdgeSplit,
|
nuclear@0
|
428 eModifierType_Displace,
|
nuclear@0
|
429 eModifierType_UVProject,
|
nuclear@0
|
430 eModifierType_Smooth,
|
nuclear@0
|
431 eModifierType_Cast,
|
nuclear@0
|
432 eModifierType_MeshDeform,
|
nuclear@0
|
433 eModifierType_ParticleSystem,
|
nuclear@0
|
434 eModifierType_ParticleInstance,
|
nuclear@0
|
435 eModifierType_Explode,
|
nuclear@0
|
436 eModifierType_Cloth,
|
nuclear@0
|
437 eModifierType_Collision,
|
nuclear@0
|
438 eModifierType_Bevel,
|
nuclear@0
|
439 eModifierType_Shrinkwrap,
|
nuclear@0
|
440 eModifierType_Fluidsim,
|
nuclear@0
|
441 eModifierType_Mask,
|
nuclear@0
|
442 eModifierType_SimpleDeform,
|
nuclear@0
|
443 eModifierType_Multires,
|
nuclear@0
|
444 eModifierType_Surface,
|
nuclear@0
|
445 eModifierType_Smoke,
|
nuclear@0
|
446 eModifierType_ShapeKey
|
nuclear@0
|
447 };
|
nuclear@0
|
448
|
nuclear@0
|
449 boost::shared_ptr<ElemBase> next WARN;
|
nuclear@0
|
450 boost::shared_ptr<ElemBase> prev WARN;
|
nuclear@0
|
451
|
nuclear@0
|
452 int type, mode;
|
nuclear@0
|
453 char name[32];
|
nuclear@0
|
454 };
|
nuclear@0
|
455
|
nuclear@0
|
456 // -------------------------------------------------------------------------------
|
nuclear@0
|
457 struct SubsurfModifierData : ElemBase {
|
nuclear@0
|
458
|
nuclear@0
|
459 enum Type {
|
nuclear@0
|
460
|
nuclear@0
|
461 TYPE_CatmullClarke = 0x0,
|
nuclear@0
|
462 TYPE_Simple = 0x1
|
nuclear@0
|
463 };
|
nuclear@0
|
464
|
nuclear@0
|
465 enum Flags {
|
nuclear@0
|
466 // some omitted
|
nuclear@0
|
467 FLAGS_SubsurfUV =1<<3
|
nuclear@0
|
468 };
|
nuclear@0
|
469
|
nuclear@0
|
470 ModifierData modifier FAIL;
|
nuclear@0
|
471 short subdivType WARN;
|
nuclear@0
|
472 short levels FAIL;
|
nuclear@0
|
473 short renderLevels ;
|
nuclear@0
|
474 short flags;
|
nuclear@0
|
475 };
|
nuclear@0
|
476
|
nuclear@0
|
477 // -------------------------------------------------------------------------------
|
nuclear@0
|
478 struct MirrorModifierData : ElemBase {
|
nuclear@0
|
479
|
nuclear@0
|
480 enum Flags {
|
nuclear@0
|
481 Flags_CLIPPING =1<<0,
|
nuclear@0
|
482 Flags_MIRROR_U =1<<1,
|
nuclear@0
|
483 Flags_MIRROR_V =1<<2,
|
nuclear@0
|
484 Flags_AXIS_X =1<<3,
|
nuclear@0
|
485 Flags_AXIS_Y =1<<4,
|
nuclear@0
|
486 Flags_AXIS_Z =1<<5,
|
nuclear@0
|
487 Flags_VGROUP =1<<6
|
nuclear@0
|
488 };
|
nuclear@0
|
489
|
nuclear@0
|
490 ModifierData modifier FAIL;
|
nuclear@0
|
491
|
nuclear@0
|
492 short axis, flag;
|
nuclear@0
|
493 float tolerance;
|
nuclear@0
|
494 boost::shared_ptr<Object> mirror_ob;
|
nuclear@0
|
495 };
|
nuclear@0
|
496
|
nuclear@0
|
497 // -------------------------------------------------------------------------------
|
nuclear@0
|
498 struct Object : ElemBase {
|
nuclear@0
|
499 ID id FAIL;
|
nuclear@0
|
500
|
nuclear@0
|
501 enum Type {
|
nuclear@0
|
502 Type_EMPTY = 0
|
nuclear@0
|
503 ,Type_MESH = 1
|
nuclear@0
|
504 ,Type_CURVE = 2
|
nuclear@0
|
505 ,Type_SURF = 3
|
nuclear@0
|
506 ,Type_FONT = 4
|
nuclear@0
|
507 ,Type_MBALL = 5
|
nuclear@0
|
508
|
nuclear@0
|
509 ,Type_LAMP = 10
|
nuclear@0
|
510 ,Type_CAMERA = 11
|
nuclear@0
|
511
|
nuclear@0
|
512 ,Type_WAVE = 21
|
nuclear@0
|
513 ,Type_LATTICE = 22
|
nuclear@0
|
514 };
|
nuclear@0
|
515
|
nuclear@0
|
516 Type type FAIL;
|
nuclear@0
|
517 float obmat[4][4] WARN;
|
nuclear@0
|
518 float parentinv[4][4] WARN;
|
nuclear@0
|
519 char parsubstr[32] WARN;
|
nuclear@0
|
520
|
nuclear@0
|
521 Object* parent WARN;
|
nuclear@0
|
522 boost::shared_ptr<Object> track WARN;
|
nuclear@0
|
523
|
nuclear@0
|
524 boost::shared_ptr<Object> proxy,proxy_from,proxy_group WARN;
|
nuclear@0
|
525 boost::shared_ptr<Group> dup_group WARN;
|
nuclear@0
|
526 boost::shared_ptr<ElemBase> data FAIL;
|
nuclear@0
|
527
|
nuclear@0
|
528 ListBase modifiers;
|
nuclear@0
|
529 };
|
nuclear@0
|
530
|
nuclear@0
|
531
|
nuclear@0
|
532 // -------------------------------------------------------------------------------
|
nuclear@0
|
533 struct Base : ElemBase {
|
nuclear@0
|
534 Base* prev WARN;
|
nuclear@0
|
535 boost::shared_ptr<Base> next WARN;
|
nuclear@0
|
536 boost::shared_ptr<Object> object WARN;
|
nuclear@0
|
537 };
|
nuclear@0
|
538
|
nuclear@0
|
539 // -------------------------------------------------------------------------------
|
nuclear@0
|
540 struct Scene : ElemBase {
|
nuclear@0
|
541 ID id FAIL;
|
nuclear@0
|
542
|
nuclear@0
|
543 boost::shared_ptr<Object> camera WARN;
|
nuclear@0
|
544 boost::shared_ptr<World> world WARN;
|
nuclear@0
|
545 boost::shared_ptr<Base> basact WARN;
|
nuclear@0
|
546
|
nuclear@0
|
547 ListBase base;
|
nuclear@0
|
548 };
|
nuclear@0
|
549
|
nuclear@0
|
550
|
nuclear@0
|
551 // -------------------------------------------------------------------------------
|
nuclear@0
|
552 struct Image : ElemBase {
|
nuclear@0
|
553 ID id FAIL;
|
nuclear@0
|
554
|
nuclear@0
|
555 char name[240] WARN;
|
nuclear@0
|
556
|
nuclear@0
|
557 //struct anim *anim;
|
nuclear@0
|
558
|
nuclear@0
|
559 short ok, flag;
|
nuclear@0
|
560 short source, type, pad, pad1;
|
nuclear@0
|
561 int lastframe;
|
nuclear@0
|
562
|
nuclear@0
|
563 short tpageflag, totbind;
|
nuclear@0
|
564 short xrep, yrep;
|
nuclear@0
|
565 short twsta, twend;
|
nuclear@0
|
566 //unsigned int bindcode;
|
nuclear@0
|
567 //unsigned int *repbind;
|
nuclear@0
|
568
|
nuclear@0
|
569 boost::shared_ptr<PackedFile> packedfile;
|
nuclear@0
|
570 //struct PreviewImage * preview;
|
nuclear@0
|
571
|
nuclear@0
|
572 float lastupdate;
|
nuclear@0
|
573 int lastused;
|
nuclear@0
|
574 short animspeed;
|
nuclear@0
|
575
|
nuclear@0
|
576 short gen_x, gen_y, gen_type;
|
nuclear@0
|
577 };
|
nuclear@0
|
578
|
nuclear@0
|
579 // -------------------------------------------------------------------------------
|
nuclear@0
|
580 struct Tex : ElemBase {
|
nuclear@0
|
581
|
nuclear@0
|
582 // actually, the only texture type we support is Type_IMAGE
|
nuclear@0
|
583 enum Type {
|
nuclear@0
|
584 Type_CLOUDS = 1
|
nuclear@0
|
585 ,Type_WOOD = 2
|
nuclear@0
|
586 ,Type_MARBLE = 3
|
nuclear@0
|
587 ,Type_MAGIC = 4
|
nuclear@0
|
588 ,Type_BLEND = 5
|
nuclear@0
|
589 ,Type_STUCCI = 6
|
nuclear@0
|
590 ,Type_NOISE = 7
|
nuclear@0
|
591 ,Type_IMAGE = 8
|
nuclear@0
|
592 ,Type_PLUGIN = 9
|
nuclear@0
|
593 ,Type_ENVMAP = 10
|
nuclear@0
|
594 ,Type_MUSGRAVE = 11
|
nuclear@0
|
595 ,Type_VORONOI = 12
|
nuclear@0
|
596 ,Type_DISTNOISE = 13
|
nuclear@0
|
597 ,Type_POINTDENSITY = 14
|
nuclear@0
|
598 ,Type_VOXELDATA = 15
|
nuclear@0
|
599 };
|
nuclear@0
|
600
|
nuclear@0
|
601 ID id FAIL;
|
nuclear@0
|
602 // AnimData *adt;
|
nuclear@0
|
603
|
nuclear@0
|
604 //float noisesize, turbul;
|
nuclear@0
|
605 //float bright, contrast, rfac, gfac, bfac;
|
nuclear@0
|
606 //float filtersize;
|
nuclear@0
|
607
|
nuclear@0
|
608 //float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain;
|
nuclear@0
|
609 //float dist_amount, ns_outscale;
|
nuclear@0
|
610
|
nuclear@0
|
611 //float vn_w1;
|
nuclear@0
|
612 //float vn_w2;
|
nuclear@0
|
613 //float vn_w3;
|
nuclear@0
|
614 //float vn_w4;
|
nuclear@0
|
615 //float vn_mexp;
|
nuclear@0
|
616 //short vn_distm, vn_coltype;
|
nuclear@0
|
617
|
nuclear@0
|
618 //short noisedepth, noisetype;
|
nuclear@0
|
619 //short noisebasis, noisebasis2;
|
nuclear@0
|
620
|
nuclear@0
|
621 //short imaflag, flag;
|
nuclear@0
|
622 Type type FAIL;
|
nuclear@0
|
623 //short stype;
|
nuclear@0
|
624
|
nuclear@0
|
625 //float cropxmin, cropymin, cropxmax, cropymax;
|
nuclear@0
|
626 //int texfilter;
|
nuclear@0
|
627 //int afmax;
|
nuclear@0
|
628 //short xrepeat, yrepeat;
|
nuclear@0
|
629 //short extend;
|
nuclear@0
|
630
|
nuclear@0
|
631 //short fie_ima;
|
nuclear@0
|
632 //int len;
|
nuclear@0
|
633 //int frames, offset, sfra;
|
nuclear@0
|
634
|
nuclear@0
|
635 //float checkerdist, nabla;
|
nuclear@0
|
636 //float norfac;
|
nuclear@0
|
637
|
nuclear@0
|
638 //ImageUser iuser;
|
nuclear@0
|
639
|
nuclear@0
|
640 //bNodeTree *nodetree;
|
nuclear@0
|
641 //Ipo *ipo;
|
nuclear@0
|
642 boost::shared_ptr<Image> ima WARN;
|
nuclear@0
|
643 //PluginTex *plugin;
|
nuclear@0
|
644 //ColorBand *coba;
|
nuclear@0
|
645 //EnvMap *env;
|
nuclear@0
|
646 //PreviewImage * preview;
|
nuclear@0
|
647 //PointDensity *pd;
|
nuclear@0
|
648 //VoxelData *vd;
|
nuclear@0
|
649
|
nuclear@0
|
650 //char use_nodes;
|
nuclear@0
|
651 };
|
nuclear@0
|
652
|
nuclear@0
|
653 // -------------------------------------------------------------------------------
|
nuclear@0
|
654 struct MTex : ElemBase {
|
nuclear@0
|
655
|
nuclear@0
|
656 enum Projection {
|
nuclear@0
|
657 Proj_N = 0
|
nuclear@0
|
658 ,Proj_X = 1
|
nuclear@0
|
659 ,Proj_Y = 2
|
nuclear@0
|
660 ,Proj_Z = 3
|
nuclear@0
|
661 };
|
nuclear@0
|
662
|
nuclear@0
|
663 enum Flag {
|
nuclear@0
|
664 Flag_RGBTOINT = 0x1
|
nuclear@0
|
665 ,Flag_STENCIL = 0x2
|
nuclear@0
|
666 ,Flag_NEGATIVE = 0x4
|
nuclear@0
|
667 ,Flag_ALPHAMIX = 0x8
|
nuclear@0
|
668 ,Flag_VIEWSPACE = 0x10
|
nuclear@0
|
669 };
|
nuclear@0
|
670
|
nuclear@0
|
671 enum BlendType {
|
nuclear@0
|
672 BlendType_BLEND = 0
|
nuclear@0
|
673 ,BlendType_MUL = 1
|
nuclear@0
|
674 ,BlendType_ADD = 2
|
nuclear@0
|
675 ,BlendType_SUB = 3
|
nuclear@0
|
676 ,BlendType_DIV = 4
|
nuclear@0
|
677 ,BlendType_DARK = 5
|
nuclear@0
|
678 ,BlendType_DIFF = 6
|
nuclear@0
|
679 ,BlendType_LIGHT = 7
|
nuclear@0
|
680 ,BlendType_SCREEN = 8
|
nuclear@0
|
681 ,BlendType_OVERLAY = 9
|
nuclear@0
|
682 ,BlendType_BLEND_HUE = 10
|
nuclear@0
|
683 ,BlendType_BLEND_SAT = 11
|
nuclear@0
|
684 ,BlendType_BLEND_VAL = 12
|
nuclear@0
|
685 ,BlendType_BLEND_COLOR = 13
|
nuclear@0
|
686 };
|
nuclear@0
|
687
|
nuclear@0
|
688 // short texco, mapto, maptoneg;
|
nuclear@0
|
689
|
nuclear@0
|
690 BlendType blendtype;
|
nuclear@0
|
691 boost::shared_ptr<Object> object;
|
nuclear@0
|
692 boost::shared_ptr<Tex> tex;
|
nuclear@0
|
693 char uvname[32];
|
nuclear@0
|
694
|
nuclear@0
|
695 Projection projx,projy,projz;
|
nuclear@0
|
696 char mapping;
|
nuclear@0
|
697 float ofs[3], size[3], rot;
|
nuclear@0
|
698
|
nuclear@0
|
699 int texflag;
|
nuclear@0
|
700 short colormodel, pmapto, pmaptoneg;
|
nuclear@0
|
701 //short normapspace, which_output;
|
nuclear@0
|
702 //char brush_map_mode;
|
nuclear@0
|
703 float r,g,b,k WARN;
|
nuclear@0
|
704 //float def_var, rt;
|
nuclear@0
|
705
|
nuclear@0
|
706 //float colfac, varfac;
|
nuclear@0
|
707
|
nuclear@0
|
708 //float norfac, dispfac, warpfac;
|
nuclear@0
|
709 float colspecfac, mirrfac, alphafac;
|
nuclear@0
|
710 float difffac, specfac, emitfac, hardfac;
|
nuclear@0
|
711 //float raymirrfac, translfac, ambfac;
|
nuclear@0
|
712 //float colemitfac, colreflfac, coltransfac;
|
nuclear@0
|
713 //float densfac, scatterfac, reflfac;
|
nuclear@0
|
714
|
nuclear@0
|
715 //float timefac, lengthfac, clumpfac;
|
nuclear@0
|
716 //float kinkfac, roughfac, padensfac;
|
nuclear@0
|
717 //float lifefac, sizefac, ivelfac, pvelfac;
|
nuclear@0
|
718 //float shadowfac;
|
nuclear@0
|
719 //float zenupfac, zendownfac, blendfac;
|
nuclear@0
|
720 };
|
nuclear@0
|
721
|
nuclear@0
|
722
|
nuclear@0
|
723 }
|
nuclear@0
|
724 }
|
nuclear@0
|
725 #endif
|