From 6e10ebe4641e3946b8fc698e19aa7aa684480a99 Mon Sep 17 00:00:00 2001 From: DokaDoka Date: Fri, 13 Jan 2023 16:08:37 +1100 Subject: [PATCH] feat(client/zones): break triangle creating loop of it is going to deadloop --- imports/zones/client.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/imports/zones/client.lua b/imports/zones/client.lua index dc627b8..a9c0752 100644 --- a/imports/zones/client.lua +++ b/imports/zones/client.lua @@ -45,6 +45,7 @@ local function getTriangles(polygon) local a, b, c = 1, 2, 3 local len = #points local zValue = polygon[1].z + local count = 0 while len - #triangles > 2 do if polygon:containsSegment(vec3(glm.segment2d.getPoint(polygon[a].xy, polygon[c].xy, 0.01), zValue), vec3(glm.segment2d.getPoint(polygon[a].xy, polygon[c].xy, 0.99), zValue)) then @@ -58,6 +59,18 @@ local function getTriangles(polygon) b = c c = nextFreePoint(points, b, len) end + + count += 1 + + if count > len and #triangles == 0 then + print('The following polygon failed to be split into triangles for debug') + + for k, v in pairs(polygon) do + print(k, v) + end + + break + end end return triangles