QuestionHelpDFrame Custom Background Material

Posts 12 of 2 · Page 1 of 1
DFrame Custom Background Material
How do you make this code change the background of a DFrame slower, because when i put this in the paint function it just changes superfast.

Code:
local Backgrounds = { "image1", "image2", "image3", "image4", "image5", "image6" }

surface.SetDrawColor( 255, 255, 255, 255 )
		
surface.SetMaterial( Material( table.Random( Backgrounds ) .. ".jpg" ) )
		
surface.DrawTexturedRect( 0, 0, DermaFrame:GetWide(), DermaFrame:GetTall() )
Code:
local Backgrounds = {
	"gui/center_gradient",
	"gui/gradient",
	"gui/gradient_down",
	"gui/gradient_up",
}
local delay = 2 -- how long it takes for the background to change in seconds

-- ALWAYS cache materials outside of any hooks
for i, img in next, Backgrounds do -- loop through Backgrounds
	Backgrounds[i] = Material(img) -- replace the string with the material
end

hook.Add("HUDPaint", "material shit", function()
	local bgnd = #Backgrounds * delay
	local i = CurTime() % bgnd -- this will return a float between 0 and bgnd
	i = math.Remap(i, 0, bgnd, 0, #Backgrounds)
	i = math.floor(i) + 1 -- table indexes start at 1, not 0.

	surface.SetDrawColor(color_black)
	surface.SetMaterial(Backgrounds[i]) -- set the material
	surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) -- instead of using ScrW and ScrH use the width and height passed to Panel:Paint instead of calling 2 functions
end)
Posts 12 of 2 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?