From aa2f761a34c0f67268abf827c32dc38d3f1a95ef Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Sat, 8 Feb 2025 13:14:51 +1100 Subject: [PATCH] fix(scaleform): invalid private property access Adds an isDrawing and draw method to scaleforms. So technically a feature I guess. --- imports/scaleform/client.lua | 53 ++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/imports/scaleform/client.lua b/imports/scaleform/client.lua index e16b7de..b9d84e1 100644 --- a/imports/scaleform/client.lua +++ b/imports/scaleform/client.lua @@ -153,36 +153,43 @@ function lib.scaleform:setRenderTarget(name, model) end end ----@return nil +function lib.scaleform:isDrawing() + return self.private.isDrawing +end + +function lib.scaleform:draw() + if self.target then + SetTextRenderId(self.target) + SetScriptGfxDrawOrder(4) + SetScriptGfxDrawBehindPausemenu(true) + SetScaleformFitRendertarget(self.sfHandle, true) + end + + if self.fullScreen then + DrawScaleformMovieFullscreen(self.sfHandle, 255, 255, 255, 255, 0) + else + if not self.x or not self.y or not self.width or not self.height then + error('attempted to draw scaleform without setting properties') + else + DrawScaleformMovie(self.sfHandle, self.x, self.y, self.width, self.height, 255, 255, 255, 255, 0) + end + end + + if self.target then + SetTextRenderId(1) + end +end + function lib.scaleform:startDrawing() if self.private.isDrawing then return end self.private.isDrawing = true + CreateThread(function() - while self.private.isDrawing do - if self.target then - SetTextRenderId(self.target) - SetScriptGfxDrawOrder(4) - SetScriptGfxDrawBehindPausemenu(true) - SetScaleformFitRendertarget(self.sfHandle, true) - end - - if self.fullScreen then - DrawScaleformMovieFullscreen(self.sfHandle, 255, 255, 255, 255, 0) - else - if not self.x or not self.y or not self.width or not self.height then - error('attempted to draw scaleform without setting properties') - else - DrawScaleformMovie(self.sfHandle, self.x, self.y, self.width, self.height, 255, 255, 255, 255, 0) - end - end - - if self.target then - SetTextRenderId(1) - end - + while self:isDrawing() do + self:draw() Wait(0) end end)