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 6beea15..1b84022 100644 --- a/lua/entities/sent_prop2mesh/cl_init.lua +++ b/lua/entities/sent_prop2mesh/cl_init.lua @@ -286,11 +286,23 @@ local function getComplex(crc, uniqueID) end local vec = Vector() + +CreateClientConVar("prop2mesh_disabled_transparency", 0.05, true, false, "Disable transparency on prop2mesh entities (forces all to be opaque)", 0, 1) + +local serverAllowsTransparency = GetConVar("prop2mesh_disabled_transparency_enabled"):GetBool() + local debugwhite = CreateMaterial("p2mdebugwhite", "UnlitGeneric", { ["$basetexture"] = "color/white", - ["$vertexcolor"] = 1 + ["$vertexcolor"] = 1, + ["$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 diff --git a/lua/weapons/gmod_tool/stools/prop2mesh.lua b/lua/weapons/gmod_tool/stools/prop2mesh.lua index 0def856..8c00dd7 100644 --- a/lua/weapons/gmod_tool/stools/prop2mesh.lua +++ b/lua/weapons/gmod_tool/stools/prop2mesh.lua @@ -958,6 +958,13 @@ 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 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)