[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13013] trunk/blender/source/blender: == Sculpt ==
Nicholas Bishop
nicholasbishop at gmail.com
Wed Dec 26 23:40:56 CET 2007
Revision: 13013
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13013
Author: nicholasbishop
Date: 2007-12-26 23:40:56 +0100 (Wed, 26 Dec 2007)
Log Message:
-----------
== Sculpt ==
Fixed bad level calls in sculptmode.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h
trunk/blender/source/blender/blenkernel/BKE_mesh.h
trunk/blender/source/blender/blenkernel/BKE_multires.h
trunk/blender/source/blender/blenkernel/BKE_scene.h
trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
trunk/blender/source/blender/blenkernel/intern/mesh.c
trunk/blender/source/blender/blenkernel/intern/multires.c
trunk/blender/source/blender/blenkernel/intern/scene.c
trunk/blender/source/blender/include/BDR_sculptmode.h
trunk/blender/source/blender/src/buttons_editing.c
trunk/blender/source/blender/src/drawview.c
trunk/blender/source/blender/src/editobject.c
trunk/blender/source/blender/src/multires.c
trunk/blender/source/blender/src/sculptmode-stroke.c
trunk/blender/source/blender/src/sculptmode.c
trunk/blender/source/blender/src/space.c
trunk/blender/source/blender/src/view.c
Added Paths:
-----------
trunk/blender/source/blender/blenkernel/BKE_sculpt.h
Modified: trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h 2007-12-26 22:40:56 UTC (rev 13013)
@@ -207,12 +207,6 @@
void post_layer_destroy(struct VLayer *vlayer);
void post_server_add(void);
-/* sculptmode.c */
-struct SculptData;
-void sculpt_reset_curve(struct SculptData *sd);
-void sculptmode_free_all(struct Scene *sce);
-void sculptmode_init(struct Scene *sce);
-
/* zbuf.c */
void antialias_tagbuf(int xsize, int ysize, char *rectmove);
Modified: trunk/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mesh.h 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_mesh.h 2007-12-26 22:40:56 UTC (rev 13013)
@@ -111,6 +111,11 @@
UvMapVert *get_uv_map_vert(UvVertMap *vmap, unsigned int v);
void free_uv_vert_map(UvVertMap *vmap);
+/* Partial Mesh Visibility */
+struct PartialVisibility *mesh_pmv_copy(struct PartialVisibility *);
+void mesh_pmv_free(struct PartialVisibility *);
+void mesh_pmv_revert(struct Object *ob, struct Mesh *me);
+void mesh_pmv_off(struct Object *ob, struct Mesh *me);
/* functions for making menu's from customdata layers */
int mesh_layers_menu_charlen(struct CustomData *data, int type); /* use this to work out how many chars to allocate */
Modified: trunk/blender/source/blender/blenkernel/BKE_multires.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_multires.h 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_multires.h 2007-12-26 22:40:56 UTC (rev 13013)
@@ -47,7 +47,7 @@
void multires_free(struct Multires *mr);
struct Multires *multires_copy(struct Multires *orig);
-void multires_create(struct Mesh *me);
+void multires_create(struct Object *ob, struct Mesh *me);
/* CustomData */
void multires_delete_layer(struct Mesh *me, struct CustomData *cd, const int type, int n);
Modified: trunk/blender/source/blender/blenkernel/BKE_scene.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_scene.h 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_scene.h 2007-12-26 22:40:56 UTC (rev 13013)
@@ -34,11 +34,13 @@
#ifndef BKE_SCENE_H
#define BKE_SCENE_H
+struct bglMats;
struct Scene;
struct Object;
struct Base;
struct AviCodecData;
struct QuicktimeCodecData;
+struct SculptData;
/* sequence related defines */
#define WHILE_SEQ(base) { \
Added: trunk/blender/source/blender/blenkernel/BKE_sculpt.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sculpt.h (rev 0)
+++ trunk/blender/source/blender/blenkernel/BKE_sculpt.h 2007-12-26 22:40:56 UTC (rev 13013)
@@ -0,0 +1,64 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2007 by Nicholas Bishop
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+typedef struct SculptSession {
+ struct ProjVert *projverts;
+
+ struct bglMats *mats;
+
+ /* An array of lists; array is sized as
+ large as the number of verts in the mesh,
+ the list for each vert contains the index
+ for all the faces that use that vertex */
+ struct ListBase *vertex_users;
+ struct IndexNode *vertex_users_mem;
+ int vertex_users_size;
+
+ /* Used temporarily per-stroke */
+ float *vertexcosnos;
+ ListBase damaged_rects;
+ ListBase damaged_verts;
+
+ /* Used to cache the render of the active texture */
+ unsigned int texcache_w, texcache_h, *texcache;
+
+ struct PropsetData *propset;
+
+ /* For rotating around a pivot point */
+ vec3f pivot;
+
+ struct SculptStroke *stroke;
+} SculptSession;
+
+void sculptdata_init(struct Scene *sce);
+void sculptdata_free(struct Scene *sce);
+void sculptsession_free(struct Scene *sce);
+void sculpt_vertexusers_free(struct SculptSession *ss);
+void sculpt_reset_curve(struct SculptData *sd);
+
Modified: trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
===================================================================
--- trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c 2007-12-26 22:40:56 UTC (rev 13013)
@@ -310,10 +310,6 @@
void post_layer_create(struct VLayer *vlayer) {}
void post_layer_destroy(struct VLayer *vlayer) {}
void post_server_add(void) {}
- /* sculpt stubs */
-void sculpt_reset_curve(struct SculptData *sd) {}
-void sculptmode_init(struct Scene *sce) {}
-void sculptmode_free_all(struct Scene *sce) {}
/* zbuf.c stub */
void antialias_tagbuf(int xsize, int ysize, char *rectmove) {}
Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c 2007-12-26 22:40:56 UTC (rev 13013)
@@ -55,8 +55,6 @@
#include "DNA_meshdata_types.h"
#include "DNA_ipo_types.h"
-#include "BDR_sculptmode.h"
-
#include "BKE_customdata.h"
#include "BKE_depsgraph.h"
#include "BKE_main.h"
@@ -1230,3 +1228,70 @@
}
}
+/* Partial Mesh Visibility */
+PartialVisibility *mesh_pmv_copy(PartialVisibility *pmv)
+{
+ PartialVisibility *n= MEM_dupallocN(pmv);
+ n->vert_map= MEM_dupallocN(pmv->vert_map);
+ n->edge_map= MEM_dupallocN(pmv->edge_map);
+ n->old_edges= MEM_dupallocN(pmv->old_edges);
+ n->old_faces= MEM_dupallocN(pmv->old_faces);
+ return n;
+}
+
+void mesh_pmv_free(PartialVisibility *pv)
+{
+ MEM_freeN(pv->vert_map);
+ MEM_freeN(pv->edge_map);
+ MEM_freeN(pv->old_faces);
+ MEM_freeN(pv->old_edges);
+ MEM_freeN(pv);
+}
+
+void mesh_pmv_revert(Object *ob, Mesh *me)
+{
+ if(me->pv) {
+ unsigned i;
+ MVert *nve, *old_verts;
+
+ /* Reorder vertices */
+ nve= me->mvert;
+ old_verts = MEM_mallocN(sizeof(MVert)*me->pv->totvert,"PMV revert verts");
+ for(i=0; i<me->pv->totvert; ++i)
+ old_verts[i]= nve[me->pv->vert_map[i]];
+
+ /* Restore verts, edges and faces */
+ CustomData_free_layer_active(&me->vdata, CD_MVERT, me->totvert);
+ CustomData_free_layer_active(&me->edata, CD_MEDGE, me->totedge);
+ CustomData_free_layer_active(&me->fdata, CD_MFACE, me->totface);
+
+ CustomData_add_layer(&me->vdata, CD_MVERT, CD_ASSIGN, old_verts, me->pv->totvert);
+ CustomData_add_layer(&me->edata, CD_MEDGE, CD_ASSIGN, me->pv->old_edges, me->pv->totedge);
+ CustomData_add_layer(&me->fdata, CD_MFACE, CD_ASSIGN, me->pv->old_faces, me->pv->totface);
+ mesh_update_customdata_pointers(me);
+
+ me->totvert= me->pv->totvert;
+ me->totedge= me->pv->totedge;
+ me->totface= me->pv->totface;
+
+ me->pv->old_edges= NULL;
+ me->pv->old_faces= NULL;
+
+ /* Free maps */
+ MEM_freeN(me->pv->edge_map);
+ me->pv->edge_map= NULL;
+ MEM_freeN(me->pv->vert_map);
+ me->pv->vert_map= NULL;
+
+ DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+ }
+}
+
+void mesh_pmv_off(Object *ob, Mesh *me)
+{
+ if(ob && me->pv) {
+ mesh_pmv_revert(ob, me);
+ MEM_freeN(me->pv);
+ me->pv= NULL;
+ }
+}
Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c 2007-12-26 22:40:56 UTC (rev 13013)
@@ -35,8 +35,6 @@
#include "DNA_object_types.h"
#include "DNA_vec_types.h"
-#include "BDR_sculptmode.h"
-
#include "BIF_editmesh.h"
#include "BLI_arithb.h"
@@ -348,7 +346,7 @@
}
}
-void multires_create(Mesh *me)
+void multires_create(Object *ob, Mesh *me)
{
MultiresLevel *lvl;
EditMesh *em= G.obedit ? G.editMesh : NULL;
@@ -359,7 +357,7 @@
lvl= MEM_callocN(sizeof(MultiresLevel), "multires level");
- if(me->pv) sculptmode_pmv_off(me);
+ if(me->pv) mesh_pmv_off(ob, me);
me->mr= MEM_callocN(sizeof(Multires), "multires data");
@@ -1105,7 +1103,7 @@
MVert *oldverts= NULL;
lvl= MEM_callocN(sizeof(MultiresLevel), "multireslevel");
- if(me->pv) sculptmode_pmv_off(me);
+ if(me->pv) mesh_pmv_off(ob, me);
check_colors(me);
multires_update_levels(me, 0);
@@ -1271,7 +1269,7 @@
void multires_set_level(Object *ob, Mesh *me, const int render)
{
- if(me->pv) sculptmode_pmv_off(me);
+ if(me->pv) mesh_pmv_off(ob, me);
check_colors(me);
multires_update_levels(me, render);
Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c 2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c 2007-12-26 22:40:56 UTC (rev 13013)
@@ -47,6 +47,7 @@
#include "MEM_guardedalloc.h"
#include "DNA_armature_types.h"
+#include "DNA_color_types.h"
#include "DNA_constraint_types.h"
#include "DNA_curve_types.h"
#include "DNA_group_types.h"
@@ -63,6 +64,7 @@
#include "BKE_anim.h"
#include "BKE_armature.h"
#include "BKE_bad_level_calls.h"
+#include "BKE_colortools.h"
#include "BKE_constraint.h"
#include "BKE_depsgraph.h"
#include "BKE_global.h"
@@ -75,11 +77,11 @@
#include "BKE_node.h"
#include "BKE_object.h"
#include "BKE_scene.h"
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list