Revision: 32491
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32491
Author:   campbellbarton
Date:     2010-10-15 11:07:19 +0200 (Fri, 15 Oct 2010)

Log Message:
-----------
bugfix [#24264] toggle UV selection fails.
was using the 4th selection flag on tri's.
also some minor changes, removed unused args and corrected some comments.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/blender/editors/include/ED_uvedit.h
    trunk/blender/source/blender/editors/mesh/editmesh_add.c
    trunk/blender/source/blender/editors/space_node/node_header.c
    trunk/blender/source/blender/editors/space_node/node_intern.h
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c        
2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c        
2010-10-15 09:07:19 UTC (rev 32491)
@@ -2237,7 +2237,7 @@
        Object *obact = scene->basact?scene->basact->object:NULL;
        int editing = paint_facesel_test(ob);
        /* weight paint and face select need original indicies because of 
selection buffer drawing */
-       int needMapping = (ob==obact) && (editing || (ob->mode & 
(OB_MODE_WEIGHT_PAINT|OB_MODE_VERTEX_PAINT)) || editing);
+       int needMapping = (ob==obact) && (editing || (ob->mode & 
(OB_MODE_WEIGHT_PAINT|OB_MODE_VERTEX_PAINT)));
 
        clear_mesh_caches(ob);
 

Modified: trunk/blender/source/blender/editors/include/ED_uvedit.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_uvedit.h    2010-10-15 
08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/include/ED_uvedit.h    2010-10-15 
09:07:19 UTC (rev 32491)
@@ -41,7 +41,6 @@
 void ED_keymap_uvedit(struct wmKeyConfig *keyconf);
 
 void ED_uvedit_assign_image(struct Scene *scene, struct Object *obedit, struct 
Image *ima, struct Image *previma);
-void ED_uvedit_set_tile(struct bContext *C, struct Scene *scene, struct Object 
*obedit, struct Image *ima, int curtile, int dotile);
 int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object 
*obedit, float *min, float *max);
 
 int ED_uvedit_test_silent(struct Object *obedit);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c    2010-10-15 
08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c    2010-10-15 
09:07:19 UTC (rev 32491)
@@ -151,7 +151,7 @@
                                project_float_noclip(vc.ar, co1, co1);
                                project_float_noclip(vc.ar, co2, co2);
                                
-                               /* 2D rotate by 90d while subtracting
+                               /* 2D rotate by 90d while adding.
                                 *  (x, y) = (y, -x)
                                 *
                                 * accumulate the screenspace normal in 2D,
@@ -181,14 +181,11 @@
                        cross_v3_v3v3(cross, nor, view_vec);
                        cross_v3_v3v3(nor, view_vec, cross);
                        normalize_v3(nor);
-                       
-                       /* correct for flipping */
                }
                
                /* center */
-               add_v3_v3v3(cent, min, max);
-               mul_v3_fl(cent, 0.5f);
-               VECCOPY(min, cent);
+               mid_v3_v3v3(cent, min, max);
+               copy_v3_v3(min, cent);
                
                mul_m4_v3(vc.obedit->obmat, min);       // view space
                view3d_get_view_aligned_coordinate(&vc, min, event->mval);
@@ -201,7 +198,7 @@
                if(done) {
                        float dot;
                        
-                       VECCOPY(vec, min);
+                       copy_v3_v3(vec, min);
                        normalize_v3(vec);
                        dot= INPR(vec, nor);
 
@@ -241,7 +238,7 @@
                float mat[3][3],imat[3][3];
                float *curs= give_cursor(vc.scene, vc.v3d);
                
-               VECCOPY(min, curs);
+               copy_v3_v3(min, curs);
                view3d_get_view_aligned_coordinate(&vc, min, event->mval);
                
                eve= addvertlist(vc.em, 0, NULL);
@@ -249,7 +246,7 @@
                copy_m3_m4(mat, vc.obedit->obmat);
                invert_m3_m3(imat, mat);
                
-               VECCOPY(eve->co, min);
+               copy_v3_v3(eve->co, min);
                mul_m3_v3(imat, eve->co);
                sub_v3_v3v3(eve->co, eve->co, vc.obedit->obmat[3]);
                

Modified: trunk/blender/source/blender/editors/space_node/node_header.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_header.c       
2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/space_node/node_header.c       
2010-10-15 09:07:19 UTC (rev 32491)
@@ -202,7 +202,7 @@
        }
 }
 
-void node_menus_register(ARegionType *art)
+void node_menus_register(void)
 {
        MenuType *mt;
 

Modified: trunk/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_intern.h       
2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h       
2010-10-15 09:07:19 UTC (rev 32491)
@@ -41,7 +41,7 @@
 
 /* node_header.c */
 void node_header_buttons(const bContext *C, ARegion *ar);
-void node_menus_register(struct ARegionType *art);
+void node_menus_register(void);
 
 /* node_draw.c */
 void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d);

Modified: trunk/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/space_node.c        
2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/space_node/space_node.c        
2010-10-15 09:07:19 UTC (rev 32491)
@@ -452,7 +452,7 @@
        
        BLI_addhead(&st->regiontypes, art);
 
-       node_menus_register(art);
+       node_menus_register();
        
        /* regions: listview/buttons */
        art= MEM_callocN(sizeof(ARegionType), "spacetype node region");

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_ops.c    2010-10-15 
08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c    2010-10-15 
09:07:19 UTC (rev 32491)
@@ -141,7 +141,7 @@
 
 /* dotile -    1, set the tile flag (from the space image)
  *                     2, set the tile index for the faces. */
