zombiesurvival-evolved/gamemodes/zombiesurvival/entities/effects/shadedeflect.lua

65 lines
1.7 KiB
Lua
Raw Normal View History

util.PrecacheModel("models/props/cs_italy/orange.mdl")
2014-10-02 08:49:54 +08:00
EFFECT.LifeTime = 2
function EFFECT:Init(data)
local pos = data:GetOrigin()
local angles = data:GetAngles()
self.Offset = data:GetStart()
self.Ent = data:GetEntity()
sound.Play("weapons/fx/rics/ric"..math.random(5)..".wav", pos, 68, math.Rand(150, 170))
2014-10-02 08:49:54 +08:00
self.Entity:SetModel("models/props/cs_italy/orange.mdl")
2014-10-02 08:49:54 +08:00
self.Entity:SetMoveType(MOVETYPE_NONE)
self.Entity:SetModelScale(2, 0)
2014-10-02 08:49:54 +08:00
self.Entity:SetAngles(angles)
if self.Ent:IsValid() then
local offset = self.Ent:LocalToWorld(self.Offset)
local emitter = ParticleEmitter(offset)
emitter:SetNearClip(24, 32)
for i=1, 2 do
local particle = emitter:Add("sprites/glow04_noz", offset)
particle:SetDieTime(1)
particle:SetColor(90,130,255)
particle:SetStartAlpha(255)
particle:SetEndAlpha(0)
particle:SetStartSize(4)
particle:SetEndSize(15)
particle:SetVelocity((angles:Up() + VectorRand()):GetNormal() * 300)
particle:SetGravity(VectorRand() * 20 + Vector(0, 0, -400))
particle:SetCollide(true)
particle:SetBounce(0.75)
particle:SetAirResistance(12)
end
emitter:Finish() emitter = nil collectgarbage("step", 64)
end
2014-10-02 08:49:54 +08:00
self.DieTime = CurTime() + self.LifeTime
end
function EFFECT:Think()
return CurTime() < self.DieTime
end
local matRefract = Material("models/spawn_effect")
function EFFECT:Render()
local ent = self.Ent
if ent:IsValid() then
self:SetPos(ent:LocalToWorld(self.Offset))
end
render.UpdateRefractTexture()
matRefract:SetFloat("$refractamount", math.Clamp((self.DieTime - CurTime()) / self.LifeTime, 0, 1) ^ 2 * 0.05)
render.ModelMaterialOverride(matRefract)
self.Entity:DrawModel()
render.ModelMaterialOverride(0)
end