View difference between Paste ID: H7DwU6Xr and CDhMDvM4
SHOW: | | - or go back to the newest paste.
1
local cam = cam
2
local draw = draw
3
local ScrW = ScrW
4
local ScrH = ScrH
5
local Color = Color
6
local Angle = Angle
7
local Vector = Vector
8
local surface = surface
9
local tonumber = tonumber
10
local ColorToHSV = ColorToHSV
11
local HSVToColor = HSVToColor
12
13
local hide = {
14
	CHudHealth  = true,
15
	CHudBattery = true,
16
}
17
18
local function HideThings( name )
19
    if ( hide[ name ] ) then return false end
20
end
21
hook.Add( "HUDShouldDraw", "HideThings", HideThings )
22
23
24
local BLACK = Color( 0, 0, 0 )
25
local WHITE = Color( 255, 255, 255 )
26
local GRAY  = Color(120,120,120,50) 
27
28
--[[-------------------------------------------------------------------------------]]--
29
visualizer = visualizer or {}
30
--[[-------------------------------------------------------------------------------]]--
31
visualizer.levels = visualizer.levels or {
32
	[FFT_256]   = 128,
33
	[FFT_512]   = 256,
34
	[FFT_1024]  = 512,
35
	[FFT_2048]  = 1024,
36
	[FFT_4096]  = 2048,
37
	[FFT_8192]  = 4096,
38
	[FFT_16384] = 8192,
39
}
40
--[[-------------------------------------------------------------------------------]]--
41
visualizer.Level  = FFT_256
42
visualizer.LevelW = 22
43
visualizer.LevelH = ScrH()
44
visualizer.TotalW = visualizer.LevelW * visualizer.levels[ visualizer.Level ]
45
46
visualizer.URL     = "http://jukebox.ijwtb.net/music/Capital Cities/In A Tidal Wave Of Mystery/I Sold My Bed, But Not My Stereo.mp3"
47
visualizer.Channel = visualizer.Channel
48
49
visualizer.Pos = Vector( -1000, 1000, -11275 )
50
visualizer.Ang = Angle( 0, 0, 90 )
51
visualizer.Color = Color( 255, 0, 0 )
52
visualizer.BGColor = BLACK
53
visualizer.BorderColor = WHITE
54
visualizer.Borders = true
55
--[[-------------------------------------------------------------------------------]]--
56
concommand.Add( "visualizer_url", function( ply, cmd, args, str )
57
	visualizer.URL = args[1]
58
end )
59
--[[-------------------------------------------------------------------------------]]--
60
concommand.Add( "visualizer_levels", function( ply, cmd, args, str )
61
	local num = tonumber( args[1] )
62
	if ( !num ) then return end
63
	
64
	local fft = _G[ "FFT_" .. num ]
65
	if ( !fft ) then return end
66
	
67
	visualizer.Level = fft
68
	visualizer.TotalW = visualizer.LevelW * visualizer.levels[ fft ]
69
end )
70
--[[-------------------------------------------------------------------------------]]--
71
concommand.Add( "visualizer_pos", function( ply, cmd, args, str )
72
	local x, y, z = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] )
73
	if ( !x or !y or !z ) then return end
74
	
75
	visualizer.Pos = Vector( x, y, z )
76
end )
77
--[[-------------------------------------------------------------------------------]]--
78
concommand.Add( "visualizer_ang", function( ply, cmd, args, str )
79
	local p, y, r = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] )
80
	if ( !p or !y or !r ) then return end
81
	
82
	visualizer.Ang = Angle( p, y, r )
83
end )
84
--[[-------------------------------------------------------------------------------]]--
85
concommand.Add( "visualizer_levelw", function( ply, cmd, args, str )
86
	local w = tonumber( args[1] )
87
	if ( !w ) then return end
88
	
89
	visualizer.LevelW = w
90
	visualizer.TotalW = visualizer.LevelW * visualizer.levels[ visualizer.Level ]
91
end )
92
--[[-------------------------------------------------------------------------------]]--
93
concommand.Add( "visualizer_levelh", function( ply, cmd, args, str )
94
	local h = tonumber( args[1] )
95
	if ( !h ) then return end
96
	
97
	visualizer.LevelH = h
98
end )
99
--[[-------------------------------------------------------------------------------]]--
100
function visualizer.Play()
101
	visualizer.Stop()
