File size: 977 Bytes
b6a38d7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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 |