From 46a0f2497e23b378e5fd4e15fd3f646333112b2d Mon Sep 17 00:00:00 2001 From: Irlan <-> Date: Tue, 17 Apr 2018 03:21:02 -0300 Subject: [PATCH] optimization --- src/bounce/dynamics/cloth/spring_cloth.cpp | 47 ++++++---------------- 1 file changed, 13 insertions(+), 34 deletions(-) diff --git a/src/bounce/dynamics/cloth/spring_cloth.cpp b/src/bounce/dynamics/cloth/spring_cloth.cpp index 6bf283f..2b1e398 100644 --- a/src/bounce/dynamics/cloth/spring_cloth.cpp +++ b/src/bounce/dynamics/cloth/spring_cloth.cpp @@ -101,53 +101,32 @@ static void b3FindEdges(b3UniqueEdge* uniqueEdges, u32& uniqueCount, b3SharedEdg for (u32 j1 = 0; j1 < 3; ++j1) { u32 t1v1 = i1s[j1]; - u32 t1v2 = i1s[b3NextIndex(j1)]; - u32 foundCount = 0; + bool unique = true; - for (u32 j = i + 1; j < m->triangleCount; ++j) + for (u32 j = 0; j < uniqueCount; ++j) { - b3Triangle* t2 = m->triangles + j; - u32 i2s[3] = { t2->v1, t2->v2, t2->v3 }; + b3UniqueEdge* ue = uniqueEdges + j; - for (u32 j2 = 0; j2 < 3; ++j2) + if (ue->v1 == t1v1 && ue->v2 == t1v2) { - u32 t2v1 = i2s[j2]; - u32 t2v2 = i2s[b3NextIndex(j2)]; - - if (t1v1 == t2v2 && t1v2 == t2v1) - { - // Shared edge - b3SharedEdge se; - se.v1 = t1v1; - se.v2 = t1v2; - - // Non-shared vertices - u32 k1 = b3NextIndex(j1); - u32 k3 = b3NextIndex(k1); - u32 t1v3 = i1s[k3]; - - u32 k2 = b3NextIndex(j2); - u32 k4 = b3NextIndex(k2); - u32 t2v3 = i2s[k4]; - - se.nsv1 = t1v3; - se.nsv2 = t2v3; - - sharedEdges[sharedCount++] = se; - - ++foundCount; - } + unique = false; + break; + } + + if (ue->v2 == t1v1 && ue->v1 == t1v2) + { + unique = false; + break; } } - if (foundCount == 0) + if (unique) { b3UniqueEdge ue; ue.v1 = t1v1; ue.v2 = t1v2; - uniqueEdges[uniqueCount++] = ue; } }