From 025a8eb168b606ca4e0f52b780eb4561e414c2c3 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Wed, 21 Sep 2022 01:51:17 +1000 Subject: [PATCH] tweak(client/points): set point.isClosest --- imports/points/client.lua | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/imports/points/client.lua b/imports/points/client.lua index 4c546e72d..cf501cd77 100644 --- a/imports/points/client.lua +++ b/imports/points/client.lua @@ -3,22 +3,26 @@ ---@field coords vector3 ---@field distance number ---@field currentDistance number +---@field isClosest boolean? ---@field remove fun() ---@field onEnter fun(self: CPoint)? ---@field onExit fun(self: CPoint)? ---@field nearby fun(self: CPoint)? local points = {} - -local function removePoint(self) - points[self.id] = nil -end - local nearbyPoints = {} local nearbyCount = 0 local closestPoint local tick +local function removePoint(self) + if closestPoint?.id == self.id then + closestPoint = nil + end + + points[self.id] = nil +end + CreateThread(function() while true do if nearbyCount ~= 0 then @@ -28,7 +32,10 @@ CreateThread(function() local coords = GetEntityCoords(cache.ped) cache.coords = coords - closestPoint = nil + + if closestPoint and #(coords - closestPoint.coords) > closestPoint.distance then + closestPoint = nil + end for _, point in pairs(points) do local distance = #(coords - point.coords) @@ -36,10 +43,16 @@ CreateThread(function() if distance <= point.distance then point.currentDistance = distance - ---@diagnostic disable-next-line: need-check-nil - if distance < (closestPoint?.currentDistance or point.distance) then - closestPoint = point - end + if closestPoint then + if distance < closestPoint.currentDistance then + closestPoint.isClosest = nil + point.isClosest = true + closestPoint = point + end + elseif distance < point.distance then + point.isClosest = true + closestPoint = point + end if point.nearby then nearbyCount += 1