[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