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