[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