- split mesh_deform off from object_deform
[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 DerivedMesh;
39 struct DispListMesh;
40 struct Ipo;
41 struct Key;
42 struct Material;
43 struct MVert;
44 struct MEdge;
45 struct MFace;
46 struct MCol;
47 struct MSticky;
48 struct Mesh;
49 struct OcInfo;
50
51 typedef struct TFace {
52
53         /* this one gets interpreted as a image in texture.c  */
54         void *tpage;
55
56         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 */
57         unsigned int col[4];
58         char flag, transp;
59         short mode, tile, unwrap;
60 } TFace;
61
62 typedef struct Mesh {
63         ID id;
64
65         struct BoundBox *bb;
66
67         ListBase effect;
68         
69         struct Ipo *ipo;
70         struct Key *key;
71         struct Material **mat;
72
73         struct MFace *mface;
74         struct TFace *tface;
75         void *dface;
76         struct MVert *mvert;
77         struct MEdge *medge;
78         struct MDeformVert *dvert;      /* __NLA */
79         struct MCol *mcol;
80         struct MSticky *msticky;
81         struct Mesh *texcomesh;
82
83                 /* hacky place to store temporary decimated mesh */
84         struct DispListMesh *decimated;
85
86         struct OcInfo *oc;              /* not written in file */
87         void *sumohandle;
88
89         int totvert, totedge, totface;
90         int texflag;
91         
92         float loc[3];
93         float size[3];
94         float rot[3];
95         
96         float cubemapsize, pad;
97
98         short smoothresh, flag;
99
100         short subdiv, subdivr;
101         short totcol;
102         short subsurftype; 
103
104 } Mesh;
105
106
107
108 /* **************** MESH ********************* */
109
110 /* texflag */
111 #define AUTOSPACE       1
112
113 /* me->flag */
114 #define ME_ISDONE               1
115 #define ME_NOPUNOFLIP   2
116 #define ME_TWOSIDED             4
117 #define ME_UVEFFECT             8
118 #define ME_VCOLEFFECT   16
119 #define ME_AUTOSMOOTH   32
120 #define ME_SMESH                64
121 #define ME_SUBSURF              128
122 #define ME_OPT_EDGES    256
123
124 /* Subsurf Type */
125 #define ME_CC_SUBSURF           0
126 #define ME_SIMPLE_SUBSURF       1
127
128 #define TF_DYNAMIC              1
129 /* #define TF_INVISIBLE 2 */
130 #define TF_TEX                  4
131 #define TF_SHAREDVERT   8
132 #define TF_LIGHT                16
133
134 #define TF_SHAREDCOL    64
135 #define TF_TILES                128
136 #define TF_BILLBOARD    256
137 #define TF_TWOSIDE              512
138 #define TF_INVISIBLE    1024
139
140 #define TF_OBCOL                2048
141 #define TF_BILLBOARD2           4096    /* with Z axis constraint */
142 #define TF_SHADOW               8192
143 #define TF_BMFONT               16384
144
145 /* tface->flag: 1=select 2=active*/
146 #define TF_SELECT       1
147 #define TF_ACTIVE       2
148 #define TF_SEL1         4
149 #define TF_SEL2         8
150 #define TF_SEL3         16
151 #define TF_SEL4         32
152 #define TF_HIDE         64
153
154 /* tface->transp */
155 #define TF_SOLID        0
156 #define TF_ADD          1
157 #define TF_ALPHA        2
158 #define TF_SUB          3
159
160 /* tface->unwrap */
161 #define TF_SEAM1        1
162 #define TF_SEAM2        2
163 #define TF_SEAM3        4
164 #define TF_SEAM4        8
165 #define TF_PIN1     16
166 #define TF_PIN2     32
167 #define TF_PIN3     64
168 #define TF_PIN4     128
169
170 #define MESH_MAX_VERTS 2000000000L
171
172 #endif