[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56784] trunk/blender/source/blender/bmesh /intern/bmesh_walkers_impl.c: fix for problem where edge loop select would select too many vertices ( extend selection too far),

Jonathan Williamson jonathan at cgcookie.com
Tue May 14 07:16:45 CEST 2013


Thanks so much for this fix!


Jonathan Williamson
http://cgcookie.com


On Mon, May 13, 2013 at 10:10 PM, Jonathan Williamson <
jonathan at montagestudio.org> wrote:

> Thanks so much for this fix!
>
> Jonathan Williamson
> http://cgcookie.com
>
>
> On Mon, May 13, 2013 at 9:55 PM, Campbell Barton <ideasman42 at gmail.com>wrote:
>
>> Revision: 56784
>>
>> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56784
>> Author:   campbellbarton
>> Date:     2013-05-14 04:55:21 +0000 (Tue, 14 May 2013)
>> Log Message:
>> -----------
>> fix for problem where edge loop select would select too many vertices
>> (extend selection too far),
>>
>> before & after:
>> http://www.graphicall.org/ftp/ideasman42/edgeloop_select_fix.png
>>
>> Modified Paths:
>> --------------
>>     trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
>>
>> Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
>> ===================================================================
>> --- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
>>  2013-05-14 04:09:02 UTC (rev 56783)
>> +++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
>>  2013-05-14 04:55:21 UTC (rev 56784)
>> @@ -428,6 +428,15 @@
>>   *
>>   * Starts at a tool-flagged edge and walks over the edge loop
>>   */
>> +
>> +/* utility function */
>> +static bool bm_loop_is_single(BMLoop *l)
>> +{
>> +       return ((BM_edge_is_boundary(l->e)) &&
>> +               (l->f->len != 4) &&
>> +               (BM_edge_is_boundary(l->next->e) ||
>> BM_edge_is_boundary(l->prev->e)));
>> +}
>> +
>>  static void bmw_LoopWalker_begin(BMWalker *walker, void *data)
>>  {
>>         BMwLoopWalker *lwalk = NULL, owalk, *owalk_pt;
>> @@ -444,7 +453,7 @@
>>         lwalk->cur = lwalk->start = e;
>>         lwalk->lastv = lwalk->startv = v;
>>         lwalk->is_boundary = BM_edge_is_boundary(e);
>> -       lwalk->is_single = (vert_edge_count[0] == 2 && vert_edge_count[1]
>> == 2);
>> +       lwalk->is_single = (lwalk->is_boundary &&
>> bm_loop_is_single(e->l));
>>
>>         /* could also check that vertex*/
>>         if ((lwalk->is_boundary == false) &&
>> @@ -639,6 +648,10 @@
>>                         } while (true);
>>                 }
>>
>> +               if (owalk.is_single == false && bm_loop_is_single(l)) {
>> +                       l = NULL;
>> +               }
>> +
>>                 if (l != NULL) {
>>                         if (l != e->l &&
>>                             bmw_mask_check_edge(walker, l->e) &&
>>
>> _______________________________________________
>> Bf-blender-cvs mailing list
>> Bf-blender-cvs at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>
>
>


More information about the Bf-committers mailing list