Revision: 37974
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37974
Author:   psy-fi
Date:     2011-06-30 03:04:51 +0000 (Thu, 30 Jun 2011)
Log Message:
-----------
smart stitch - at last edge stitch working and is now default. Still getting 
some mysterious crashes, will investigate, but at least behavior is as expected 
for now

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-06-30 03:04:39 UTC (rev 37973)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c  
2011-06-30 03:04:51 UTC (rev 37974)
@@ -1401,7 +1401,8 @@
                                                        UvElement *el_iter, 
*element2, *el_sep1, *el_sep2, *iter_sep1, *iter_sep2;
                                                        float uv1[2][2];
                                                        int nverts, stack_iter;
-                                                       int stackSize = 0;
+                                                       int stackSize1 = 0;
+                                                       int stackSize2 = 0;
                                                        int index1, index2;
                                                        UVVertAverage 
uv_average_tmp[2];
                                                        /* need another one of 
these for each of the 2 verts*/
@@ -1489,7 +1490,8 @@
                                                                        }
                                                                        else {
                                                                                
/* Stitchable case, do the necessary stuff */
-                                                                               
UvElement *el_iter2;
+                                                                               
UvElement *el_iter2, *tmp_iter;
+
                                                                                
element->flag |= STITCH_STITCHABLE;
                                                                                
element2->flag |= STITCH_STITCHABLE;
 
@@ -1503,21 +1505,23 @@
                                                                                
/* We need the UvMapVert of the other uv too. */
                                                                                
for(el_iter2 = vmap->vert[v2->tmp.l]; el_iter2; el_iter2 = el_iter2->next){
                                                                                
        if(el_iter2->separate)
-                                                                               
                iter_sep2 = el_iter;
+                                                                               
                iter_sep2 = el_iter2;
                                                                                
        if(el_iter2->face == efa)
                                                                                
                break;
                                                                                
}
 
                                                                                
/* push coincident uv's to the stack to be updated */
-                                                                               
/*for(el_iter2 = vmap->vert[v2->tmp.l]; el_iter2; el_iter2 = el_iter2->next){
-                                                                               
        if(el_iter2->separate && el_iter2 != iter_sep)
+                                                                               
for(tmp_iter = iter_sep1; tmp_iter; tmp_iter = tmp_iter->next){
+                                                                               
        if(tmp_iter->separate && tmp_iter != iter_sep1)
                                                                                
                break;
+                                                                               
        commonVertMaps[stackSize1++] = tmp_iter;
+                                                                               
}
+                                                                               
for(tmp_iter = iter_sep2; tmp_iter; tmp_iter = tmp_iter->next){
+                                                                               
        if(tmp_iter->separate && tmp_iter != iter_sep2)
+                                                                               
                break;
+                                                                               
        commonVertMaps2[stackSize2++] = tmp_iter;
+                                                                               
}
 
-                                                                               
}*/
-                                                                               
commonVertMaps[stackSize] = el_iter;
-                                                                               
commonVertMaps2[stackSize] = el_iter2;
-
-                                                                               
stackSize++;
                                                                                
if(vertCheck)
                                                                                
{
                                                                                
        /* convention is to use the vertex at the beginning of the edge. This 
avoids ambiguity
@@ -1555,25 +1559,41 @@
                                                                        }
                                                                }
 
-                                                               for(stack_iter 
= 0; stack_iter < stackSize; stack_iter++)
-                                                               {
-
-                                                                       index1 
= commonVertMaps[stack_iter] - vmap->buf, index2 = commonVertMaps2[stack_iter] 
- vmap->buf;
+                                                               for(stack_iter 
= 0; stack_iter < stackSize1; stack_iter++){
+                                                                       index1 
= commonVertMaps[stack_iter] - vmap->buf,
                                                                        efa = 
commonVertMaps[stack_iter]->face;
 
                                                                        
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];
                                                                        
uv_average[index1].uv[1] += uv_average_tmp[0].uv[1];
 
+
+                                                                       
preview->numOfOrig++;
+
+                                                                       
if(efa->tmp.l == -1)
+                                                                       {
+                                                                               
if(efa->v4)
+                                                                               
{
+                                                                               
        efa->tmp.l = preview->numOfQuads*8;
+                                                                               
        preview->numOfQuads++;
+                                                                               
} else {
+                                                                               
        efa->tmp.l = preview->numOfTris*6;
+                                                                               
        preview->numOfTris++;
+                                                                               
}
+                                                                       }
+                                                               }
+                                                               for(stack_iter 
= 0; stack_iter < stackSize2; stack_iter++){
+                                                                       index2 
= commonVertMaps2[stack_iter] - vmap->buf;
+                                                                       efa = 
commonVertMaps[stack_iter]->face;
+
+                                                                       
commonVertMaps2[stack_iter]->flag |= STITCH_STITCHABLE;
+
                                                                        
uv_average[index2].count += uv_average_tmp[1].count;
                                                                        
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)

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

Reply via email to