From d13a0a521491075a3e72c23df754455486dddc27 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sat, 13 Sep 2008 06:37:33 +0000 Subject: [PATCH] simpler edge construction git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2558 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/vertmodel.h | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/source/src/vertmodel.h b/source/src/vertmodel.h index 84ef84f1..4ca530b3 100644 --- a/source/src/vertmodel.h +++ b/source/src/vertmodel.h @@ -198,15 +198,19 @@ struct vertmodel : model const tri &t = tris[i]; loopj(3) { - uint e1 = shareverts[t.vert[j]], e2 = shareverts[t.vert[(j+1)%3]], shift = 0; - if(e1 > e2) { swap(e1, e2); shift = 16; } - uint &edge = edges.access(e1 | (e2<<16), ~0U); - if(((edge>>shift)&0xFFFF) != 0xFFFF) edge = 0; - else + uint e1 = shareverts[t.vert[j]], e2 = shareverts[t.vert[(j+1)%3]]; + uint &edge = edges.access(min(e1, e2) | (max(e1, e2)<<16), ~0U); + if((edge&0xFFFF)==0xFFFF) { - edge &= 0xFFFF<<(16-shift); - edge |= i< e2) { swap(e1, e2); shift = 16; } - uint edge = edges[e1 | (e2<<16)]; - if(!edge || int((edge>>shift)&0xFFFF)!=i) t.neighbor[j] = 0xFFFF; - else - { - t.neighbor[j] = (edge>>(16-shift))&0xFFFF; - //ushort n = (edge>>(16-shift))&0xFFFF; - //t.neighbor[j] = n;//n==0xFFFF ? i : n;//(edge>>(16-shift))&0xFFFF; - } + uint e1 = shareverts[t.vert[j]], e2 = shareverts[t.vert[(j+1)%3]]; + uint edge = edges[min(e1, e2) | (max(e1, e2)<<16)]; + if(!edge) t.neighbor[j] = 0xFFFF; + else t.neighbor[j] = int(edge&0xFFFF)==i ? edge>>16 : edge&0xFFFF; } } }