ah its optional now, great cheers
Daniel Salazar 3Developer.com On Wed, Aug 3, 2011 at 6:20 PM, Campbell Barton <[email protected]> wrote: > 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 > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
