function EFFECT:Init( data )
self.EndPos = data:GetOrigin()
self.StartPos = self.EndPos - data:GetStart()
self.Enti = data:GetEntity()
self.Alph = 1
self.Beam = Material( "sprites/laserbeam" )
local randUp = math.random(-20, 20)
local randRight = math.random(-20, 20)
local RandOffset = self.Enti:GetRight() * randRight + self.Enti:GetForward() * randUp
self.StartPos = self.StartPos + RandOffset
self.EndPos = self.EndPos + RandOffset
end
function EFFECT:Think( )
if self.Alph==0 then
return false
end
self.Alph=math.Clamp(self.Alph-0.01,0,1)
return true
end
function EFFECT:Render()
if not self.Enti or not self.Enti:IsValid() then return false end
local r=255
local g=255
local b=255
self.Entity:SetRenderBoundsWS( self.StartPos, self.EndPos )
self.Beam:SetMaterialVector("$color", Vector(r,g,b) )
self.Beam:SetMaterialFloat("$alpha",self.Alph)
render.SetMaterial(self.Beam)
render.DrawBeam(self.StartPos, self.EndPos, 2, 1, 1, Color(255,255,255,self.Alph))
self.Beam:SetMaterialVector("$color", Vector(255,255,255) )
self.Beam:SetMaterialFloat("$alpha",1)
end