[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22474] branches/blender2.5/blender/source /blender: 2.5/Sculpt:

Nicholas Bishop nicholasbishop at gmail.com
Sat Aug 15 20:58:01 CEST 2009


Revision: 22474
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22474
Author:   nicholasbishop
Date:     2009-08-15 20:58:01 +0200 (Sat, 15 Aug 2009)

Log Message:
-----------
2.5/Sculpt:

* Made sculpt mode local to object.
* This also fixes loading files from 2.4x saved in sculptmode

Touched a lot of things here, let me know if anything breaks

TODO:
* The other paint modes should be converted as well

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
    branches/blender2.5/blender/source/blender/blenkernel/BKE_sculpt.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/armature/poseobject.c
    branches/blender2.5/blender/source/blender/editors/include/ED_object.h
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
    branches/blender2.5/blender/source/blender/editors/sculpt_paint/sculpt.c
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_manipulator.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_orientations.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_object_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_global.h	2009-08-15 18:58:01 UTC (rev 22474)
@@ -122,7 +122,6 @@
 /* #define G_NOFROZEN	(1 << 17) also removed */
 #define G_GREASEPENCIL 	(1 << 17)
 
-#define G_SCULPTMODE    (1 << 29)
 #define G_PARTICLEEDIT	(1 << 30)
 
 /* #define G_AUTOMATKEYS	(1 << 30)   also removed */

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_sculpt.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_sculpt.h	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_sculpt.h	2009-08-15 18:58:01 UTC (rev 22474)
@@ -33,7 +33,7 @@
 struct MFace;
 struct MultireModifierData;
 struct MVert;
-struct Sculpt;
+struct Object;
 struct StrokeCache;
 
 typedef struct SculptSession {
@@ -63,13 +63,10 @@
  	float (*mesh_co_orig)[3]; /* Copy of the mesh vertices' locations */
 	float *layer_disps; /* Displacements for each vertex */
 
-	void *cursor; /* wm handle */
-
 	struct SculptStroke *stroke;
-
 	struct StrokeCache *cache;
 } SculptSession;
 
-void sculptsession_free(struct Sculpt *sculpt);
+void free_sculptsession(SculptSession **);
 
 #endif

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/brush.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -35,6 +35,7 @@
 #include "DNA_brush_types.h"
 #include "DNA_color_types.h"
 #include "DNA_image_types.h"
+#include "DNA_object_types.h"
 #include "DNA_texture_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_windowmanager_types.h"
@@ -187,7 +188,7 @@
 
 Brush **current_brush_source(Scene *sce)
 {
-	if(G.f & G_SCULPTMODE)
+	if(sce->basact && sce->basact->object->mode & OB_MODE_SCULPT)
 		return &sce->toolsettings->sculpt->brush;
 	else if(G.f & G_VERTEXPAINT)
 		return &sce->toolsettings->vpaint->brush;

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/object.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/object.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -107,6 +107,7 @@
 #include "BKE_sca.h"
 #include "BKE_scene.h"
 #include "BKE_screen.h"
+#include "BKE_sculpt.h"
 #include "BKE_softbody.h"
 
 #include "LBM_fluidsim.h"
@@ -222,6 +223,34 @@
 	freedisplist(&ob->disp);
 }
 
+void free_sculptsession(SculptSession **ssp)
+{
+	if(ssp && *ssp) {
+		SculptSession *ss = *ssp;
+		if(ss->projverts)
+			MEM_freeN(ss->projverts);
+
+		if(ss->fmap)
+			MEM_freeN(ss->fmap);
+
+		if(ss->fmap_mem)
+			MEM_freeN(ss->fmap_mem);
+
+		if(ss->texcache)
+			MEM_freeN(ss->texcache);
+
+		if(ss->layer_disps)
+			MEM_freeN(ss->layer_disps);
+
+		if(ss->mesh_co_orig)
+			MEM_freeN(ss->mesh_co_orig);
+
+		MEM_freeN(ss);
+
+		*ssp = NULL;
+	}
+}
+
 /* do not free object itself */
 void free_object(Object *ob)
 {
@@ -276,6 +305,8 @@
 	if(ob->soft) sbFree(ob->soft);
 	if(ob->bsoft) bsbFree(ob->bsoft);
 	if(ob->gpulamp.first) GPU_lamp_free(ob);
+
+	free_sculptsession(&ob->sculpt);
 }
 
 static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Object **obpoin)
@@ -1211,6 +1242,9 @@
 	copy_defgroups(&obn->defbase, &ob->defbase);
 	copy_constraints(&obn->constraints, &ob->constraints);
 
+	obn->mode = 0;
+	obn->sculpt = NULL;
+
 	/* increase user numbers */
 	id_us_plus((ID *)obn->data);
 	id_us_plus((ID *)obn->dup_group);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -77,7 +77,6 @@
 #include "BKE_node.h"
 #include "BKE_object.h"
 #include "BKE_scene.h"
-#include "BKE_sculpt.h"
 #include "BKE_sequence.h"
 #include "BKE_world.h"
 #include "BKE_utildefines.h"
@@ -174,7 +173,6 @@
 			}
 			if(ts->sculpt) {
 				ts->sculpt= MEM_dupallocN(ts->sculpt);
-				ts->sculpt->session= NULL;
 				id_us_plus((ID *)ts->sculpt->brush);
 			}
 
