From c817e625903a35652a3b00d7e4aea72b08472677 Mon Sep 17 00:00:00 2001 From: Periapsises <94928308+Periapsises@users.noreply.github.com> Date: Fri, 27 Mar 2026 17:02:47 -0400 Subject: [PATCH 1/3] Add transparency setting to disabled box drawing --- lua/entities/sent_prop2mesh/cl_init.lua | 9 ++++++++- lua/weapons/gmod_tool/stools/prop2mesh.lua | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lua/entities/sent_prop2mesh/cl_init.lua b/lua/entities/sent_prop2mesh/cl_init.lua index 6beea15..737abe8 100644 --- a/lua/entities/sent_prop2mesh/cl_init.lua +++ b/lua/entities/sent_prop2mesh/cl_init.lua @@ -285,12 +285,19 @@ local function getComplex(crc, uniqueID) return meshes and meshes.complex end +CreateClientConVar("prop2mesh_disabled_transparency", 0.05, true, false, "Disable transparency on prop2mesh entities (forces all to be opaque)", 0, 1) + local vec = Vector() local debugwhite = CreateMaterial("p2mdebugwhite", "UnlitGeneric", { ["$basetexture"] = "color/white", - ["$vertexcolor"] = 1 + ["$vertexcolor"] = 1, + ["$alpha"] = GetConVar("prop2mesh_disabled_transparency"):GetFloat() }) +cvars.AddChangeCallback("prop2mesh_disabled_transparency", function(cvar, old, new) + debugwhite:SetFloat("$alpha", math.Clamp(tonumber(new) or 0, 0, 1)) +end, "p2mdebugwhitealpha") + local renderOverride do local Vec_Dot = vecMeta.Dot diff --git a/lua/weapons/gmod_tool/stools/prop2mesh.lua b/lua/weapons/gmod_tool/stools/prop2mesh.lua index 0def856..ac36169 100644 --- a/lua/weapons/gmod_tool/stools/prop2mesh.lua +++ b/lua/weapons/gmod_tool/stools/prop2mesh.lua @@ -958,6 +958,8 @@ local function BuildPanel_AddonSettings(self) cbox.Label:SetTextColor(value and Color(255, 0, 0) or nil) end + local slider = pnl:NumSlider("Transparency:", "prop2mesh_disabled_transparency", 0, 1, 2) + local cbox = pnl:CheckBox("Disable everything", "prop2mesh_disable") cbox:SetTooltip("Note: unless you rejoin, this will not apply to already generated meshes") cbox.OnChange = function(_, value) From 4732a1b4f147e93f7c97a81e3ddafa29d022ae34 Mon Sep 17 00:00:00 2001 From: Periapsises <94928308+Periapsises@users.noreply.github.com> Date: Fri, 27 Mar 2026 17:53:44 -0400 Subject: [PATCH 2/3] Add a server managed convar to allow or disallow transparency --- lua/autorun/prop2mesh.lua | 1 + lua/entities/sent_prop2mesh/cl_init.lua | 18 +++++++++++------- lua/weapons/gmod_tool/stools/prop2mesh.lua | 5 +++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lua/autorun/prop2mesh.lua b/lua/autorun/prop2mesh.lua index d64bf8b..3f328c1 100644 --- a/lua/autorun/prop2mesh.lua +++ b/lua/autorun/prop2mesh.lua @@ -40,6 +40,7 @@ if SERVER then resource.AddWorkshop("2458909924") CreateConVar("prop2mesh_disable_allowed", 0, {FCVAR_NOTIFY, FCVAR_ARCHIVE}, "prevents prop2mesh data from networking") + CreateConVar("prop2mesh_disabled_transparency_enabled", 1, {FCVAR_NOTIFY, FCVAR_ARCHIVE}, "enables transparency support for disabled prop2mesh entities") AddCSLuaFile("prop2mesh/cl_meshlab.lua") AddCSLuaFile("prop2mesh/cl_modelfixer.lua") diff --git a/lua/entities/sent_prop2mesh/cl_init.lua b/lua/entities/sent_prop2mesh/cl_init.lua index 737abe8..28ae40c 100644 --- a/lua/entities/sent_prop2mesh/cl_init.lua +++ b/lua/entities/sent_prop2mesh/cl_init.lua @@ -285,19 +285,23 @@ local function getComplex(crc, uniqueID) return meshes and meshes.complex end -CreateClientConVar("prop2mesh_disabled_transparency", 0.05, true, false, "Disable transparency on prop2mesh entities (forces all to be opaque)", 0, 1) - local vec = Vector() + +local serverAllowsTransparency = GetConVar("prop2mesh_disabled_transparency_enabled"):GetBool() +if serverAllowsTransparency then + CreateClientConVar("prop2mesh_disabled_transparency", 0.05, true, false, "Disable transparency on prop2mesh entities (forces all to be opaque)", 0, 1) + + cvars.AddChangeCallback("prop2mesh_disabled_transparency", function(cvar, old, new) + debugwhite:SetFloat("$alpha", math.Clamp(tonumber(new) or 0, 0, 1)) + end, "p2mdebugwhitealpha") +end + local debugwhite = CreateMaterial("p2mdebugwhite", "UnlitGeneric", { ["$basetexture"] = "color/white", ["$vertexcolor"] = 1, - ["$alpha"] = GetConVar("prop2mesh_disabled_transparency"):GetFloat() + ["$alpha"] = serverAllowsTransparency and GetConVar("prop2mesh_disabled_transparency"):GetFloat() or 1 }) -cvars.AddChangeCallback("prop2mesh_disabled_transparency", function(cvar, old, new) - debugwhite:SetFloat("$alpha", math.Clamp(tonumber(new) or 0, 0, 1)) -end, "p2mdebugwhitealpha") - local renderOverride do local Vec_Dot = vecMeta.Dot diff --git a/lua/weapons/gmod_tool/stools/prop2mesh.lua b/lua/weapons/gmod_tool/stools/prop2mesh.lua index ac36169..8c00dd7 100644 --- a/lua/weapons/gmod_tool/stools/prop2mesh.lua +++ b/lua/weapons/gmod_tool/stools/prop2mesh.lua @@ -960,6 +960,11 @@ local function BuildPanel_AddonSettings(self) local slider = pnl:NumSlider("Transparency:", "prop2mesh_disabled_transparency", 0, 1, 2) + local serverAllowsTransparency = GetConVar("prop2mesh_disabled_transparency_enabled"):GetBool() + if not serverAllowsTransparency then + slider:SetEnabled( false ) + end + local cbox = pnl:CheckBox("Disable everything", "prop2mesh_disable") cbox:SetTooltip("Note: unless you rejoin, this will not apply to already generated meshes") cbox.OnChange = function(_, value) From c9fed9727d963d4d67bcbc354bd649173da26925 Mon Sep 17 00:00:00 2001 From: Periapsises <94928308+Periapsises@users.noreply.github.com> Date: Sat, 28 Mar 2026 18:31:08 -0400 Subject: [PATCH 3/3] Fix material being nil in cvar callback --- lua/entities/sent_prop2mesh/cl_init.lua | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lua/entities/sent_prop2mesh/cl_init.lua b/lua/entities/sent_prop2mesh/cl_init.lua index 28ae40c..1b84022 100644 --- a/lua/entities/sent_prop2mesh/cl_init.lua +++ b/lua/entities/sent_prop2mesh/cl_init.lua @@ -287,14 +287,9 @@ end local vec = Vector() -local serverAllowsTransparency = GetConVar("prop2mesh_disabled_transparency_enabled"):GetBool() -if serverAllowsTransparency then - CreateClientConVar("prop2mesh_disabled_transparency", 0.05, true, false, "Disable transparency on prop2mesh entities (forces all to be opaque)", 0, 1) +CreateClientConVar("prop2mesh_disabled_transparency", 0.05, true, false, "Disable transparency on prop2mesh entities (forces all to be opaque)", 0, 1) - cvars.AddChangeCallback("prop2mesh_disabled_transparency", function(cvar, old, new) - debugwhite:SetFloat("$alpha", math.Clamp(tonumber(new) or 0, 0, 1)) - end, "p2mdebugwhitealpha") -end +local serverAllowsTransparency = GetConVar("prop2mesh_disabled_transparency_enabled"):GetBool() local debugwhite = CreateMaterial("p2mdebugwhite", "UnlitGeneric", { ["$basetexture"] = "color/white", @@ -302,6 +297,12 @@ local debugwhite = CreateMaterial("p2mdebugwhite", "UnlitGeneric", { ["$alpha"] = serverAllowsTransparency and GetConVar("prop2mesh_disabled_transparency"):GetFloat() or 1 }) +if serverAllowsTransparency then + cvars.AddChangeCallback("prop2mesh_disabled_transparency", function(cvar, old, new) + debugwhite:SetFloat("$alpha", math.Clamp(tonumber(new) or 0, 0, 1)) + end, "p2mdebugwhitealpha") +end + local renderOverride do local Vec_Dot = vecMeta.Dot