--[[------------------------------------------------------------------------------------------------ Name: UnitsAroundUnit
Type: Function
Arguments: unit - Valid game unit
distance -
ignoreCombat -
Return: total -
Description:
--]]
Ake.uauCacheSize = Ake.uauCacheSize or 0
local uauCacheTime = uauCacheTime or { }
local uauCacheCount = uauCacheCount or { }
local uauCacheDuration = uauCacheDuration or 0.1
function Ake.UnitsAroundUnit(unit, distance, ignoreCombat)
local uauCacheTime_C = uauCacheTime[unit..distance..tostring(ignoreCombat)]
if uauCacheTime_C and ((uauCacheTime_C + uauCacheDuration) > GetTime()) then
return uauCacheCount[unit..distance..tostring(ignoreCombat)]
end
if UnitExists(unit) then
local total = 0
for i=1, #Ake.objectCache do
local unitDistance = Ake.Distance(Ake.objectCache[i].object, unit)
if unitDistance <= distance then
total = total + 1
end
end
uauCacheCount[unit..distance..tostring(ignoreCombat)] = total
uauCacheTime[unit..distance..tostring(ignoreCombat)] = GetTime()
Ake.uauCacheSize = total
return total
else
Ake.uauCacheSize = 0
return 0
end
end