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