Quite a large one this time... but now we have:
[blender.git] / source / blender / makesdna / DNA_mesh_types.h
1 /**
2  * $Id$ 
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32 #ifndef DNA_MESH_TYPES_H
33 #define DNA_MESH_TYPES_H
34
35 #include "DNA_listBase.h"
36 #include "DNA_ID.h"
37
38 struct Ipo;
39 struct Key;
40 struct Material;
41 struct MVert;
42 struct MEdge;
43 struct MCol;
44 struct MSticky;
45 struct Mesh;
46 struct OcInfo;
47
48 typedef struct TFace {
49
50         /* this one gets interpreted as a image in texture.c  */
51         void *tpage;
52
53         float uv[4][2];         /* when you change this: also do function set_correct_uv in editmesh.c, and there are more locations that use the size of this part */
54         unsigned int col[4];
55         char flag, transp;
56         short mode, tile, pad;
57 } TFace;
58
59 typedef struct Mesh {
60         ID id;
61
62         struct BoundBox *bb;
63
64         ListBase effect;
65         ListBase disp;
66         
67         struct Ipo *ipo;
68         struct Key *key;
69         struct Material **mat;
70
71         void *mface, *dface, *tface;
72         struct MVert *mvert;
73         struct MEdge *medge;
74         struct MDeformVert *dvert;      /* __NLA */
75         struct MCol *mcol;
76         struct MSticky *msticky;
77         struct Mesh *texcomesh;
78         float *orco;
79
80         struct OcInfo *oc;              /* not written in file */
81         void *sumohandle;
82
83         int totvert, totedge, totface;
84         int texflag;
85         
86         float loc[3];
87         float size[3];
88         float rot[3];
89         
90         short smoothresh, flag;
91
92         short subdiv, subdivr, subdivdone;
93         short totcol;
94         short subsurftype; 
95         short reserved1;        /* Padding */
96
97         float cubemapsize;
98
99 } Mesh;
100
101
102
103 /* **************** MESH ********************* */
104
105 /* texflag */
106 #define AUTOSPACE       1
107
108 /* me->flag */
109 #define ME_ISDONE               1
110 #define ME_NOPUNOFLIP   2
111 #define ME_TWOSIDED             4
112 #define ME_UVEFFECT             8
113 #define ME_VCOLEFFECT   16
114 #define ME_AUTOSMOOTH   32
115 #define ME_SMESH                64
116 #define ME_SUBSURF              128
117 #define ME_OPT_EDGES    256
118
119 /* Subsurf Type */
120 #define ME_CC_SUBSURF           0
121 #define ME_SIMPLE_SUBSURF       1
122
123
124 #define TF_DYNAMIC              1
125 /* #define TF_INVISIBLE 2 */
126 #define TF_TEX                  4
127 #define TF_SHAREDVERT   8
128 #define TF_LIGHT                16
129
130 #define TF_SHAREDCOL    64
131 #define TF_TILES                128
132 #define TF_BILLBOARD    256
133 #define TF_TWOSIDE              512
134 #define TF_INVISIBLE    1024
135
136 #define TF_OBCOL                2048
137 #define TF_BILLBOARD2           4096    /* with Z axis constraint */
138 #define TF_SHADOW               8192
139 #define TF_BMFONT               16384
140
141 /* tface->flag: 1=select 2=active*/
142 #define TF_SELECT       1
143 #define TF_ACTIVE       2
144 #define TF_SEL1         4
145 #define TF_SEL2         8
146 #define TF_SEL3         16
147 #define TF_SEL4         32
148 #define TF_HIDE         64
149
150 /* tface->transp */
151 #define TF_SOLID        0
152 #define TF_ADD          1
153 #define TF_ALPHA        2
154 #define TF_SUB          3
155
156 #define MESH_MAX_VERTS 2000000000L
157
158 #endif