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 | --[[-------------------------------------------------------------------------------]]-- |