Revision: 48095
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48095
Author:   cyborgmuppet
Date:     2012-06-19 19:15:59 +0000 (Tue, 19 Jun 2012)
Log Message:
-----------
Its now overwriting properly by clearing weights when using replace_mode all.
Reason for not going for suggested "else" on copy in each case is that it would 
present a paradox. 
(it would delete weights that got created in some instances) 

Modified Paths:
--------------
    branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c

Modified: 
branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c    
2012-06-19 18:26:55 UTC (rev 48094)
+++ branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c    
2012-06-19 19:15:59 UTC (rev 48095)
@@ -490,6 +490,14 @@
        invert_m4_m4(ob_src->imat, ob_src->obmat);
        mult_m4_m4m4(tmp_mat, ob_src->imat, ob_dst->obmat);
 
+       /* clear weights */
+       if (replace_mode == REPLACE_ALL_WEIGHTS) {
+               for(i = 0, dv_dst = dv_array_dst; i < me_dst->totvert; i++, 
dv_dst++) {
+                       dw_dst = defvert_verify_index(*dv_dst, index_dst);
+                       if (dw_dst) (*dw_dst).weight = 0;
+               }
+       }
+
        switch (method) {
 
                case BY_INDEX:
@@ -514,10 +522,6 @@
                                        dw_dst = defvert_verify_index(*dv_dst, 
index_dst);
                                        vgroup_transfer_weight(mv_dst, 
&dw_dst->weight, dw_src->weight, replace_mode);
                                }
-                               /* why?
-                               ideasman42 2012/06/19 07:27:34
-                               there should be an 'else {' ... here, which 
checks if 'dv_dst' has any weights and clears them (at least when overwrite is 
enabled). This will depend on the options selected, but you see the issue I 
hope.
-                               */
                        }
                        break;
 
@@ -545,10 +549,6 @@
                                if(dw_src && dw_src->weight) {
                                        dw_dst = defvert_verify_index(*dv_dst, 
index_dst);
                                        vgroup_transfer_weight(mv_dst, 
&dw_dst->weight, dw_src->weight, replace_mode);
-                                       /* why?
-                                       ideasman42 2012/06/19 07:27:34
-                                       there should be an 'else {' ... here, 
which checks if 'dv_dst' has any weights and clears them (at least when 
overwrite is enabled). This will depend on the options selected, but you see 
the issue I hope.
-                                       */
                                }
                        }
 
@@ -660,10 +660,6 @@
                                        dw_dst = defvert_verify_index(*dv_dst, 
index_dst);
                                        vgroup_transfer_weight(mv_dst, 
&dw_dst->weight, dw_src->weight, replace_mode);
                                }
-                                 /*
-ideasman42 2012/06/19 07:27:34 why?
-there should be an 'else {' ... here, which checks if 'dv_dst' has any weights 
and clears them (at least when overwrite is enabled). This will depend on the 
options selected, but you see the issue I hope.
-                                 */
                        }
 
                        /* free memory */

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

Reply via email to