Revision: 38708
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38708
Author: psy-fi
Date: 2011-07-25 19:36:47 +0000 (Mon, 25 Jul 2011)
Log Message:
-----------
smart stitch
============================
- smart stitch: Better selection for edges: now deselecting an edge with common
uv's with another does not deselect the other. This is a step towards a better
system, not based on selection, but most probably on a dynamic RNA property
array. This will allow for operator redo on uv's selected during modal
operation of the operator.
Modified Paths:
--------------
branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
Modified: branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-07-25 18:15:05 UTC (rev 38707)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-07-25 19:36:47 UTC (rev 38708)
@@ -1540,7 +1540,7 @@
/****************** Edge stitching case
*************************/
} else {
/* Is this edge selected? */
- if(mt->flag & TF_SEL_MASK(i) &&
mt->flag & TF_SEL_MASK((i+1)%vertsPerFace))
+ if(mt->flag & TF_SEL_MASK(i))
{
EditVert *v1, *v2;
/* The sep hold the first
UVElement coincident with our elements. If edge
@@ -2183,46 +2183,51 @@
{
/* same as above but for two
verts. Maybe make a function for this after implementation is concrete */
UvElement *element =
stitch_state->vmap->vert[hit.vert];
- UvElement *element2 =
stitch_state->vmap->vert[hit.vert2];
+ //UvElement *element2 =
stitch_state->vmap->vert[hit.vert2];
- UvElement *firstCoincident;
+ //UvElement *firstCoincident;
for(; element; element =
element->next)
{
- if(element->separate)
- firstCoincident
= element;
- if(element->face ==
hit.efa){
- for(element =
firstCoincident; element; element = element->next){
- MTFace
*tface;
-
if(element->separate && element != firstCoincident)
-
break;
- tface =
CustomData_em_get(&stitch_state->em->fdata, element->face->data, CD_MTFACE);
-
if(event->ctrl)
+ int nverts =
element->face->v4 ? 4 : 3;
+ int nextflag = 0;
+ if((nextflag =
(*(&element->face->v1 + (1 + element->tfindex)%nverts))->tmp.l == hit.vert2) ||
+
(*(&element->face->v1 + (element->tfindex - 1 + nverts)%nverts))->tmp.l ==
hit.vert2)
+ {
+ MTFace *tface =
CustomData_em_get(&stitch_state->em->fdata, element->face->data, CD_MTFACE);
+
if(element->face == hit.efa)
+ {
+
if(nextflag)
+ {
+
if(event->ctrl){
+
uvedit_uv_deselect(scene, element->face, tface, element->tfindex);
+
//uvedit_uv_deselect(scene, element->face, tface, (element->tfindex +
1)%nverts);
+
}
+
else{
+
uvedit_uv_select(scene, element->face, tface, element->tfindex);
+
//uvedit_uv_select(scene, element->face, tface, (element->tfindex +
1)%nverts);
+
}
+ }else{
+
if(event->ctrl){
+
//uvedit_uv_deselect(scene, element->face, tface, element->tfindex);
+
uvedit_uv_deselect(scene, element->face, tface, (element->tfindex - 1 +
nverts)%nverts);
+
}
+
else{
+
//uvedit_uv_select(scene, element->face, tface, element->tfindex);
+
uvedit_uv_select(scene, element->face, tface, (element->tfindex - 1 +
nverts)%nverts);
+
}
+ }
+ }else{
+
if(nextflag)
+ {
uvedit_uv_deselect(scene, element->face, tface, element->tfindex);
- else
-
uvedit_uv_select(scene, element->face, tface, element->tfindex);
+
//uvedit_uv_deselect(scene, element->face, tface, (element->tfindex +
1)%nverts);
+ }else{
+
//uvedit_uv_deselect(scene, element->face, tface, element->tfindex);
+
uvedit_uv_deselect(scene, element->face, tface, (element->tfindex - 1 +
nverts)%nverts);
+ }
}
- break;
}
}
-
- for(; element2; element2 =
element2->next)
- {
- if(element2->separate)
- firstCoincident
= element2;
- if(element2->face ==
hit.efa){
- for(element2 =
firstCoincident; element2; element2 = element2->next){
- MTFace
*tface;
-
if(element2->separate && element2 != firstCoincident)
-
break;
- tface =
CustomData_em_get(&stitch_state->em->fdata, element2->face->data, CD_MTFACE);
-
if(event->ctrl)
-
uvedit_uv_deselect(scene, element2->face, tface, element2->tfindex);
- else
-
uvedit_uv_select(scene, element2->face, tface, element2->tfindex);
- }
- break;
- }
- }
}
}
stitch_process_data(stitch_state, 0, scene, 0);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs
