in 2.4x it was optional, but the option was removed in 2.5 so it ran always.
This adds it back, it works by having the operator initialize from the
tool settings, on editing it writes changes back to the tool setting.
(UV unwrap does this too), however IMHO this is weak, we need a better
place to adjust tool settings- like we had in 2.4x for UV unwrap
options.

On Thu, Aug 4, 2011 at 8:44 AM, Daniel Salazar - 3Developer.com
<[email protected]> wrote:
> can you elaborate about this fix? edge slide in UVs is a feature
>
> Daniel Salazar
> 3Developer.com
>
>
>
> On Wed, Aug 3, 2011 at 2:02 AM, Campbell Barton <[email protected]> wrote:
>> Revision: 38972
>>          
>> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38972
>> Author:   campbellbarton
>> Date:     2011-08-03 08:02:32 +0000 (Wed, 03 Aug 2011)
>> Log Message:
>> -----------
>> fix [#28135] Edge slide changes UV
>>
>> Modified Paths:
>> --------------
>>    trunk/blender/source/blender/editors/include/ED_transform.h
>>    trunk/blender/source/blender/editors/transform/transform.c
>>    trunk/blender/source/blender/editors/transform/transform_generics.c
>>    trunk/blender/source/blender/editors/transform/transform_ops.c
>>
>> Modified: trunk/blender/source/blender/editors/include/ED_transform.h
>> ===================================================================
>> --- trunk/blender/source/blender/editors/include/ED_transform.h 2011-08-03 
>> 07:30:24 UTC (rev 38971)
>> +++ trunk/blender/source/blender/editors/include/ED_transform.h 2011-08-03 
>> 08:02:32 UTC (rev 38972)
>> @@ -148,6 +148,7 @@
>>  #define P_ALIGN_SNAP   (P_GEO_SNAP|(1 << 5))
>>  #define P_CONSTRAINT   (1 << 6)
>>  #define P_OPTIONS              (1 << 7)
>> +#define P_CORRECT_UV   (1 << 8)
>>
>>  void Transform_Properties(struct wmOperatorType *ot, int flags);
>>
>>
>> Modified: trunk/blender/source/blender/editors/transform/transform.c
>> ===================================================================
>> --- trunk/blender/source/blender/editors/transform/transform.c  2011-08-03 
>> 07:30:24 UTC (rev 38971)
>> +++ trunk/blender/source/blender/editors/transform/transform.c  2011-08-03 
>> 08:02:32 UTC (rev 38972)
>> @@ -4243,7 +4243,7 @@
>>        /* UV correction vars */
>>        GHash **uvarray= NULL;
>>        SlideData *sld = MEM_callocN(sizeof(*sld), "sld");
>> -       int  uvlay_tot= CustomData_number_of_layers(&em->fdata, CD_MTFACE);
>> +       const int  uvlay_tot=  (t->settings->uvcalc_flag & 
>> UVCALC_TRANSFORM_CORRECT) ? CustomData_number_of_layers(&em->fdata, 
>> CD_MTFACE) : 0;
>>        int uvlay_idx;
>>        TransDataSlideUv *slideuvs=NULL, *suv=NULL, *suv_last=NULL;
>>        RegionView3D *v3d = t->ar ? t->ar->regiondata : NULL; /* background 
>> mode support */
>> @@ -4615,7 +4615,7 @@
>>        sld->end[0] = (int) end[0];
>>        sld->end[1] = (int) end[1];
>>
>> -       if (uvlay_tot) { // XXX && (scene->toolsettings->uvcalc_flag & 
>> UVCALC_TRANSFORM_CORRECT)) {
>> +       if (uvlay_tot) {
>>                int maxnum = 0;
>>
>>                uvarray = MEM_callocN( uvlay_tot * sizeof(GHash *), "SlideUVs 
>> Array");
>> @@ -4805,8 +4805,6 @@
>>
>>  int doEdgeSlide(TransInfo *t, float perc)
>>  {
>> -       Mesh *me= t->obedit->data;
>> -       EditMesh *em = me->edit_mesh;
>>        SlideData *sld = t->customData;
>>        EditVert *ev, *nearest = sld->nearest;
>>        EditVert *centerVert, *upVert, *downVert;
>> @@ -4817,7 +4815,7 @@
>>        int prop=1, flip=0;
>>        /* UV correction vars */
>>        GHash **uvarray= sld->uvhash;
>> -       int  uvlay_tot= CustomData_number_of_layers(&em->fdata, CD_MTFACE);
>> +       const int  uvlay_tot= sld->uvlay_tot;
>>        int uvlay_idx;
>>        TransDataSlideUv *suv;
>>        float uv_tmp[2];
>> @@ -4843,7 +4841,7 @@
>>                        tempev = 
>> editedge_getOtherVert((perc>=0)?tempsv->up:tempsv->down, ev);
>>                        interp_v3_v3v3(ev->co, tempsv->origvert.co, 
>> tempev->co, fabs(perc));
>>
>> -                       if (uvlay_tot) { // XXX 
>> scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
>> +                       if (uvlay_tot) {
>>                                for (uvlay_idx=0; uvlay_idx<uvlay_tot; 
>> uvlay_idx++) {
>>                                        suv = BLI_ghash_lookup( 
>> uvarray[uvlay_idx], ev );
>>                                        if (suv && suv->fuv_list && 
>> suv->uv_up && suv->uv_down) {
>> @@ -4873,7 +4871,7 @@
>>                        if(newlen < 0.0f) {newlen = 0.0;}
>>                        if(flip == 0) {
>>                                interp_v3_v3v3(ev->co, 
>> editedge_getOtherVert(tempsv->down,ev)->co, 
>> editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen));
>> -                               if (uvlay_tot) { // XXX 
>> scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
>> +                               if (uvlay_tot) {
>>                                        /* dont do anything if no UVs */
>>                                        for (uvlay_idx=0; 
>> uvlay_idx<uvlay_tot; uvlay_idx++) {
>>                                                suv = BLI_ghash_lookup( 
>> uvarray[uvlay_idx], ev );
>> @@ -4890,7 +4888,7 @@
>>                        } else{
>>                                interp_v3_v3v3(ev->co, 
>> editedge_getOtherVert(tempsv->up,ev)->co, 
>> editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen));
>>
>> -                               if (uvlay_tot) { // XXX 
>> scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
>> +                               if (uvlay_tot) {
>>                                        /* dont do anything if no UVs */
>>                                        for (uvlay_idx=0; 
>> uvlay_idx<uvlay_tot; uvlay_idx++) {
>>                                                suv = BLI_ghash_lookup( 
>> uvarray[uvlay_idx], ev );
>>
>> Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
>> ===================================================================
>> --- trunk/blender/source/blender/editors/transform/transform_generics.c 
>> 2011-08-03 07:30:24 UTC (rev 38971)
>> +++ trunk/blender/source/blender/editors/transform/transform_generics.c 
>> 2011-08-03 08:02:32 UTC (rev 38972)
>> @@ -1013,6 +1013,22 @@
>>                                t->options |= CTX_NO_PET;
>>                        }
>>                }
>> +
>> +               /* initialize UV transform from */
>> +               if (RNA_struct_find_property(op->ptr, "correct_uv")) {
>> +                       if(RNA_property_is_set(op->ptr, "correct_uv")) {
>> +                               if(RNA_boolean_get(op->ptr, "correct_uv")) {
>> +                                       t->settings->uvcalc_flag |= 
>> UVCALC_TRANSFORM_CORRECT;
>> +                               }
>> +                               else {
>> +                                       t->settings->uvcalc_flag &= 
>> ~UVCALC_TRANSFORM_CORRECT;
>> +                               }
>> +                       }
>> +                       else {
>> +                               RNA_boolean_set(op->ptr, "correct_uv", 
>> t->settings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT);
>> +                       }
>> +               }
>> +
>>        }
>>        else if(t->spacetype==SPACE_IMAGE)
>>        {
>>
>> Modified: trunk/blender/source/blender/editors/transform/transform_ops.c
>> ===================================================================
>> --- trunk/blender/source/blender/editors/transform/transform_ops.c      
>> 2011-08-03 07:30:24 UTC (rev 38971)
>> +++ trunk/blender/source/blender/editors/transform/transform_ops.c      
>> 2011-08-03 08:02:32 UTC (rev 38972)
>> @@ -508,6 +508,11 @@
>>                RNA_def_boolean(ot->srna, "texture_space", 0, "Edit Object 
>> data texture space", "");
>>        }
>>
>> +       if (flags & P_CORRECT_UV)
>> +       {
>> +               RNA_def_boolean(ot->srna, "correct_uv", 0, "Correct UV 
>> coords when transforming", "");
>> +       }
>> +
>>        // Add confirm method all the time. At the end because it's not 
>> really that important and should be hidden only in log, not in keymap edit
>>        /*prop =*/ RNA_def_boolean(ot->srna, "release_confirm", 0, "Confirm 
>> on Release", "Always confirm operation when releasing button");
>>        //RNA_def_property_flag(prop, PROP_HIDDEN);
>> @@ -755,7 +760,7 @@
>>
>>        RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", 
>> -1.0f, 1.0f);
>>
>> -       Transform_Properties(ot, P_MIRROR|P_SNAP);
>> +       Transform_Properties(ot, P_MIRROR|P_SNAP|P_CORRECT_UV);
>>  }
>>
>>  void TRANSFORM_OT_edge_crease(struct wmOperatorType *ot)
>>
>> _______________________________________________
>> Bf-blender-cvs mailing list
>> [email protected]
>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>
> _______________________________________________
> Bf-committers mailing list
> [email protected]
> http://lists.blender.org/mailman/listinfo/bf-committers
>



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

Reply via email to