51 lines
1.3 KiB
Lua
51 lines
1.3 KiB
Lua
ESX.Math = {}
|
|
|
|
---@param value number
|
|
---@param numDecimalPlaces? number
|
|
---@return number
|
|
function ESX.Math.Round(value, numDecimalPlaces)
|
|
if numDecimalPlaces then
|
|
local power = 10 ^ numDecimalPlaces
|
|
return math.floor((value * power) + 0.5) / power
|
|
else
|
|
return math.floor(value + 0.5)
|
|
end
|
|
end
|
|
|
|
-- credit http://richard.warburton.it
|
|
---@param value number
|
|
---@return string
|
|
function ESX.Math.GroupDigits(value)
|
|
local left, num, right = string.match(value, "^([^%d]*%d)(%d*)(.-)$")
|
|
|
|
return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. TranslateCap("locale_digit_grouping_symbol")):reverse()) .. right
|
|
end
|
|
|
|
---@param value string | number
|
|
---@return string | nil
|
|
function ESX.Math.Trim(value)
|
|
value = tostring(value)
|
|
return (string.gsub(value, "^%s*(.-)%s*$", "%1"))
|
|
end
|
|
|
|
---@param minRange number
|
|
---@param maxRange number
|
|
---@return number
|
|
function ESX.Math.Random(minRange, maxRange)
|
|
math.randomseed(GetGameTimer())
|
|
return math.random(minRange or 1, maxRange or 10)
|
|
end
|
|
|
|
---@param origin vector
|
|
---@param target vector
|
|
---@return number
|
|
function ESX.Math.GetHeadingFromCoords(origin, target)
|
|
local dx = origin.x - target.x
|
|
local dy = origin.y - target.y
|
|
|
|
local heading = math.deg(math.atan(dy, dx)) + 90
|
|
|
|
return (heading + 360) % 360
|
|
end
|
|
|