mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
88
lua/includes/modules/matproxy.lua
Normal file
88
lua/includes/modules/matproxy.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
|
||||
module( "matproxy", package.seeall )
|
||||
|
||||
ProxyList = {}
|
||||
ActiveList = {}
|
||||
|
||||
--
|
||||
-- Called by engine, returns true if we're overriding a proxy
|
||||
--
|
||||
function ShouldOverrideProxy( name )
|
||||
|
||||
return ProxyList[ name ] != nil
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- Called to add a new proxy (see lua/matproxy/ for examples)
|
||||
--
|
||||
function Add( tbl )
|
||||
|
||||
if ( !tbl.name ) then return end
|
||||
if ( !tbl.bind ) then return end
|
||||
|
||||
local bReloading = ProxyList[ tbl.name ] != nil
|
||||
|
||||
ProxyList[ tbl.name ] = tbl
|
||||
|
||||
--
|
||||
-- If we're reloading then reload all the active entries that use this proxy
|
||||
--
|
||||
if ( bReloading ) then
|
||||
|
||||
for k, v in pairs( ActiveList ) do
|
||||
|
||||
if ( tbl.name != v.name ) then continue end
|
||||
|
||||
Msg( "Reloading: ", v.Material, "\n" )
|
||||
Init( tbl.name, k, v.Material, v.Values )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- Called by the engine from OnBind
|
||||
--
|
||||
function Call( name, mat, ent )
|
||||
|
||||
local proxy = ActiveList[ name ]
|
||||
if ( !proxy ) then return end
|
||||
if ( !proxy.bind ) then return end
|
||||
|
||||
proxy:bind( mat, ent )
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- Called by the engine from OnBind
|
||||
--
|
||||
function Init( name, uname, mat, values )
|
||||
|
||||
local proxy = ProxyList[ name ]
|
||||
if ( !proxy ) then return end
|
||||
|
||||
ActiveList[ uname ] = table.Copy( proxy )
|
||||
local active_proxy = ActiveList[ uname ]
|
||||
if ( !active_proxy.init ) then return end
|
||||
|
||||
active_proxy:init( mat, values )
|
||||
|
||||
-- Store these incase we reload
|
||||
active_proxy.Values = values
|
||||
active_proxy.Material = mat
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user