Custom Textures: fixed V2 reloading crash
This commit is contained in:
parent
79ba4f5496
commit
00836e1edb
2 changed files with 20 additions and 0 deletions
|
@ -149,6 +149,8 @@ VMFMod.inject_materials = function (self, ui_renderer_creator, ...)
|
||||||
|
|
||||||
ui_renderer.gui = World.create_screen_gui(ui_renderer.world, "immediate", unpack(new_materials_list))
|
ui_renderer.gui = World.create_screen_gui(ui_renderer.world, "immediate", unpack(new_materials_list))
|
||||||
ui_renderer.gui_retained = World.create_screen_gui(ui_renderer.world, unpack(new_materials_list))
|
ui_renderer.gui_retained = World.create_screen_gui(ui_renderer.world, unpack(new_materials_list))
|
||||||
|
|
||||||
|
vmf_data.is_modified = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -159,6 +161,8 @@ end
|
||||||
|
|
||||||
vmf:hook("UIRenderer.create", function(func, world, ...)
|
vmf:hook("UIRenderer.create", function(func, world, ...)
|
||||||
|
|
||||||
|
local is_modified = false
|
||||||
|
|
||||||
-- FINDING OUT WHO CREATED UI_RENDERER
|
-- FINDING OUT WHO CREATED UI_RENDERER
|
||||||
|
|
||||||
local ui_renderer_creator = nil
|
local ui_renderer_creator = nil
|
||||||
|
@ -191,6 +195,7 @@ vmf:hook("UIRenderer.create", function(func, world, ...)
|
||||||
table.insert(ui_renderer_materials, "material")
|
table.insert(ui_renderer_materials, "material")
|
||||||
table.insert(ui_renderer_materials, injected_material)
|
table.insert(ui_renderer_materials, injected_material)
|
||||||
end
|
end
|
||||||
|
is_modified = true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- DEBUG INFO
|
-- DEBUG INFO
|
||||||
|
@ -213,6 +218,7 @@ vmf:hook("UIRenderer.create", function(func, world, ...)
|
||||||
local vmf_data = {}
|
local vmf_data = {}
|
||||||
vmf_data.original_materials = {...}
|
vmf_data.original_materials = {...}
|
||||||
vmf_data.ui_renderer_creator = ui_renderer_creator
|
vmf_data.ui_renderer_creator = ui_renderer_creator
|
||||||
|
vmf_data.is_modified = is_modified
|
||||||
rawset(ui_renderer, "vmf_data", vmf_data)
|
rawset(ui_renderer, "vmf_data", vmf_data)
|
||||||
|
|
||||||
return ui_renderer
|
return ui_renderer
|
||||||
|
@ -258,6 +264,19 @@ vmf.load_custom_textures_settings = function()
|
||||||
_SHOW_DEBUG_INFO = vmf:get("developer_mode") and vmf:get("log_ui_renderers_info")
|
_SHOW_DEBUG_INFO = vmf:get("developer_mode") and vmf:get("log_ui_renderers_info")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
vmf.reset_guis = function()
|
||||||
|
for ui_renderer, _ in pairs(UI_RENDERERS) do
|
||||||
|
local vmf_data = rawget(ui_renderer, "vmf_data")
|
||||||
|
if vmf_data.is_modified then
|
||||||
|
World.destroy_gui(ui_renderer.world, ui_renderer.gui)
|
||||||
|
World.destroy_gui(ui_renderer.world, ui_renderer.gui_retained)
|
||||||
|
ui_renderer.gui = World.create_screen_gui(ui_renderer.world, "immediate", unpack(vmf_data.original_materials))
|
||||||
|
ui_renderer.gui_retained = World.create_screen_gui(ui_renderer.world, unpack(vmf_data.original_materials))
|
||||||
|
vmf_data.is_modified = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- ####################################################################################################################
|
-- ####################################################################################################################
|
||||||
-- ##### Script #######################################################################################################
|
-- ##### Script #######################################################################################################
|
||||||
-- ####################################################################################################################
|
-- ####################################################################################################################
|
||||||
|
|
|
@ -76,6 +76,7 @@ return {
|
||||||
|
|
||||||
on_unload = function(object)
|
on_unload = function(object)
|
||||||
print("VMF:ON_UNLOAD()")
|
print("VMF:ON_UNLOAD()")
|
||||||
|
object.vmf.reset_guis()
|
||||||
object.vmf.save_chat_history()
|
object.vmf.save_chat_history()
|
||||||
object.vmf.save_unsaved_settings_to_file()
|
object.vmf.save_unsaved_settings_to_file()
|
||||||
object.vmf = nil
|
object.vmf = nil
|
||||||
|
|
Loading…
Add table
Reference in a new issue