streamingRequest
Le moteur générique « demande un asset, attends qu'il soit prêt, throw au timeout » derrière chaque helper request*.
Le moteur générique « demande un asset, attends qu'il soit prêt, throw au timeout » derrière chaque helper request*.
lib.streamingRequest(request, hasLoaded, assetType, asset, timeout?, ...) est le moteur générique
derrière requestModel, requestAnimDict et requestAnimSet. Utilise-le directement pour n'importe
quelle paire de natives Request* / Has*Loaded pas encore wrappée — IPLs, streamed texture dicts, etc.
-- Un asset non couvert par les wrappers
lib.streamingRequest(RequestIpl, IsIplActive, 'ipl', 'GTAO_Pen_Int_Yacht_Bar', 10000)
-- Streamed texture dict (flag passé en variadic)
lib.streamingRequest(
RequestStreamedTextureDict, HasStreamedTextureDictLoaded,
'textureDict', 'commonmenu', 5000, false
)requestfunctionrequiredLa native Request* à appeler, ex. RequestIpl.
hasLoadedfunctionrequiredLa native Has*Loaded correspondante, ex. IsIplActive.
assetTypestringrequiredLabel utilisé dans le message d'erreur ('model', 'ipl', 'textureDict'…).
assetanyrequiredLe handle / nom de l'asset à charger (hash model, nom de dict…).
timeoutnumberoptionalAttente max en ms avant le throw. Défaut 30000.
...anyoptionalArguments supplémentaires passés à request — utile pour les natives qui prennent des flags.
Il déroule trois étapes : court-circuit si l'asset est déjà chargé (pas d'appel native inutile), appel
de request, puis poll à chaque frame via lib.waitFor jusqu'à ce que hasLoaded renvoie vrai ou que
le timeout expire. Renvoie l'asset une fois chargé.
Il ne fait que charger — la libération de l'asset (SetModelAsNoLongerNeeded, RemoveAnimDict…)
est à ta charge. Il doit tourner dans un thread Citizen (CreateThread, event handler), puisqu'il yield
via lib.waitFor. Le timeout par défaut de 30000 ms est long : abaisse-le pour fail fast sur les
assets légers, et wrappe l'appel dans pcall si un timeout doit être rattrapé au lieu de tuer le thread.