local matScreen = Material( "models/weapons/v_toolgun/screen" ) local txidScreen = surface.GetTextureID( "models/weapons/v_toolgun/screen" ) local txRotating = surface.GetTextureID( "pp/fb" ) local txBackground = surface.GetTextureID( "models/weapons/v_toolgun/screen_bg" ) // GetRenderTarget returns the texture if it exists, or creates it if it doesn't local RTTexture = GetRenderTarget( "GModToolgunScreen", 256, 256 ) surface.CreateFont( "Arial Black", 82, 1000, true, false, "GModToolScreen" ) local function DrawScrollingText( text, y, texwide ) local w, h = surface.GetTextSize( text ) w = w + 64 local x = math.fmod( CurTime() * 400, w ) * -1; while ( x < texwide ) do surface.SetTextColor( 0, 0, 0, 255 ) surface.SetTextPos( x + 3, y + 3 ) surface.DrawText( text ) surface.SetTextColor( 255, 255, 255, 255 ) surface.SetTextPos( x, y ) surface.DrawText( text ) x = x + w end end /*--------------------------------------------------------- We use this opportunity to draw to the toolmode screen's rendertarget texture. ---------------------------------------------------------*/ function SWEP:RenderScreen() local TEX_SIZE = 256 local mode = gmod_toolmode:GetString() local NewRT = RTTexture local oldW = ScrW() local oldH = ScrH() // Set the material of the screen to our render target matScreen:SetMaterialTexture( "$basetexture", NewRT ) local OldRT = render.GetRenderTarget(); // Set up our view for drawing to the texture render.SetRenderTarget( NewRT ) render.SetViewPort( 0, 0, TEX_SIZE, TEX_SIZE ) cam.Start2D() // Background surface.SetDrawColor( 255, 255, 255, 255 ) surface.SetTexture( txBackground ) surface.DrawTexturedRect( 0, 0, TEX_SIZE, TEX_SIZE ) // Give our toolmode the opportunity to override the drawing if ( self:GetToolObject() && self:GetToolObject().DrawToolScreen ) then self:GetToolObject():DrawToolScreen( TEX_SIZE, TEX_SIZE ) else surface.SetFont( "GModToolScreen" ) DrawScrollingText( "#Tool_"..mode.."_name", 64, TEX_SIZE ) end cam.End2D() render.SetRenderTarget( OldRT ) render.SetViewPort( 0, 0, oldW, oldH ) end