Files
ox_lib/resource/streaming/client.lua
DokaDoka 34bd55e4a6 feat(resource/streaming): set timeout length and return requested item on success (#4)
* feat: set timeout length

* fix: adjust variable names and set default to 100 ticks

* fix: make timeout local again
2021-12-12 14:14:06 +11:00

59 lines
1.8 KiB
Lua

local function hasLoaded(fn, type, request, limit)
local timeout = limit or 100
while not fn(request) do
Wait(0)
timeout -= 1
if timeout < 1 then
return print(('Unable to load %s after %s ticks (%s)'):format(type, limit, request))
end
end
return request
end
---@param dict string
---@param timeout number
--- Loads an animation dictionary.
function lib.requestAnimDict(dict, timeout)
if HasAnimDictLoaded(dict) then return dict end
assert(DoesAnimDictExist(dict), ('Attempted to load an invalid animdict (%s)'):format(dict))
RequestAnimDict(dict)
return hasLoaded(HasModelLoaded, 'animdict', dict, timeout)
end
---@param set string
---@param timeout number
--- Loads an animation clipset.
function lib.requestAnimSet(set, timeout)
if HasAnimSetLoaded(set) then return set end
RequestAnimSet(set)
return hasLoaded(HasModelLoaded, 'animset', set, timeout)
end
---@param model string|number
---@param timeout number
--- Loads a model.
function lib.requestModel(model, timeout)
model = tonumber(model) or joaat(model)
if HasModelLoaded(model) then return model end
assert(IsModelValid(model), ('Attempted to load an invalid model (%s)'):format(model))
RequestModel(model)
return hasLoaded(HasModelLoaded, 'model', model, timeout)
end
---@param dict string
---@param timeout number
--- Loads a texture dictionary.
function lib.requestStreamedTextureDict(dict, timeout)
if HasStreamedTextureDictLoaded(dict) then return dict end
RequestStreamedTextureDict(dict)
return hasLoaded(HasModelLoaded, 'texture dict', dict, timeout)
end
---@param fxName string
---@param timeout number
--- Loads a named particle effect.
function lib.requestNamedPtfxAsset(fxName, timeout)
if HasNamedPtfxAssetLoaded(fxName) then return fxName end
RequestNamedPtfxAsset(fxName)
return hasLoaded(HasModelLoaded, 'named ptfx', fxName, timeout)
end