Revision: 14427
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14427
Author:   campbellbarton
Date:     2008-04-15 11:20:13 +0200 (Tue, 15 Apr 2008)

Log Message:
-----------
made sculpt axis locking use local/global space (using the transform space)
also added some checks for sculpt mixing with other modes (was possible to mix 
sculpt+posemode)

Modified Paths:
--------------
    trunk/blender/source/blender/src/editarmature.c
    trunk/blender/source/blender/src/outliner.c
    trunk/blender/source/blender/src/poseobject.c
    trunk/blender/source/blender/src/sculptmode.c

Modified: trunk/blender/source/blender/src/editarmature.c
===================================================================
--- trunk/blender/source/blender/src/editarmature.c     2008-04-14 22:45:28 UTC 
(rev 14426)
+++ trunk/blender/source/blender/src/editarmature.c     2008-04-15 09:20:13 UTC 
(rev 14427)
@@ -1855,7 +1855,7 @@
        if ELEM(curarea->spacetype, SPACE_VIEW3D, SPACE_INFO); else return;
        if (G.vd==NULL) return;
        
-       G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT);
+       G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE);
        setcursor_space(SPACE_VIEW3D, CURSOR_STD);
 
        check_editmode(OB_ARMATURE);

Modified: trunk/blender/source/blender/src/outliner.c
===================================================================
--- trunk/blender/source/blender/src/outliner.c 2008-04-14 22:45:28 UTC (rev 
14426)
+++ trunk/blender/source/blender/src/outliner.c 2008-04-15 09:20:13 UTC (rev 
14427)
@@ -1302,6 +1302,8 @@
        return retval;
 }
 
+/* This is not used anywhere at the moment */
+#if 0
 static void outliner_open_reveal(SpaceOops *soops, ListBase *lb, TreeElement 
*teFind, int *found)
 {
        TreeElement *te;
@@ -1324,8 +1326,8 @@
                }
        }
 }
+#endif
 
-
 void outliner_one_level(struct ScrArea *sa, int add)
 {
        SpaceOops *soops= sa->spacedata.first;
@@ -2652,7 +2654,7 @@
                if(G.obedit==base->object) 
exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);
                
                if(base==BASACT) {
-                       G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT);
+                       G.f &= 
~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE);
                        setcursor_space(SPACE_VIEW3D, CURSOR_STD);
                }
                

Modified: trunk/blender/source/blender/src/poseobject.c
===================================================================
--- trunk/blender/source/blender/src/poseobject.c       2008-04-14 22:45:28 UTC 
(rev 14426)
+++ trunk/blender/source/blender/src/poseobject.c       2008-04-15 09:20:13 UTC 
(rev 14427)
@@ -121,7 +121,7 @@
        }
 
        if (G.obedit) exit_editmode(EM_FREEDATA|EM_WAITCURSOR);
-       G.f &= ~(G_VERTEXPAINT | G_TEXTUREPAINT | G_WEIGHTPAINT);
+       G.f &= ~(G_VERTEXPAINT | G_TEXTUREPAINT | G_WEIGHTPAINT | G_SCULPTMODE);
 }
 
 void set_pose_keys (Object *ob)

Modified: trunk/blender/source/blender/src/sculptmode.c
===================================================================
--- trunk/blender/source/blender/src/sculptmode.c       2008-04-14 22:45:28 UTC 
(rev 14426)
+++ trunk/blender/source/blender/src/sculptmode.c       2008-04-15 09:20:13 UTC 
(rev 14427)
@@ -422,9 +422,20 @@
 {
        SculptData *sd = sculpt_data();
        if (sd->axislock == AXISLOCK_X+AXISLOCK_Y+AXISLOCK_Z) return;
-       if (sd->axislock & AXISLOCK_X) co[0] = 0.0;
-       if (sd->axislock & AXISLOCK_Y) co[1] = 0.0;
-       if (sd->axislock & AXISLOCK_Z) co[2] = 0.0;
+       if (G.vd->twmode == V3D_MANIP_LOCAL) {
+               float mat[3][3], imat[3][3];
+               Mat3CpyMat4(mat, OBACT->obmat);
+               Mat3Inv(imat, mat);
+               Mat3MulVecfl(mat, co);
+               if (sd->axislock & AXISLOCK_X) co[0] = 0.0;
+               if (sd->axislock & AXISLOCK_Y) co[1] = 0.0;
+               if (sd->axislock & AXISLOCK_Z) co[2] = 0.0;             
+               Mat3MulVecfl(imat, co);
+       } else {
+               if (sd->axislock & AXISLOCK_X) co[0] = 0.0;
+               if (sd->axislock & AXISLOCK_Y) co[1] = 0.0;
+               if (sd->axislock & AXISLOCK_Z) co[2] = 0.0;             
+       }
 }
 
 static void add_norm_if(const BrushAction *a, float out[3], float out_flip[3], 
const short no[3])


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to