nuclear@0: /* nuclear@0: Open Asset Import Library (assimp) nuclear@0: ---------------------------------------------------------------------- nuclear@0: nuclear@0: Copyright (c) 2006-2012, assimp team nuclear@0: All rights reserved. nuclear@0: nuclear@0: Redistribution and use of this software in source and binary forms, nuclear@0: with or without modification, are permitted provided that the nuclear@0: following conditions are met: nuclear@0: nuclear@0: * Redistributions of source code must retain the above nuclear@0: copyright notice, this list of conditions and the nuclear@0: following disclaimer. nuclear@0: nuclear@0: * Redistributions in binary form must reproduce the above nuclear@0: copyright notice, this list of conditions and the nuclear@0: following disclaimer in the documentation and/or other nuclear@0: materials provided with the distribution. nuclear@0: nuclear@0: * Neither the name of the assimp team, nor the names of its nuclear@0: contributors may be used to endorse or promote products nuclear@0: derived from this software without specific prior nuclear@0: written permission of the assimp team. nuclear@0: nuclear@0: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS nuclear@0: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT nuclear@0: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR nuclear@0: A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT nuclear@0: OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, nuclear@0: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT nuclear@0: LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, nuclear@0: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY nuclear@0: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT nuclear@0: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE nuclear@0: OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. nuclear@0: nuclear@0: ---------------------------------------------------------------------- nuclear@0: */ nuclear@0: nuclear@0: /** @file BlenderScene.h nuclear@0: * @brief Intermediate representation of a BLEND scene. nuclear@0: */ nuclear@0: #ifndef INCLUDED_AI_BLEND_SCENE_H nuclear@0: #define INCLUDED_AI_BLEND_SCENE_H nuclear@0: nuclear@0: namespace Assimp { nuclear@0: namespace Blender { nuclear@0: nuclear@0: // Minor parts of this file are extracts from blender data structures, nuclear@0: // declared in the ./source/blender/makesdna directory. nuclear@0: // Stuff that is not used by Assimp is commented. nuclear@0: nuclear@0: nuclear@0: // NOTE nuclear@0: // this file serves as input data to the `./scripts/genblenddna.py` nuclear@0: // script. This script generates the actual binding code to read a nuclear@0: // blender file with a possibly different DNA into our structures. nuclear@0: // Only `struct` declarations are considered and the following nuclear@0: // rules must be obeyed in order for the script to work properly: nuclear@0: // nuclear@0: // * C++ style comments only nuclear@0: // nuclear@0: // * Structures may include the primitive types char, int, short, nuclear@0: // float, double. Signedness specifiers are not allowed on nuclear@0: // integers. Enum types are allowed, but they must have been nuclear@0: // defined in this header. nuclear@0: // nuclear@0: // * Structures may aggregate other structures, unless not defined nuclear@0: // in this header. nuclear@0: // nuclear@0: // * Pointers to other structures or primitive types are allowed. nuclear@0: // No references or double pointers or arrays of pointers. nuclear@0: // A pointer to a T is normally written as boost::shared_ptr, while a nuclear@0: // pointer to an array of elements is written as boost:: nuclear@0: // shared_array. To avoid cyclic pointers, use raw pointers in nuclear@0: // one direction. nuclear@0: // nuclear@0: // * Arrays can have maximally two-dimensions. Any non-pointer nuclear@0: // type can form them. nuclear@0: // nuclear@0: // * Multiple fields can be declare in a single line (i.e `int a,b;`) nuclear@0: // provided they are neither pointers nor arrays. nuclear@0: // nuclear@0: // * One of WARN, FAIL can be appended to the declaration ( nuclear@0: // prior to the semiolon to specifiy the error handling policy if nuclear@0: // this field is missing in the input DNA). If none of those nuclear@0: // is specified the default policy is to subtitute a default nuclear@0: // value for the field. nuclear@0: // nuclear@0: nuclear@0: #define WARN // warn if field is missing, substitute default value nuclear@0: #define FAIL // fail the import if the field does not exist nuclear@0: nuclear@0: struct Object; nuclear@0: struct MTex; nuclear@0: struct Image; nuclear@0: nuclear@0: #define AI_BLEND_MESH_MAX_VERTS 2000000000L nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct ID : ElemBase { nuclear@0: nuclear@0: char name[24] WARN; nuclear@0: short flag; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct ListBase : ElemBase { nuclear@0: nuclear@0: boost::shared_ptr first; nuclear@0: boost::shared_ptr last; nuclear@0: }; nuclear@0: nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct PackedFile : ElemBase { nuclear@0: int size WARN; nuclear@0: int seek WARN; nuclear@0: boost::shared_ptr< FileOffset > data WARN; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct GroupObject : ElemBase { nuclear@0: nuclear@0: boost::shared_ptr prev,next FAIL; nuclear@0: boost::shared_ptr ob; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Group : ElemBase { nuclear@0: ID id FAIL; nuclear@0: int layer; nuclear@0: nuclear@0: boost::shared_ptr gobject; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct World : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MVert : ElemBase { nuclear@0: float co[3] FAIL; nuclear@0: float no[3] FAIL; nuclear@0: char flag; nuclear@0: int mat_nr WARN; nuclear@0: int bweight; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MEdge : ElemBase { nuclear@0: int v1, v2 FAIL; nuclear@0: char crease, bweight; nuclear@0: short flag; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MLoop : ElemBase { nuclear@0: int v, e; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MLoopUV : ElemBase { nuclear@0: float uv[2]; nuclear@0: int flag; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: // Note that red and blue are not swapped, as with MCol nuclear@0: struct MLoopCol : ElemBase { nuclear@0: char r, g, b, a; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MPoly : ElemBase { nuclear@0: int loopstart; nuclear@0: int totloop; nuclear@0: short mat_nr; nuclear@0: char flag; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MTexPoly : ElemBase { nuclear@0: Image* tpage; nuclear@0: char flag, transp; nuclear@0: short mode, tile, pad; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MCol : ElemBase { nuclear@0: char r,g,b,a FAIL; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MFace : ElemBase { nuclear@0: int v1,v2,v3,v4 FAIL; nuclear@0: int mat_nr FAIL; nuclear@0: char flag; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct TFace : ElemBase { nuclear@0: float uv[4][2] FAIL; nuclear@0: int col[4] FAIL; nuclear@0: char flag; nuclear@0: short mode; nuclear@0: short tile; nuclear@0: short unwrap; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MTFace : ElemBase { nuclear@0: nuclear@0: float uv[4][2] FAIL; nuclear@0: char flag; nuclear@0: short mode; nuclear@0: short tile; nuclear@0: short unwrap; nuclear@0: nuclear@0: // boost::shared_ptr tpage; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MDeformWeight : ElemBase { nuclear@0: int def_nr FAIL; nuclear@0: float weight FAIL; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MDeformVert : ElemBase { nuclear@0: nuclear@0: vector dw WARN; nuclear@0: int totweight; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Material : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: float r,g,b WARN; nuclear@0: float specr,specg,specb WARN; nuclear@0: short har; nuclear@0: float ambr,ambg,ambb WARN; nuclear@0: float mirr,mirg,mirb; nuclear@0: float emit WARN; nuclear@0: float alpha WARN; nuclear@0: float ref; nuclear@0: float translucency; nuclear@0: float roughness; nuclear@0: float darkness; nuclear@0: float refrac; nuclear@0: nuclear@0: boost::shared_ptr group; nuclear@0: nuclear@0: short diff_shader WARN; nuclear@0: short spec_shader WARN; nuclear@0: nuclear@0: boost::shared_ptr mtex[18]; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Mesh : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: int totface FAIL; nuclear@0: int totedge FAIL; nuclear@0: int totvert FAIL; nuclear@0: int totloop; nuclear@0: int totpoly; nuclear@0: nuclear@0: short subdiv; nuclear@0: short subdivr; nuclear@0: short subsurftype; nuclear@0: short smoothresh; nuclear@0: nuclear@0: vector mface FAIL; nuclear@0: vector mtface; nuclear@0: vector tface; nuclear@0: vector mvert FAIL; nuclear@0: vector medge WARN; nuclear@0: vector mloop; nuclear@0: vector mloopuv; nuclear@0: vector mloopcol; nuclear@0: vector mpoly; nuclear@0: vector mtpoly; nuclear@0: vector dvert; nuclear@0: vector mcol; nuclear@0: nuclear@0: vector< boost::shared_ptr > mat FAIL; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Library : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: char name[240] WARN; nuclear@0: char filename[240] FAIL; nuclear@0: boost::shared_ptr parent WARN; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Camera : ElemBase { nuclear@0: enum Type { nuclear@0: Type_PERSP = 0 nuclear@0: ,Type_ORTHO = 1 nuclear@0: }; nuclear@0: nuclear@0: ID id FAIL; nuclear@0: nuclear@0: // struct AnimData *adt; nuclear@0: nuclear@0: Type type,flag WARN; nuclear@0: float angle WARN; nuclear@0: //float passepartalpha, angle; nuclear@0: //float clipsta, clipend; nuclear@0: //float lens, ortho_scale, drawsize; nuclear@0: //float shiftx, shifty; nuclear@0: nuclear@0: //float YF_dofdist, YF_aperture; nuclear@0: //short YF_bkhtype, YF_bkhbias; nuclear@0: //float YF_bkhrot; nuclear@0: }; nuclear@0: nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Lamp : ElemBase { nuclear@0: nuclear@0: enum FalloffType { nuclear@0: FalloffType_Constant = 0x0 nuclear@0: ,FalloffType_InvLinear = 0x1 nuclear@0: ,FalloffType_InvSquare = 0x2 nuclear@0: //,FalloffType_Curve = 0x3 nuclear@0: //,FalloffType_Sliders = 0x4 nuclear@0: }; nuclear@0: nuclear@0: enum Type { nuclear@0: Type_Local = 0x0 nuclear@0: ,Type_Sun = 0x1 nuclear@0: ,Type_Spot = 0x2 nuclear@0: ,Type_Hemi = 0x3 nuclear@0: ,Type_Area = 0x4 nuclear@0: //,Type_YFPhoton = 0x5 nuclear@0: }; nuclear@0: nuclear@0: ID id FAIL; nuclear@0: //AnimData *adt; nuclear@0: nuclear@0: Type type FAIL; nuclear@0: short flags; nuclear@0: nuclear@0: //int mode; nuclear@0: nuclear@0: short colormodel, totex; nuclear@0: float r,g,b,k WARN; nuclear@0: //float shdwr, shdwg, shdwb; nuclear@0: nuclear@0: float energy, dist, spotsize, spotblend; nuclear@0: //float haint; nuclear@0: nuclear@0: float att1, att2; nuclear@0: //struct CurveMapping *curfalloff; nuclear@0: FalloffType falloff_type; nuclear@0: nuclear@0: //float clipsta, clipend, shadspotsize; nuclear@0: //float bias, soft, compressthresh; nuclear@0: //short bufsize, samp, buffers, filtertype; nuclear@0: //char bufflag, buftype; nuclear@0: nuclear@0: //short ray_samp, ray_sampy, ray_sampz; nuclear@0: //short ray_samp_type; nuclear@0: //short area_shape; nuclear@0: //float area_size, area_sizey, area_sizez; nuclear@0: //float adapt_thresh; nuclear@0: //short ray_samp_method; nuclear@0: nuclear@0: //short texact, shadhalostep; nuclear@0: nuclear@0: //short sun_effect_type; nuclear@0: //short skyblendtype; nuclear@0: //float horizon_brightness; nuclear@0: //float spread; nuclear@0: float sun_brightness; nuclear@0: //float sun_size; nuclear@0: //float backscattered_light; nuclear@0: //float sun_intensity; nuclear@0: //float atm_turbidity; nuclear@0: //float atm_inscattering_factor; nuclear@0: //float atm_extinction_factor; nuclear@0: //float atm_distance_factor; nuclear@0: //float skyblendfac; nuclear@0: //float sky_exposure; nuclear@0: //short sky_colorspace; nuclear@0: nuclear@0: // int YF_numphotons, YF_numsearch; nuclear@0: // short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad; nuclear@0: // float YF_causticblur, YF_ltradius; nuclear@0: nuclear@0: // float YF_glowint, YF_glowofs; nuclear@0: // short YF_glowtype, YF_pad2; nuclear@0: nuclear@0: //struct Ipo *ipo; nuclear@0: //struct MTex *mtex[18]; nuclear@0: // short pr_texture; nuclear@0: nuclear@0: //struct PreviewImage *preview; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct ModifierData : ElemBase { nuclear@0: enum ModifierType { nuclear@0: eModifierType_None = 0, nuclear@0: eModifierType_Subsurf, nuclear@0: eModifierType_Lattice, nuclear@0: eModifierType_Curve, nuclear@0: eModifierType_Build, nuclear@0: eModifierType_Mirror, nuclear@0: eModifierType_Decimate, nuclear@0: eModifierType_Wave, nuclear@0: eModifierType_Armature, nuclear@0: eModifierType_Hook, nuclear@0: eModifierType_Softbody, nuclear@0: eModifierType_Boolean, nuclear@0: eModifierType_Array, nuclear@0: eModifierType_EdgeSplit, nuclear@0: eModifierType_Displace, nuclear@0: eModifierType_UVProject, nuclear@0: eModifierType_Smooth, nuclear@0: eModifierType_Cast, nuclear@0: eModifierType_MeshDeform, nuclear@0: eModifierType_ParticleSystem, nuclear@0: eModifierType_ParticleInstance, nuclear@0: eModifierType_Explode, nuclear@0: eModifierType_Cloth, nuclear@0: eModifierType_Collision, nuclear@0: eModifierType_Bevel, nuclear@0: eModifierType_Shrinkwrap, nuclear@0: eModifierType_Fluidsim, nuclear@0: eModifierType_Mask, nuclear@0: eModifierType_SimpleDeform, nuclear@0: eModifierType_Multires, nuclear@0: eModifierType_Surface, nuclear@0: eModifierType_Smoke, nuclear@0: eModifierType_ShapeKey nuclear@0: }; nuclear@0: nuclear@0: boost::shared_ptr next WARN; nuclear@0: boost::shared_ptr prev WARN; nuclear@0: nuclear@0: int type, mode; nuclear@0: char name[32]; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct SubsurfModifierData : ElemBase { nuclear@0: nuclear@0: enum Type { nuclear@0: nuclear@0: TYPE_CatmullClarke = 0x0, nuclear@0: TYPE_Simple = 0x1 nuclear@0: }; nuclear@0: nuclear@0: enum Flags { nuclear@0: // some omitted nuclear@0: FLAGS_SubsurfUV =1<<3 nuclear@0: }; nuclear@0: nuclear@0: ModifierData modifier FAIL; nuclear@0: short subdivType WARN; nuclear@0: short levels FAIL; nuclear@0: short renderLevels ; nuclear@0: short flags; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MirrorModifierData : ElemBase { nuclear@0: nuclear@0: enum Flags { nuclear@0: Flags_CLIPPING =1<<0, nuclear@0: Flags_MIRROR_U =1<<1, nuclear@0: Flags_MIRROR_V =1<<2, nuclear@0: Flags_AXIS_X =1<<3, nuclear@0: Flags_AXIS_Y =1<<4, nuclear@0: Flags_AXIS_Z =1<<5, nuclear@0: Flags_VGROUP =1<<6 nuclear@0: }; nuclear@0: nuclear@0: ModifierData modifier FAIL; nuclear@0: nuclear@0: short axis, flag; nuclear@0: float tolerance; nuclear@0: boost::shared_ptr mirror_ob; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Object : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: enum Type { nuclear@0: Type_EMPTY = 0 nuclear@0: ,Type_MESH = 1 nuclear@0: ,Type_CURVE = 2 nuclear@0: ,Type_SURF = 3 nuclear@0: ,Type_FONT = 4 nuclear@0: ,Type_MBALL = 5 nuclear@0: nuclear@0: ,Type_LAMP = 10 nuclear@0: ,Type_CAMERA = 11 nuclear@0: nuclear@0: ,Type_WAVE = 21 nuclear@0: ,Type_LATTICE = 22 nuclear@0: }; nuclear@0: nuclear@0: Type type FAIL; nuclear@0: float obmat[4][4] WARN; nuclear@0: float parentinv[4][4] WARN; nuclear@0: char parsubstr[32] WARN; nuclear@0: nuclear@0: Object* parent WARN; nuclear@0: boost::shared_ptr track WARN; nuclear@0: nuclear@0: boost::shared_ptr proxy,proxy_from,proxy_group WARN; nuclear@0: boost::shared_ptr dup_group WARN; nuclear@0: boost::shared_ptr data FAIL; nuclear@0: nuclear@0: ListBase modifiers; nuclear@0: }; nuclear@0: nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Base : ElemBase { nuclear@0: Base* prev WARN; nuclear@0: boost::shared_ptr next WARN; nuclear@0: boost::shared_ptr object WARN; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Scene : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: boost::shared_ptr camera WARN; nuclear@0: boost::shared_ptr world WARN; nuclear@0: boost::shared_ptr basact WARN; nuclear@0: nuclear@0: ListBase base; nuclear@0: }; nuclear@0: nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Image : ElemBase { nuclear@0: ID id FAIL; nuclear@0: nuclear@0: char name[240] WARN; nuclear@0: nuclear@0: //struct anim *anim; nuclear@0: nuclear@0: short ok, flag; nuclear@0: short source, type, pad, pad1; nuclear@0: int lastframe; nuclear@0: nuclear@0: short tpageflag, totbind; nuclear@0: short xrep, yrep; nuclear@0: short twsta, twend; nuclear@0: //unsigned int bindcode; nuclear@0: //unsigned int *repbind; nuclear@0: nuclear@0: boost::shared_ptr packedfile; nuclear@0: //struct PreviewImage * preview; nuclear@0: nuclear@0: float lastupdate; nuclear@0: int lastused; nuclear@0: short animspeed; nuclear@0: nuclear@0: short gen_x, gen_y, gen_type; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct Tex : ElemBase { nuclear@0: nuclear@0: // actually, the only texture type we support is Type_IMAGE nuclear@0: enum Type { nuclear@0: Type_CLOUDS = 1 nuclear@0: ,Type_WOOD = 2 nuclear@0: ,Type_MARBLE = 3 nuclear@0: ,Type_MAGIC = 4 nuclear@0: ,Type_BLEND = 5 nuclear@0: ,Type_STUCCI = 6 nuclear@0: ,Type_NOISE = 7 nuclear@0: ,Type_IMAGE = 8 nuclear@0: ,Type_PLUGIN = 9 nuclear@0: ,Type_ENVMAP = 10 nuclear@0: ,Type_MUSGRAVE = 11 nuclear@0: ,Type_VORONOI = 12 nuclear@0: ,Type_DISTNOISE = 13 nuclear@0: ,Type_POINTDENSITY = 14 nuclear@0: ,Type_VOXELDATA = 15 nuclear@0: }; nuclear@0: nuclear@0: ID id FAIL; nuclear@0: // AnimData *adt; nuclear@0: nuclear@0: //float noisesize, turbul; nuclear@0: //float bright, contrast, rfac, gfac, bfac; nuclear@0: //float filtersize; nuclear@0: nuclear@0: //float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain; nuclear@0: //float dist_amount, ns_outscale; nuclear@0: nuclear@0: //float vn_w1; nuclear@0: //float vn_w2; nuclear@0: //float vn_w3; nuclear@0: //float vn_w4; nuclear@0: //float vn_mexp; nuclear@0: //short vn_distm, vn_coltype; nuclear@0: nuclear@0: //short noisedepth, noisetype; nuclear@0: //short noisebasis, noisebasis2; nuclear@0: nuclear@0: //short imaflag, flag; nuclear@0: Type type FAIL; nuclear@0: //short stype; nuclear@0: nuclear@0: //float cropxmin, cropymin, cropxmax, cropymax; nuclear@0: //int texfilter; nuclear@0: //int afmax; nuclear@0: //short xrepeat, yrepeat; nuclear@0: //short extend; nuclear@0: nuclear@0: //short fie_ima; nuclear@0: //int len; nuclear@0: //int frames, offset, sfra; nuclear@0: nuclear@0: //float checkerdist, nabla; nuclear@0: //float norfac; nuclear@0: nuclear@0: //ImageUser iuser; nuclear@0: nuclear@0: //bNodeTree *nodetree; nuclear@0: //Ipo *ipo; nuclear@0: boost::shared_ptr ima WARN; nuclear@0: //PluginTex *plugin; nuclear@0: //ColorBand *coba; nuclear@0: //EnvMap *env; nuclear@0: //PreviewImage * preview; nuclear@0: //PointDensity *pd; nuclear@0: //VoxelData *vd; nuclear@0: nuclear@0: //char use_nodes; nuclear@0: }; nuclear@0: nuclear@0: // ------------------------------------------------------------------------------- nuclear@0: struct MTex : ElemBase { nuclear@0: nuclear@0: enum Projection { nuclear@0: Proj_N = 0 nuclear@0: ,Proj_X = 1 nuclear@0: ,Proj_Y = 2 nuclear@0: ,Proj_Z = 3 nuclear@0: }; nuclear@0: nuclear@0: enum Flag { nuclear@0: Flag_RGBTOINT = 0x1 nuclear@0: ,Flag_STENCIL = 0x2 nuclear@0: ,Flag_NEGATIVE = 0x4 nuclear@0: ,Flag_ALPHAMIX = 0x8 nuclear@0: ,Flag_VIEWSPACE = 0x10 nuclear@0: }; nuclear@0: nuclear@0: enum BlendType { nuclear@0: BlendType_BLEND = 0 nuclear@0: ,BlendType_MUL = 1 nuclear@0: ,BlendType_ADD = 2 nuclear@0: ,BlendType_SUB = 3 nuclear@0: ,BlendType_DIV = 4 nuclear@0: ,BlendType_DARK = 5 nuclear@0: ,BlendType_DIFF = 6 nuclear@0: ,BlendType_LIGHT = 7 nuclear@0: ,BlendType_SCREEN = 8 nuclear@0: ,BlendType_OVERLAY = 9 nuclear@0: ,BlendType_BLEND_HUE = 10 nuclear@0: ,BlendType_BLEND_SAT = 11 nuclear@0: ,BlendType_BLEND_VAL = 12 nuclear@0: ,BlendType_BLEND_COLOR = 13 nuclear@0: }; nuclear@0: nuclear@0: // short texco, mapto, maptoneg; nuclear@0: nuclear@0: BlendType blendtype; nuclear@0: boost::shared_ptr object; nuclear@0: boost::shared_ptr tex; nuclear@0: char uvname[32]; nuclear@0: nuclear@0: Projection projx,projy,projz; nuclear@0: char mapping; nuclear@0: float ofs[3], size[3], rot; nuclear@0: nuclear@0: int texflag; nuclear@0: short colormodel, pmapto, pmaptoneg; nuclear@0: //short normapspace, which_output; nuclear@0: //char brush_map_mode; nuclear@0: float r,g,b,k WARN; nuclear@0: //float def_var, rt; nuclear@0: nuclear@0: //float colfac, varfac; nuclear@0: nuclear@0: //float norfac, dispfac, warpfac; nuclear@0: float colspecfac, mirrfac, alphafac; nuclear@0: float difffac, specfac, emitfac, hardfac; nuclear@0: //float raymirrfac, translfac, ambfac; nuclear@0: //float colemitfac, colreflfac, coltransfac; nuclear@0: //float densfac, scatterfac, reflfac; nuclear@0: nuclear@0: //float timefac, lengthfac, clumpfac; nuclear@0: //float kinkfac, roughfac, padensfac; nuclear@0: //float lifefac, sizefac, ivelfac, pvelfac; nuclear@0: //float shadowfac; nuclear@0: //float zenupfac, zendownfac, blendfac; nuclear@0: }; nuclear@0: nuclear@0: nuclear@0: } nuclear@0: } nuclear@0: #endif