@@ -277,10 +275,8 @@
 			MEM_freeN(sce->toolsettings->vpaint);
 		if(sce->toolsettings->wpaint)
 			MEM_freeN(sce->toolsettings->wpaint);
-		if(sce->toolsettings->sculpt) {
-			sculptsession_free(sce->toolsettings->sculpt);
+		if(sce->toolsettings->sculpt)
 			MEM_freeN(sce->toolsettings->sculpt);
-		}
 		
 		MEM_freeN(sce->toolsettings);
 		sce->toolsettings = NULL;	
@@ -808,33 +804,6 @@
 	srl->passflag= SCE_PASS_COMBINED|SCE_PASS_Z;
 }
 
-void sculptsession_free(Sculpt *sculpt)
-{
-	SculptSession *ss= sculpt->session;
-	if(ss) {
-		if(ss->projverts)
-			MEM_freeN(ss->projverts);
-
-		if(ss->fmap)
-			MEM_freeN(ss->fmap);
-
-		if(ss->fmap_mem)
-			MEM_freeN(ss->fmap_mem);
-
-		if(ss->texcache)
-			MEM_freeN(ss->texcache);
-
-		if(ss->layer_disps)
-			MEM_freeN(ss->layer_disps);
-
-		if(ss->mesh_co_orig)
-			MEM_freeN(ss->mesh_co_orig);
-
-		MEM_freeN(ss);
-		sculpt->session= NULL;
-	}
-}
-
 /* render simplification */
 
 int get_render_subsurf_level(RenderData *r, int lvl)

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -3994,6 +3994,9 @@
 	ob->derivedDeform= NULL;
 	ob->derivedFinal= NULL;
 	ob->gpulamp.first= ob->gpulamp.last= NULL;
+
+	if(ob->sculpt)
+		ob->sculpt= MEM_callocN(sizeof(SculptSession), "reload sculpt session");
 }
 
 /* ************ READ SCENE ***************** */
@@ -4147,9 +4150,6 @@
 		sce->toolsettings->sculpt= newdataadr(fd, sce->toolsettings->sculpt);
 		sce->toolsettings->imapaint.paintcursor= NULL;
 		sce->toolsettings->particle.paintcursor= NULL;
-
-		if(sce->toolsettings->sculpt)
-			sce->toolsettings->sculpt->session= MEM_callocN(sizeof(SculptSession), "reload sculpt session");
 	}
 
 	if(sce->ed) {

Modified: branches/blender2.5/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/poseobject.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/editors/armature/poseobject.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -136,6 +136,7 @@
 			return;
 	}
 	ED_view3d_exit_paint_modes(C);
+	ED_object_toggle_modes(C, ob->mode);
 }
 
 void ED_armature_exit_posemode(bContext *C, Base *base)

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-08-15 18:58:01 UTC (rev 22474)
@@ -59,6 +59,8 @@
 
 void ED_object_parent(struct Object *ob, struct Object *parent, int type, const char *substr);
 
+void ED_object_toggle_modes(struct bContext *C, int mode);
+
 /* bitflags for enter/exit editmode */
 #define EM_FREEDATA		1
 #define EM_FREEUNDO		2

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -3740,7 +3740,7 @@
 		WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene);
 	}
 
-	ED_view3d_restore_paint_modes(C, obedit->restore_mode);
+	ED_object_toggle_modes(C, obedit->restore_mode);
 }
 
 
@@ -3774,7 +3774,9 @@
 	
 	if(flag & EM_WAITCURSOR) waitcursor(1);
 
-	ob->restore_mode = ED_view3d_exit_paint_modes(C);
+	ob->restore_mode = ob->mode;
+	ED_view3d_exit_paint_modes(C);
+	ED_object_toggle_modes(C, ob->mode);
 	
 	if(ob->type==OB_MESH) {
 		Mesh *me= ob->data;
@@ -7034,3 +7036,9 @@
 	if (changed) {
 	}	
 }
+
+void ED_object_toggle_modes(bContext *C, int mode)
+{
+	if(mode & OB_MODE_SCULPT)
+		WM_operator_name_call(C, "SCULPT_OT_sculptmode_toggle", WM_OP_EXEC_REGION_WIN, NULL);
+}

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_context.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_context.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -112,7 +112,7 @@
 		return 1;
 	}
 	else if(CTX_data_equals(member, "sculpt_object")) {
-		if(G.f & G_SCULPTMODE && scene->basact)
+		if(scene->basact && (scene->basact->object->mode & OB_MODE_SCULPT))
 			CTX_data_id_pointer_set(result, &scene->basact->object->id);
 
 		return 1;

Modified: branches/blender2.5/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-08-15 17:46:45 UTC (rev 22473)
+++ branches/blender2.5/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-08-15 18:58:01 UTC (rev 22474)
@@ -217,12 +217,12 @@
    shrink the brush. Skipped for grab brush because only the first mouse down
    size is used, which is small if the user has just touched the pen to the
    tablet */
-static char brush_size(Sculpt *sd)
+static char brush_size(Sculpt *sd, SculptSession *ss)
 {
 	float size= sd->brush->size;
 	
 	if((sd->brush->sculpt_tool != SCULPT_TOOL_GRAB) && (sd->brush->flag & BRUSH_SIZE_PRESSURE))
-		size *= sd->session->cache->pressure;
+		size *= ss->cache->pressure;
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list