102
103
	hook.Add( "PostDrawOpaqueRenderables", "Visualizer", visualizer.Draw )
104
	
105
	sound.PlayURL( visualizer.URL, "noblock", function( channel, errID, errName )
106
		visualizer.Channel = channel
107
	end )
108
end
109
concommand.Add( "visualizer_play", function( ply, cmd, args, str )
110
	visualizer.Play()
111
end )
112
--[[-------------------------------------------------------------------------------]]--
113
function visualizer.Stop()
114
	if ( visualizer.Channel ) then
115
	    visualizer.Channel:Stop()
116
	    visualizer.Channel = nil
117
	end
118
	
119
	hook.Remove( "PostDrawOpaqueRenderables", "Visualizer" )
120
end
121
concommand.Add( "visualizer_stop", function( ply, cmd, args, str )
122
	visualizer.Stop()
123
end )
124
--[[-------------------------------------------------------------------------------]]--
125
concommand.Add( "visualizer_refresh", function( ply, cmd, args, str )
126
	hook.Add( "PostDrawOpaqueRenderables", "Visualizer", visualizer.Draw )
127
end )
128
--[[-------------------------------------------------------------------------------]]--
129
concommand.Add( "visualizer_borders", function( ply, cmd, args, str )
130
	visualizer.Borders = tobool( args[1] )
131
end )
132
--[[-------------------------------------------------------------------------------]]--
133
concommand.Add( "visualizer_border_color", function( ply, cmd, args, str )
134-
	local r, g, b = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] )
134+
	local r, g, b, a = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] ), tonumber( args[4] )
135
	if ( !r or !g or !b ) then return end
136
	
137-
	visualizer.BorderColor = Color( r, g, b )
137+
	visualizer.BorderColor = Color( r, g, b, a or 255 )
138
end )
139
--[[-------------------------------------------------------------------------------]]--
140
concommand.Add( "visualizer_bg_color", function( ply, cmd, args, str )
141-
	local r, g, b = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] )
141+
	local r, g, b, a = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] ), tonumber( args[4] )
142
	if ( !r or !g or !b ) then return end
143
	
144-
	visualizer.BGColor = Color( r, g, b )
144+
	visualizer.BGColor = Color( r, g, b, a or 255 )
145
end )
146
--[[-------------------------------------------------------------------------------]]--
147
function visualizer.Draw()
148
	if( not IsValid( visualizer.Channel ) ) then return end
149
150
	local FFTable   = {}
151
	local FFTLevels = visualizer.Channel:FFT( FFTable, visualizer.Level )
152
	
153
	cam.Start3D2D( visualizer.Pos, visualizer.Ang, 1 )
154
		draw.RoundedBox( 0, 0, 0, visualizer.TotalW, visualizer.LevelH, visualizer.BGColor )
155
	cam.End3D2D()
156
	
157
	local fft, x, y
158
	local levelW = visualizer.LevelW
159
	
160
	local h, s, v = ColorToHSV( visualizer.Color )
161
	visualizer.Color = HSVToColor( h + 1, s, v )
162
163
	surface.SetFont( "default" )
164
	
165
	for i = 1, #FFTable do
166
		fft = FFTable[ i ]
167
		local levelH = fft * visualizer.LevelH
168
		
169
		x = visualizer.LevelW * ( i - 1 )
170
		y = visualizer.LevelH - levelH
171
172
		cam.Start3D2D( visualizer.Pos, visualizer.Ang, 1 )
173
			draw.RoundedBox( 0, x, y, levelW, levelH, HSVToColor( h + i, s, v ) )
174
			
175
			if ( visualizer.Borders ) then 
176
				surface.SetDrawColor( visualizer.BorderColor )
177
				surface.DrawOutlinedRect( x, y, levelW, levelH+1 )
178
			end
179
			
180
			surface.SetTextPos( x + ( visualizer.LevelW / 2 ), visualizer.LevelH )
181
			surface.DrawText( i )
182
		cam.End3D2D()
183
	end
184
end
185
--[[-------------------------------------------------------------------------------]]--