vrshoot

annotate libs/assimp/BlenderScene.h @ 0:b2f14e535253

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 01 Feb 2014 19:58:19 +0200
parents
children
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