From 5ec4d1c590458d1ad171b48bede16f152f2a3bb8 Mon Sep 17 00:00:00 2001 From: dvdvideo1234 Date: Mon, 3 Mar 2025 22:28:17 +0200 Subject: [PATCH] Updated: Super-elevation tilt margin limits Added: Super-elevation negative curve tilt support Added: Super-elevation is disabled when margin is zero --- lua/autorun/trackassembly_init.lua | 4 +-- .../gmod_tool/stools/trackassembly.lua | 32 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lua/autorun/trackassembly_init.lua b/lua/autorun/trackassembly_init.lua index 772ae69..0302265 100644 --- a/lua/autorun/trackassembly_init.lua +++ b/lua/autorun/trackassembly_init.lua @@ -87,7 +87,7 @@ local asmlib = trackasmlib; if(not asmlib) then -- Module present ------------ CONFIGURE ASMLIB ------------ asmlib.InitBase("track","assembly") -asmlib.SetOpVar("TOOL_VERSION","9.778") +asmlib.SetOpVar("TOOL_VERSION","9.779") ------------ CONFIGURE GLOBAL INIT OPVARS ------------ @@ -151,7 +151,7 @@ asmlib.SetBorder(gsToolPrefL.."spawnrate", 1, 10) asmlib.SetBorder(gsToolPrefL.."sgradmenu", 1, 16) asmlib.SetBorder(gsToolPrefL.."dtmessage", 0, 10) asmlib.SetBorder(gsToolPrefL.."ghostblnd", 0, 1) -asmlib.SetBorder(gsToolPrefL.."crvsuprev", 0, 1) +asmlib.SetBorder(gsToolPrefL.."crvsuprev", -2, 2) asmlib.SetBorder(gsToolPrefL.."rtradmenu", -gnMaxRot, gnMaxRot) ------------ CONFIGURE LOGGING ------------ diff --git a/lua/weapons/gmod_tool/stools/trackassembly.lua b/lua/weapons/gmod_tool/stools/trackassembly.lua index 9932b55..85ae019 100644 --- a/lua/weapons/gmod_tool/stools/trackassembly.lua +++ b/lua/weapons/gmod_tool/stools/trackassembly.lua @@ -142,7 +142,7 @@ TOOL.ClientConVar = { [ "upspanchor" ] = 0, [ "crvturnlm" ] = 0.95, [ "crvleanlm" ] = 0.95, - [ "crvsuprev" ] = 0.45, + [ "crvsuprev" ] = 0, [ "flipoverid" ] = "" } @@ -206,7 +206,7 @@ TOOL.Command = nil -- Command on click (nil for default) TOOL.ConfigName = nil -- Configure file name (nil for default) function TOOL:GetSuperElevation() - return mathClamp(self:GetClientNumber("crvsuprev", 0), 0, 1) + return mathClamp(self:GetClientNumber("crvsuprev", 0), -2, 2) end function TOOL:GetCurveFactor() @@ -254,7 +254,8 @@ function TOOL:GetModel() end function TOOL:GetStackCount() - return mathClamp(self:GetClientNumber("stackcnt", 0), 0, asmlib.GetAsmConvar("maxstcnt", "INT")) + local nMax = asmlib.GetAsmConvar("maxstcnt", "INT") + return mathClamp(self:GetClientNumber("stackcnt", 0), 0, nMax) end function TOOL:GetSpawnRate() @@ -262,11 +263,13 @@ function TOOL:GetSpawnRate() end function TOOL:GetMass() - return mathClamp(self:GetClientNumber("mass", 0), 0, asmlib.GetAsmConvar("maxmass","FLT")) + local nMax = asmlib.GetAsmConvar("maxmass","FLT") + return mathClamp(self:GetClientNumber("mass", 0), 0, nMax) end function TOOL:GetSizeUCS() - return mathClamp(self:GetClientNumber("sizeucs", 0), 0, asmlib.GetAsmConvar("maxlinear","FLT")) + local nMax = asmlib.GetAsmConvar("maxlinear","FLT") + return mathClamp(self:GetClientNumber("sizeucs", 0), 0, nMax) end function TOOL:GetDeveloperMode() @@ -274,10 +277,10 @@ function TOOL:GetDeveloperMode() end function TOOL:GetPosOffsets() - local nMaxLin = asmlib.GetAsmConvar("maxlinear","FLT") - return mathClamp(self:GetClientNumber("nextx", 0), -nMaxLin, nMaxLin), - mathClamp(self:GetClientNumber("nexty", 0), -nMaxLin, nMaxLin), - mathClamp(self:GetClientNumber("nextz", 0), -nMaxLin, nMaxLin) + local nMax = asmlib.GetAsmConvar("maxlinear","FLT") + return mathClamp(self:GetClientNumber("nextx", 0), -nMax, nMax), + mathClamp(self:GetClientNumber("nexty", 0), -nMax, nMax), + mathClamp(self:GetClientNumber("nextz", 0), -nMax, nMax) end function TOOL:GetAngOffsets() @@ -319,7 +322,8 @@ function TOOL:GetGravity() end function TOOL:GetGhostsCount() - return mathClamp(self:GetClientNumber("ghostcnt", 0), 0, asmlib.GetAsmConvar("maxghcnt", "INT")) + local nMax = asmlib.GetAsmConvar("maxghcnt", "INT") + return mathClamp(self:GetClientNumber("ghostcnt", 0), 0, nMax) end function TOOL:GetUpSpawnAnchor() @@ -355,7 +359,8 @@ function TOOL:GetPointID() end function TOOL:GetActiveRadius() - return mathClamp(self:GetClientNumber("activrad", 0), 0, asmlib.GetAsmConvar("maxactrad", "FLT")) + local nMax = asmlib.GetAsmConvar("maxactrad", "FLT") + return mathClamp(self:GetClientNumber("activrad", 0), 0, nMax) end function TOOL:GetAngSnap() @@ -363,7 +368,8 @@ function TOOL:GetAngSnap() end function TOOL:GetForceLimit() - return mathClamp(self:GetClientNumber("forcelim", 0), 0, asmlib.GetAsmConvar("maxforce" ,"FLT")) + local nMax = asmlib.GetAsmConvar("maxforce" ,"FLT") + return mathClamp(self:GetClientNumber("forcelim", 0), 0, nMax) end function TOOL:GetWeld() @@ -942,7 +948,7 @@ function TOOL:ApplySuperElevation(tC, tData, iD) asmlib.LogInstance("Curve missing", gtLogs); return 0 end local spnflat = self:GetSpawnFlat() local crvsuprev = self:GetSuperElevation() - if(not (crvsuprev > 0 and not spnflat)) then + if(not (crvsuprev ~= 0 and not spnflat)) then asmlib.LogInstance("Auto roll disabled", gtLogs); return 0 end local iN, nS = tonumber(iD), asmlib.GetOpVar("FULL_SLOPEDG") if(iN) then