include('shared.lua')
local matScreen = Material( "models/scroller2/screen" )
-- GetRenderTarget returns the texture if it exists, or creates it if it doesn't
local RTTexture = GetRenderTarget( "scrollx", 256, 256 )
surface.CreateFont( "coolvetica", 24, 500, false, false, "scrollt" )
local function DrawScrollingText( text, y, texwide )
surface.SetDrawColor( 0, 0, 0, 255 )
surface.DrawRect( 0, 0, 1024, 1024)
w,h=surface.GetTextSize(text)
h = h + 1024
local x = math.fmod( CurTime()*150, w ) * -1;
while ( x < texwide ) do
surface.SetTextColor( 255, 255, 255, 255 )
surface.SetTextPos( x, y )
surface.DrawText( text )
x = x + w
end
end
function ENT:Draw()
self.Entity:DrawModel()
if ( LocalPlayer():EyePos():Distance(self.Entity:GetPos() )< 512 ) then
local NewRT = RTTexture
matScreen:SetMaterialTexture( "$basetexture", NewRT )
local OldRT = render.GetRenderTarget();
render.SetRenderTarget( NewRT )
render.SetViewPort( 0, 0, 256, 256 )
render.Clear( 0, 0, 0, 255, true )
cam.Start2D()
surface.SetFont( "scrollt" )
DrawScrollingText( self.Entity:GetNetworkedString("text"), 128, 256 )
cam.End2D()
render.SetViewPort( 0, 0, ScrW(), ScrH() )
render.SetRenderTarget( OldRT )
end
end