-void ED_uvedit_set_tile(bContext *C, Scene *scene, Object *obedit, Image *ima, 
int curtile)
+static int uvedit_set_tile(Object *obedit, Image *ima, int curtile)
 {
        EditMesh *em;
        EditFace *efa;
@@ -149,11 +149,14 @@
        
        /* verify if we have something to do */
        if(!ima || !ED_uvedit_test(obedit))
-               return;
-       
+               return 0;
+
+       if((ima->tpageflag & IMA_TILES) == 0)
+               return 0;
+
        /* skip assigning these procedural images... */
        if(ima->type==IMA_TYPE_R_RESULT || ima->type==IMA_TYPE_COMPOSITE)
-               return;
+               return 0;
        
        em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
 
@@ -165,8 +168,9 @@
        }
 
        DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
-       WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
        BKE_mesh_end_editmesh(obedit->data, em);
+
+       return 1;
 }
 
 /*********************** space conversion *********************/
@@ -845,7 +849,8 @@
                        tf = CustomData_em_get(&em->fdata, efa->data, 
CD_MTFACE);
 
                        if(uvedit_face_visible(scene, ima, efa, tf)) {
-                               if(tf->flag & 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4)) {
+                               const char select_flag= efa->v4 ? 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
+                               if(tf->flag & select_flag) {
                                        stack[stacksize]= a;
                                        stacksize++;
                                        flag[a]= 1;
@@ -909,12 +914,9 @@
        else {
                for(a=0, efa= em->faces.first; efa; efa= efa->next, a++) {
                        if(flag[a]) {
+                               const char select_flag= efa->v4 ? 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
                                tf = CustomData_em_get(&em->fdata, efa->data, 
CD_MTFACE);
-                               if(efa->v4) {
-                                       if((tf->flag & 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4)))
-                                               break;
-                               }
-                               else if(tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3))
+                               if((tf->flag & select_flag))
                                        break;
                        }
                }
@@ -1355,10 +1357,11 @@
                if (action == SEL_TOGGLE) {
                        action = SEL_SELECT;
                        for(efa= em->faces.first; efa; efa= efa->next) {
+                               const char select_flag= efa->v4 ? 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
                                tf = CustomData_em_get(&em->fdata, efa->data, 
CD_MTFACE);
 
                                if(uvedit_face_visible(scene, ima, efa, tf)) {
-                                       if(tf->flag & 
(TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4)) {
+                                       if(tf->flag & select_flag) {
                                                action = SEL_DESELECT;
                                                break;
                                        }
@@ -1370,13 +1373,8 @@
                        tf = CustomData_em_get(&em->fdata, efa->data, 
CD_MTFACE);
 
                        if(uvedit_face_visible(scene, ima, efa, tf)) {
-                               char select_flag;
+                               const char select_flag= efa->v4 ? 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
 
-                               if(efa->v4)
-                                       select_flag = 
(TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4);
-                               else
-                                       select_flag = (TF_SEL1+TF_SEL2+TF_SEL3);
-
                                switch (action) {
                                case SEL_SELECT:
                                        tf->flag |= select_flag;
@@ -1937,14 +1935,10 @@
                tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
 
                if(uvedit_face_visible(scene, ima, efa, tf)) {
-                       if(efa->v4) {
-                               if(~tf->flag & 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4))
-                                       tf->flag &= 
~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4);
-                       }
-                       else {
-                               if(~tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3))
-                                       tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3);
-                       }
+                       const char select_flag= efa->v4 ? 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
+                       if(~tf->flag & select_flag)
+                               tf->flag &= ~select_flag;
+
                }
        }
        
@@ -2260,7 +2254,7 @@
 
 /* ******************** circle select operator **************** */
 
-static void select_uv_inside_ellipse(SpaceImage *sima, Scene *scene, int 
select, EditFace *efa, MTFace *tface, int index, float *offset, float *ell, int 
select_index)
+static void select_uv_inside_ellipse(Scene *scene, int select, EditFace *efa, 
MTFace *tface, int index, float *offset, float *ell, int select_index)
 {
        /* normalized ellipse: ell[0] = scaleX, ell[1] = scaleY */
        float x, y, r2, *uv;
@@ -2309,11 +2303,11 @@
        /* do selection */
        for(efa= em->faces.first; efa; efa= efa->next) {
                tface= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
-               select_uv_inside_ellipse(sima, scene, select, efa, tface, 0, 
offset, ellipse, 0);
-               select_uv_inside_ellipse(sima, scene, select, efa, tface, 1, 
offset, ellipse, 1);
-               select_uv_inside_ellipse(sima, scene, select, efa, tface, 2, 
offset, ellipse, 2);
+               select_uv_inside_ellipse(scene, select, efa, tface, 0, offset, 
ellipse, 0);
+               select_uv_inside_ellipse(scene, select, efa, tface, 1, offset, 
ellipse, 1);
+               select_uv_inside_ellipse(scene, select, efa, tface, 2, offset, 
ellipse, 2);
                if(efa->v4)
-                       select_uv_inside_ellipse(sima, scene, select, efa, 
tface, 3, offset, ellipse, 3);
+                       select_uv_inside_ellipse(scene, select, efa, tface, 3, 
offset, ellipse, 3);
        }
 
        if(select) EM_select_flush(em);
@@ -2800,11 +2794,9 @@
                                        tf->flag &= 
~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4);
                                }
                                else if(em->selectmode == SCE_SELECT_FACE) {
-                                       if((tf->flag & 
(TF_SEL1|TF_SEL2|TF_SEL3))==0) {
-                                               if(!efa->v4)
-                                                       EM_select_face(efa, 0);
-                                               else if(!(tf->flag & TF_SEL4))
-                                                       EM_select_face(efa, 0);
+                                       const char select_flag= efa->v4 ? 
(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
+                                       if((tf->flag & select_flag)==0) {

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to