static bool TryGetDisturbance(Edge *tri, float2 r1, float2 r2, float2 c, out float2 e, out float2 u, out Vertex *v, bool lhs) { var next = tri->RNext; v = next->Org; var vert = next->Org->Point; // using v causes burst error var p = tri->Org->Point; if (Math.TriContains(r1, r2, c, vert)) { if (lhs) { u = tri->Dest->Point; e = tri->Org->Point; } else { u = tri->Org->Point; e = tri->Dest->Point; } return(true); } if (!next->Constrained && Math.IntersectSegSeg(p, vert, c, r2)) { return(TryGetDisturbance(next->Sym, r1, r2, c, out e, out u, out v, lhs)); } next = next->RNext; p = tri->Dest->Point; if (!next->Constrained && Math.IntersectSegSeg(p, vert, r1, r2)) { return(TryGetDisturbance(next->Sym, r1, r2, c, out e, out u, out v, lhs)); } e = default; u = default; v = default; return(false); }