EFFECT.LifeTime = 0.375 EFFECT.Size = 128 function EFFECT:Init(data) self.DieTime = CurTime() + self.LifeTime local normal = data:GetNormal() local pos = data:GetOrigin() pos = pos + normal * 2 self.Pos = pos self.Normal = normal sound.Play("physics/metal/metal_sheet_impact_bullet"..math.random(2)..".wav", pos, 80, math.Rand(85, 95)) end function EFFECT:Think() return CurTime() < self.DieTime end local matRefraction = Material("refract_ring") local matGlow = Material("effects/rollerglow") local colGlow = Color(255, 30, 255) function EFFECT:Render() local delta = math.Clamp((self.DieTime - CurTime()) / self.LifeTime, 0, 1) local rdelta = 1 - delta local size = rdelta ^ 0.5 * self.Size colGlow.a = delta * 220 colGlow.r = delta * 255 colGlow.b = colGlow.r - 255 render.SetMaterial(matGlow) render.DrawQuadEasy(self.Pos, self.Normal, size, size, colGlow, 0) render.DrawQuadEasy(self.Pos, self.Normal * -1, size, size, colGlow, 0) render.DrawSprite(self.Pos, size, size, colGlow) matRefraction:SetFloat("$refractamount", math.sin(delta * 2 * math.pi) * 0.2) render.SetMaterial(matRefraction) render.UpdateRefractTexture() render.DrawQuadEasy(self.Pos, self.Normal, size, size, color_white, 0) render.DrawQuadEasy(self.Pos, self.Normal * -1, size, size, color_white, 0) render.DrawSprite(self.Pos, size, size, color_white) end