== Sculpt ==
[blender.git] / source / blender / blenkernel / BKE_sculpt.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL 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.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software  Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2007 by Nicholas Bishop
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 typedef struct SculptSession {
31         struct ProjVert *projverts;
32
33         struct bglMats *mats;
34         
35         /* An array of lists; array is sized as
36            large as the number of verts in the mesh,
37            the list for each vert contains the index
38            for all the faces that use that vertex */
39         struct ListBase *vertex_users;
40         struct IndexNode *vertex_users_mem;
41         int vertex_users_size;
42
43         /* Used temporarily per-stroke */
44         float *vertexcosnos;
45         ListBase damaged_rects;
46         ListBase damaged_verts;
47         
48         /* Used to cache the render of the active texture */
49         unsigned int texcache_w, texcache_h, *texcache;
50         
51         struct PropsetData *propset;
52         
53         /* For rotating around a pivot point */
54         vec3f pivot;
55
56         struct SculptStroke *stroke;
57 } SculptSession;
58
59 void sculptdata_init(struct Scene *sce);
60 void sculptdata_free(struct Scene *sce);
61 void sculptsession_free(struct Scene *sce);
62 void sculpt_vertexusers_free(struct SculptSession *ss);
63 void sculpt_reset_curve(struct SculptData *sd);
64