cam.Start3D2D PLY Keypress Toggle??

So, I have this Derma panel & Model. The Model has been scripted into an Entity. The Derma Panel has been finished. When a Player goes up to said Entity and presses the use key “E” on the Scripted Entity the Derma panel will run, then when “Esc” is pressed it quits.

Now, I’ve taken this a bit further. I wanted what the Player was viewing on the Derma panel to be shown on the face of the Scripted Entity in real time. Which I was able to figure out.

Now, I want some sort of idle screen. Like, when there is no player using the derma panel it’ll display something other then the html derma panel.

This isn’t hard. I know I can use just a 2nd Material & cam.Start3D2D blah, blah, blah… boring, boring, boring. But, I need to figure out how I can toggle cam.Start3D2D via keypress. Any ideas? P.s. lil bit of my code below.



cl_init.lua



	local html = vgui.Create( "HTML" )
		html:SetPos( 50, 50 )
        	html:SetSize( ScrW() - 100, ScrH() - 100 )
        	html:MakePopup()
        	html:Center() 
        	html:OpenURL ( "https://example.com/url" )
        	html:SetVisible(false)


	net.Receive("Enable_Derma",function()
		local ent = net.ReadEntity()
		if not html:IsVisible() then
        		html:SetVisible(true)
        		html:SetKeyboardInputEnabled(true)
        		html:SetMouseInputEnabled(true)
        		gui.EnableScreenClicker(true)

		end
end)


	function Disable_Derma()
		if html:IsVisible() and input.IsKeyDown( KEY_ESCAPE ) then
			html:SetVisible(false)
			html:SetKeyboardInputEnabled(false)
			html:SetMouseInputEnabled(false)
			gui.EnableScreenClicker(false)
		end
end

hook.Add("Think","Disable_Derma",Disable_Derma) 




	local function DrawSign()

        -- Draw a background
        	surface.SetDrawColor(255, 255, 255, 0)
        	surface.DrawRect(0, 0, 73, 64)
		
 
        -- Draw the screen  
        	if not html:GetHTMLMaterial()then return end
        	render.SetMaterial(html:GetHTMLMaterial())
        	render.DrawQuad(Vector(0, 0, 0),
                	Vector(125.5, 0, 0), --forward
                	Vector(125.5, 96.4, -1),
                	Vector(1.1, 96.4, -1))
end


function ENT:Draw ()

	self:DrawModel()
		local pos = self:GetPos()+(self:GetForward()*0)+(self:GetRight()*0)+self:GetUp()*0
		local rot = Vector(-63, 90, 0)  
		local ang = self:GetAngles()
			ang:RotateAroundAxis(ang:Right(),   rot.x)  
			ang:RotateAroundAxis(ang:Up(),      rot.y)  
			ang:RotateAroundAxis(ang:Forward(), rot.z)

		cam.Start3D2D(self:GetPos()+(self:GetForward()*-1)+(self:GetRight()*14.5)+self:GetUp()*73.6,ang,0.4)
			local status, err = pcall(DrawSign)
		cam.End3D2D()
		
end