mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
100
lua/arccw/client/cl_garbage.lua
Normal file
100
lua/arccw/client/cl_garbage.lua
Normal file
@@ -0,0 +1,100 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
ArcCW.CSModels = {} -- [entid] = { Weapon = NULL, WModels = {}, VModels = {} }
|
||||
ArcCW.CSModelPile = {} -- { {Model = NULL, Weapon = NULL} }
|
||||
ArcCW.FlashlightPile = {} -- { {Weapon = NULL, ProjectedTexture = NULL}}
|
||||
ArcCW.ReferenceModel = NULL
|
||||
|
||||
local function ArcCW_CollectGarbage()
|
||||
local removed, removedents = 0, {}
|
||||
|
||||
for i, k in pairs(ArcCW.CSModels) do
|
||||
if !IsValid(k.Weapon) then
|
||||
removed = removed + 1
|
||||
|
||||
table.insert(removedents, i)
|
||||
|
||||
if k.WModels then for _, m in pairs(k.WModels) do SafeRemoveEntity(m.Model) end end
|
||||
if k.VModels then for _, m in pairs(k.VModels) do SafeRemoveEntity(m.Model) end end
|
||||
end
|
||||
end
|
||||
|
||||
for _, i in pairs(removedents) do ArcCW.CSModels[i] = nil end
|
||||
|
||||
local newpile = {}
|
||||
|
||||
for _, k in pairs(ArcCW.CSModelPile) do
|
||||
if IsValid(k.Weapon) then
|
||||
table.insert(newpile, k)
|
||||
|
||||
continue
|
||||
end
|
||||
|
||||
SafeRemoveEntity(k.Model)
|
||||
|
||||
removed = removed + 1
|
||||
end
|
||||
|
||||
ArcCW.CSModelPile = newpile
|
||||
|
||||
if GetConVar("developer"):GetBool() and removed > 0 then
|
||||
print("Removed " .. tostring(removed) .. " CSModels")
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("PostCleanupMap", "ArcCW_CleanGarbage", function()
|
||||
ArcCW_CollectGarbage()
|
||||
end)
|
||||
|
||||
timer.Create("ArcCW CSModel Garbage Collector", 5, 0, ArcCW_CollectGarbage)
|
||||
|
||||
hook.Add("PostDrawEffects", "ArcCW_CleanFlashlights", function()
|
||||
local newflashlightpile = {}
|
||||
|
||||
for _, k in pairs(ArcCW.FlashlightPile) do
|
||||
if IsValid(k.Weapon) and k.Weapon == LocalPlayer():GetActiveWeapon() then
|
||||
table.insert(newflashlightpile, k)
|
||||
|
||||
continue
|
||||
end
|
||||
|
||||
if k.ProjectedTexture and k.ProjectedTexture:IsValid() then
|
||||
k.ProjectedTexture:Remove()
|
||||
end
|
||||
end
|
||||
|
||||
ArcCW.FlashlightPile = newflashlightpile
|
||||
|
||||
local wpn = LocalPlayer():GetActiveWeapon()
|
||||
|
||||
if !wpn then return end
|
||||
if !IsValid(wpn) then return end
|
||||
if !wpn.ArcCW then return end
|
||||
|
||||
if GetViewEntity() == LocalPlayer() then return end
|
||||
|
||||
wpn:KillFlashlightsVM()
|
||||
end)
|
||||
|
||||
concommand.Add("arccw_dev_loadallattmodels", function()
|
||||
local e = ClientsideModel("models/weapons/v_pistol.mdl")
|
||||
print("created subject", e)
|
||||
|
||||
for i, v in pairs(ArcCW.AttachmentTable) do
|
||||
if v.Model then
|
||||
print("\t- " .. v.Model)
|
||||
e:SetModel(v.Model)
|
||||
end
|
||||
end
|
||||
|
||||
print("removed subject", e)
|
||||
e:Remove()
|
||||
end)
|
||||
Reference in New Issue
Block a user