1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
EFFECT.Mat = Material( "trails/plasma" )
EFFECT.Sprite = Material( "effects/yellowflare" )
function EFFECT:Init( data )
self.Position = data:GetStart()
self.WeaponEnt = data:GetEntity()
self.Attachment = data:GetAttachment()
self.StartPos = self:GetTracerShootPos( self.Position, self.WeaponEnt, self.Attachment )
self.EndPos = data:GetOrigin()
local dir = self.StartPos - self.EndPos
dir:Normalize()
self.Dir = dir
self.Entity:SetRenderBoundsWS( self.StartPos, self.EndPos )
self.Alpha = 100
self.Color = Color( 250, 150, 50, self.Alpha )
local dlight = DynamicLight( self:EntIndex() )
if dlight then
dlight.Pos = self.StartPos
dlight.r = 255
dlight.g = 150
dlight.b = 50
dlight.Brightness = 3
dlight.Decay = 256
dlight.size = 256 * math.Rand( 0.5, 1.0 )
dlight.DieTime = CurTime() + 5
end
end
function EFFECT:Think( )
self.Entity:SetRenderBoundsWS( self.StartPos, self.EndPos )
self.Alpha = self.Alpha - FrameTime() * 200
self.Color = Color( 250, 150, 50, self.Alpha )
return self.Alpha > 0
end
function EFFECT:Render( )
if self.Alpha < 1 then return end
--[[self.Length = ( self.StartPos - self.EndPos ):Length()
render.SetMaterial( self.Mat )
render.DrawBeam( self.StartPos, self.EndPos, ( 100 / self.Alpha ) * 0.5 + 0.5, 0, 0, self.Color )]]
if ( self.Alpha < 1 ) then return end
self.Length = (self.StartPos - self.EndPos):Length()
local texcoord = CurTime() * -0.2
for i = 1, 10 do
render.SetMaterial( self.Mat )
texcoord = texcoord + i * 0.05 * texcoord
render.DrawBeam( self.StartPos,
self.EndPos,
i * self.Alpha * 0.03,
texcoord,
texcoord + (self.Length / (128 + self.Alpha)),
self.Color )
render.SetMaterial( self.Sprite )
render.DrawSprite( self.StartPos + self.Dir * i, i * 5, i * 5, Color( self.Color.r, self.Color.g, self.Color.b, self.Alpha ) )
render.DrawSprite( self.EndPos, i * 5, i * 5, Color( self.Color.r, self.Color.g, self.Color.b, self.Alpha ) )
end
end
|