myspace / Lua /Colorization.lua
sirnii's picture
Upload 1816 files
b6a38d7 verified
raw
history blame
977 Bytes
MapVar("g_Colorization", {}, weak_keys_meta)
function AddColorization(obj, color_mod, reason)
local curr_colorization = g_Colorization[obj]
if not curr_colorization then
curr_colorization = { original = obj:GetColorModifier(), modifiers = {} }
g_Colorization[obj] = curr_colorization
end
curr_colorization.modifiers[reason] = color_mod
local active_mod
for _, mod in sorted_pairs(curr_colorization.modifiers) do
active_mod = mod
end
if active_mod then
obj:SetColorModifier(active_mod)
end
end
function RemoveColorization(obj, reason)
local curr_colorization = g_Colorization[obj]
if not curr_colorization or not curr_colorization.modifiers then
return
end
curr_colorization.modifiers[reason] = nil
local active_mod
for _, mod in sorted_pairs(curr_colorization.modifiers) do
active_mod = mod
end
if active_mod then
obj:SetColorModifier(active_mod)
else
obj:SetColorModifier(curr_colorization.original)
g_Colorization[obj] = nil
end
end