From f4af0d90bd42b7c7ba3ef14a80cce6fc7d13a189 Mon Sep 17 00:00:00 2001 From: ASTROWwwW Date: Tue, 16 Jun 2026 21:03:41 +0200 Subject: [PATCH] feat(esx_lib/streaming): move streaming request helpers to xLib --- [core]/es_extended/client/compat.lua | 9 ++ .../es_extended/client/modules/streaming.lua | 70 --------------- [core]/es_extended/fxmanifest.lua | 1 - [core]/esx_lib/imports/streaming/client.lua | 86 +++++++++++++++++++ 4 files changed, 95 insertions(+), 71 deletions(-) delete mode 100644 [core]/es_extended/client/modules/streaming.lua create mode 100644 [core]/esx_lib/imports/streaming/client.lua diff --git a/[core]/es_extended/client/compat.lua b/[core]/es_extended/client/compat.lua index ea60dc70..c92dd193 100644 --- a/[core]/es_extended/client/compat.lua +++ b/[core]/es_extended/client/compat.lua @@ -37,3 +37,12 @@ end ESX.Game.GetClosestEntity = xLib.entity.closest EnumerateEntitiesWithinDistance = xLib.entity.EnumerateWithinDistance ESX.Game.Teleport = xLib.entity.Teleport + +ESX.Streaming = { + RequestModel = xLib.streaming.requestModel, + RequestStreamedTextureDict = xLib.streaming.requestStreamedTextureDict, + RequestNamedPtfxAsset = xLib.streaming.requestNamedPtfxAsset, + RequestAnimSet = xLib.streaming.requestAnimSet, + RequestAnimDict = xLib.streaming.requestAnimDict, + RequestWeaponAsset = xLib.streaming.requestWeaponAsset, +} diff --git a/[core]/es_extended/client/modules/streaming.lua b/[core]/es_extended/client/modules/streaming.lua deleted file mode 100644 index 8614c4fb..00000000 --- a/[core]/es_extended/client/modules/streaming.lua +++ /dev/null @@ -1,70 +0,0 @@ -ESX.Streaming = {} - ----@param modelHash number | string ----@param cb? function ----@return number | nil -function ESX.Streaming.RequestModel(modelHash, cb) - modelHash = type(modelHash) == "number" and modelHash or joaat(modelHash) - - if not IsModelInCdimage(modelHash) then return end - - RequestModel(modelHash) - while not HasModelLoaded(modelHash) do Wait(500) end - - return cb and cb(modelHash) or modelHash -end - ----@param textureDict string ----@param cb? function ----@return string | nil -function ESX.Streaming.RequestStreamedTextureDict(textureDict, cb) - RequestStreamedTextureDict(textureDict, false) - - while not HasStreamedTextureDictLoaded(textureDict) do Wait(500) end - - return cb and cb(textureDict) or textureDict -end - ----@param assetName string ----@param cb? function ----@return string | nil -function ESX.Streaming.RequestNamedPtfxAsset(assetName, cb) - RequestNamedPtfxAsset(assetName) - - while not HasNamedPtfxAssetLoaded(assetName) do Wait(500) end - - return cb and cb(assetName) or assetName -end - ----@param animSet string ----@param cb? function ----@return string | nil -function ESX.Streaming.RequestAnimSet(animSet, cb) - RequestAnimSet(animSet) - - while not HasAnimSetLoaded(animSet) do Wait(500) end - - return cb and cb(animSet) or animSet -end - ----@param animDict string ----@param cb? function ----@return string | nil -function ESX.Streaming.RequestAnimDict(animDict, cb) - RequestAnimDict(animDict) - - while not HasAnimDictLoaded(animDict) do Wait(500) end - - return cb and cb(animDict) or animDict -end - ----@param weaponHash number | string ----@param cb? function ----@return string | number | nil -function ESX.Streaming.RequestWeaponAsset(weaponHash, cb) - RequestWeaponAsset(weaponHash, 31, 0) - - while not HasWeaponAssetLoaded(weaponHash) do Wait(500) end - - return cb and cb(weaponHash) or weaponHash -end diff --git a/[core]/es_extended/fxmanifest.lua b/[core]/es_extended/fxmanifest.lua index f4005de1..d8c2112b 100644 --- a/[core]/es_extended/fxmanifest.lua +++ b/[core]/es_extended/fxmanifest.lua @@ -58,7 +58,6 @@ client_scripts { 'client/modules/npwd.lua', 'client/modules/interactions.lua', 'client/modules/scaleform.lua', - 'client/modules/streaming.lua', } ui_page { diff --git a/[core]/esx_lib/imports/streaming/client.lua b/[core]/esx_lib/imports/streaming/client.lua new file mode 100644 index 00000000..db392e17 --- /dev/null +++ b/[core]/esx_lib/imports/streaming/client.lua @@ -0,0 +1,86 @@ +---@class streaminglib +xLib.streaming = {} + +---@param modelHash number | string +---@param cb? function +---@return number | nil +function xLib.streaming.requestModel(modelHash, cb) + modelHash = type(modelHash) == "number" and modelHash or joaat(modelHash) + + if not IsModelInCdimage(modelHash) then return end + + RequestModel(modelHash) + + while not HasModelLoaded(modelHash) do + Wait(500) + end + + return cb and cb(modelHash) or modelHash +end + +---@param textureDict string +---@param cb? function +---@return string | nil +function xLib.streaming.requestStreamedTextureDict(textureDict, cb) + RequestStreamedTextureDict(textureDict, false) + + while not HasStreamedTextureDictLoaded(textureDict) do + Wait(500) + end + + return cb and cb(textureDict) or textureDict +end + +---@param assetName string +---@param cb? function +---@return string | nil +function xLib.streaming.requestNamedPtfxAsset(assetName, cb) + RequestNamedPtfxAsset(assetName) + + while not HasNamedPtfxAssetLoaded(assetName) do + Wait(500) + end + + return cb and cb(assetName) or assetName +end + +---@param animSet string +---@param cb? function +---@return string | nil +function xLib.streaming.requestAnimSet(animSet, cb) + RequestAnimSet(animSet) + + while not HasAnimSetLoaded(animSet) do + Wait(500) + end + + return cb and cb(animSet) or animSet +end + +---@param animDict string +---@param cb? function +---@return string | nil +function xLib.streaming.requestAnimDict(animDict, cb) + RequestAnimDict(animDict) + + while not HasAnimDictLoaded(animDict) do + Wait(500) + end + + return cb and cb(animDict) or animDict +end + +---@param weaponHash number | string +---@param cb? function +---@return string | number | nil +function xLib.streaming.requestWeaponAsset(weaponHash, cb) + RequestWeaponAsset(weaponHash, 31, 0) + + while not HasWeaponAssetLoaded(weaponHash) do + Wait(500) + end + + return cb and cb(weaponHash) or weaponHash +end + +return xLib.streaming