Revision: 37968
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37968
Author: psy-fi
Date: 2011-06-30 01:30:35 +0000 (Thu, 30 Jun 2011)
Log Message:
-----------
smart stitch - my bug spray got two of them, more to come
Modified Paths:
--------------
branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c
branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
Modified: branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c
2011-06-30 01:13:15 UTC (rev 37967)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_draw.c
2011-06-30 01:30:35 UTC (rev 37968)
@@ -877,7 +877,7 @@
else
{
/* draw edge preview */
- glDrawArrays(GL_LINES, 0, stitch_preview->numOfOrig);
+ glDrawArrays(GL_LINES, 0, 2*stitch_preview->numOfOrig);
}
glPopClientAttrib();
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
Modified: branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-06-30 01:13:15 UTC (rev 37967)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-06-30 01:30:35 UTC (rev 37968)
@@ -1393,23 +1393,20 @@
/****************** Edge stitching case
*************************/
} else
{
- char edgeSelFlag =
TF_SEL_MASK(i) | TF_SEL_MASK((i+1)%vertsPerFace);
-
- /* need another one of these
for each of the 2 verts*/
- UvElement **commonVertMaps2 =
MEM_mallocN(state->em->totface*sizeof(UvElement *), "commonVertMaps2");
-
/* Is this edge selected? */
- if(mt->flag & edgeSelFlag)
+ if(mt->flag & TF_SEL_MASK(i) &&
mt->flag & TF_SEL_MASK((i+1)%vertsPerFace))
{
EditVert *v1, *v2;
UvElement *el_iter,
*element2;
float uv1[2][2];
- int nverts;
+ int nverts, stack_iter;
int stackSize = 0;
int index1, index2;
UVVertAverage
uv_average_tmp[2];
+ /* need another one of
these for each of the 2 verts*/
+ UvElement
**commonVertMaps2 = MEM_mallocN(state->em->totface*sizeof(UvElement *),
"commonVertMaps2");
- memset(uv_average_tmp,
sizeof(uv_average_tmp), 0);
+ memset(uv_average_tmp,
0, sizeof(uv_average_tmp));
v1 = *(&editFace->v1 +
i);
v2 = *(&editFace->v1 +
(i + 1)%vertsPerFace);
@@ -1543,14 +1540,14 @@
}
}
- for(; stackSize
> -1; stackSize--)
+ for(stack_iter
= 0; stack_iter < stackSize; stack_iter++)
{
- index1
= commonVertMaps[stackSize] - vmap->buf, index2 = commonVertMaps2[stackSize] -
vmap->buf;
- efa =
commonVertMaps[stackSize]->face;
+ index1
= commonVertMaps[stack_iter] - vmap->buf, index2 = commonVertMaps2[stack_iter]
- vmap->buf;
+ efa =
commonVertMaps[stack_iter]->face;
-
commonVertMaps[stackSize]->flag |= STITCH_STITCHABLE;
-
commonVertMaps2[stackSize]->flag |= STITCH_STITCHABLE;
+
commonVertMaps[stack_iter]->flag |= STITCH_STITCHABLE;
+
commonVertMaps2[stack_iter]->flag |= STITCH_STITCHABLE;
uv_average[index1].count += uv_average_tmp[0].count;
uv_average[index1].uv[0] += uv_average_tmp[0].uv[0];
@@ -1560,6 +1557,8 @@
uv_average[index2].uv[0] += uv_average_tmp[1].uv[0];
uv_average[index2].uv[1] += uv_average_tmp[1].uv[1];
+
preview->numOfOrig++;
+
if(efa->tmp.l == -1)
{
if(efa->v4)
@@ -1573,8 +1572,8 @@
}
}
}
+
MEM_freeN(commonVertMaps2);
}
- MEM_freeN(commonVertMaps2);
}
}
}
@@ -1627,13 +1626,13 @@
bufferIterator++;
} else if(element->flag & STITCH_EDGE_PREVIEW){
int nverts = (efa->v4)? 4 : 3;
- preview->previewOrig[bufferIterator*2]
= mt->uv[element->tfindex][0];
- preview->previewOrig[bufferIterator*2 +
1] = mt->uv[element->tfindex][1];
- preview->previewOrig[bufferIterator*2 +
2] = mt->uv[(element->tfindex + 1)%nverts][0];
- preview->previewOrig[bufferIterator*2 +
3] = mt->uv[(element->tfindex + 1)%nverts][1];
+ preview->previewOrig[bufferIterator*4]
= mt->uv[element->tfindex][0];
+ preview->previewOrig[bufferIterator*4 +
1] = mt->uv[element->tfindex][1];
+ preview->previewOrig[bufferIterator*4 +
2] = mt->uv[(element->tfindex + 1)%nverts][0];
+ preview->previewOrig[bufferIterator*4 +
3] = mt->uv[(element->tfindex + 1)%nverts][1];
-
preview->previewOrigColors[bufferIterator] = 0x0000FF00;
-
preview->previewOrigColors[bufferIterator + 1] = 0x0000FF00;
+
preview->previewOrigColors[bufferIterator*2] = 0x0000FF00;
+
preview->previewOrigColors[bufferIterator*2 + 1] = 0x0000FF00;
bufferIterator++;
}
if(efa->v4){
@@ -1660,13 +1659,13 @@
bufferIterator++;
} else if(element->flag & STITCH_EDGE_PREVIEW){
int nverts = (efa->v4)? 4 : 3;
- preview->previewOrig[bufferIterator*2]
= mt->uv[element->tfindex][0];
- preview->previewOrig[bufferIterator*2 +
1] = mt->uv[element->tfindex][1];
- preview->previewOrig[bufferIterator*2 +
2] = mt->uv[(element->tfindex + 1)%nverts][0];
- preview->previewOrig[bufferIterator*2 +
3] = mt->uv[(element->tfindex + 1)%nverts][1];
+ preview->previewOrig[bufferIterator*4]
= mt->uv[element->tfindex][0];
+ preview->previewOrig[bufferIterator*4 +
1] = mt->uv[element->tfindex][1];
+ preview->previewOrig[bufferIterator*4 +
2] = mt->uv[(element->tfindex + 1)%nverts][0];
+ preview->previewOrig[bufferIterator*4 +
3] = mt->uv[(element->tfindex + 1)%nverts][1];
-
preview->previewOrigColors[bufferIterator] = 0x0000FF00;
-
preview->previewOrigColors[bufferIterator + 1] = 0x0000FF00;
+
preview->previewOrigColors[bufferIterator*2] = 0x000000FF;
+
preview->previewOrigColors[bufferIterator*2 + 1] = 0x000000FF;
bufferIterator++;
}
element->flag = 0;
@@ -1718,7 +1717,7 @@
stitch_state->use_limit = RNA_boolean_get(op->ptr, "use_limit");
stitch_state->limitDist = RNA_float_get(op->ptr, "limit");
stitch_state->em = em = BKE_mesh_get_editmesh((Mesh*)obedit->data);
- stitch_state->mode = VERT_STITCH;
+ stitch_state->mode = EDGE_STITCH;
stitch_state->vmap = EM_make_uv_vert_map2(stitch_state->em, 1, limit);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs