45 lines
1.2 KiB
Lua
45 lines
1.2 KiB
Lua
include("shared.lua")
|
|
killicon.Add("mg_aoe_arrow_gas", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255))
|
|
|
|
local smokeEntities = {}
|
|
|
|
function ENT:Initialize()
|
|
table.insert(smokeEntities, self)
|
|
self:SetCollisionGroup(self.CollisionGroup)
|
|
end
|
|
|
|
function ENT:OnRemove()
|
|
table.RemoveByValue(smokeEntities, self)
|
|
end
|
|
|
|
function ENT:Draw(flags)
|
|
self:DrawShadow(false)
|
|
end
|
|
|
|
function ENT:DrawSmokeVision()
|
|
if (!IsValid(GetViewEntity())) then
|
|
return
|
|
end
|
|
|
|
local dist = GetViewEntity():NearestPoint(self:GetPos()):DistToSqr(self:GetPos()) - (64 * 64)
|
|
|
|
if (dist > self.SmokeRadius * self.SmokeRadius) then
|
|
return
|
|
end
|
|
|
|
local delta = 1 - (dist / (self.SmokeRadius * self.SmokeRadius))
|
|
local time = self:GetCreationTime() + self.LifeTime
|
|
local fadeout = math.Clamp(time - CurTime(), 0, 0.5) * 2
|
|
local fadein = math.Clamp(math.abs(CurTime() - self:GetCreationTime()), 0, 1)
|
|
|
|
delta = delta * fadein
|
|
delta = delta * fadeout
|
|
|
|
surface.SetDrawColor(150, 150, 150, 255 * delta)
|
|
surface.DrawRect(0, 0, ScrW(), ScrH())
|
|
end
|
|
hook.Add("HUDPaintBackground", "HUDPaint_MW19_SmokeVision", function()
|
|
for _, e in pairs(smokeEntities) do
|
|
e:DrawSmokeVision()
|
|
end
|
|
end) |