function EFFECT:Init( data ) local c self.Origin = data:GetOrigin( ) self.Target = data:GetStart( ) c = data:GetNormal( ) self.Time = data:GetMagnitude( ) self.Radius = data:GetScale( ) self.Linger = data:GetRadius( ) self.Progress = 0 self.Color = Color( c.x, c.y, c.z, 255 ) self.DieTime = CurTime( ) + self.Time + self.Linger self.Ray = self.Target - self.Origin end function EFFECT:Render( ) self.Mat = self.Mat or Material( "cable/redlaser" ) render.SetMaterial( self.Mat ) render.DrawBeam( self.Origin, self.Origin + self.Ray * self.Progress, self.Radius, 1, 0, self.Color ) end function EFFECT:Think( ) self.LastTime = self.LastTime or CurTime( ) self.Progress = math.min( self.Progress + ( FrameTime( ) / self.Time ), 1 ) self:SetRenderBoundsWS( self.Origin, self.Target ) return CurTime( ) <= self.DieTime end