From ae02b748786a11c141970e1deb34f5a0b878eb76 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Fri, 14 Mar 2025 10:02:37 +1100 Subject: [PATCH] fix(zones): correct contains check --- imports/zones/shared.lua | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/imports/zones/shared.lua b/imports/zones/shared.lua index b045733..6a4b41a 100644 --- a/imports/zones/shared.lua +++ b/imports/zones/shared.lua @@ -13,7 +13,7 @@ local glm = require 'glm' ---@field __type 'poly' | 'sphere' | 'box' ---@field remove fun(self: self) ---@field setDebug fun(self: CZone, enable?: boolean, colour?: vector) ----@field contains fun(self: CZone, coords?: vector3): boolean +---@field contains fun(self: CZone, coords?: vector3, updateDistance?: boolean): boolean ---@type table local Zones = {} @@ -132,7 +132,7 @@ CreateThread(function() local zone = nearbyZones[i] if zone.insideZone then - local contains = zone.thickness and glm_polygon_contains(zone.polygon, coords, zone.thickness / 4) or #(zone.coords - coords) < zone.radius + local contains = zone:contains(coords, true) if not contains then zone.insideZone = false @@ -148,14 +148,7 @@ CreateThread(function() for i = 1, #zones do local zone = zones[i] - local radius, contains = zone.radius, nil - zone.distance = #(zone.coords - coords) - - if radius then - contains = zone.distance < radius - else - contains = glm_polygon_contains(zone.polygon, coords, zone.thickness / 4) - end + local contains = zone:contains(coords, true) if contains then if not zone.insideZone then @@ -273,8 +266,12 @@ local function contains(self, coords) return glm_polygon_contains(self.polygon, coords, self.thickness / 4) end -local function insideSphere(self, coords) - return #(self.coords - coords) < self.radius +local function insideSphere(self, coords, updateDistance) + local distance = #(self.coords - coords) < self.radius + + if updateDistance then self.distance = distance end + + return distance end local function convertToVector(coords)