Updated: Super-elevation tilt margin limits

Added: Super-elevation negative curve tilt support
Added: Super-elevation is disabled when margin is zero
This commit is contained in:
dvdvideo1234 2025-03-03 22:28:17 +02:00
parent 2c900f1fb4
commit 5ec4d1c590
2 changed files with 21 additions and 15 deletions

View File

@ -87,7 +87,7 @@ local asmlib = trackasmlib; if(not asmlib) then -- Module present
------------ CONFIGURE ASMLIB ------------ ------------ CONFIGURE ASMLIB ------------
asmlib.InitBase("track","assembly") asmlib.InitBase("track","assembly")
asmlib.SetOpVar("TOOL_VERSION","9.778") asmlib.SetOpVar("TOOL_VERSION","9.779")
------------ CONFIGURE GLOBAL INIT OPVARS ------------ ------------ CONFIGURE GLOBAL INIT OPVARS ------------
@ -151,7 +151,7 @@ asmlib.SetBorder(gsToolPrefL.."spawnrate", 1, 10)
asmlib.SetBorder(gsToolPrefL.."sgradmenu", 1, 16) asmlib.SetBorder(gsToolPrefL.."sgradmenu", 1, 16)
asmlib.SetBorder(gsToolPrefL.."dtmessage", 0, 10) asmlib.SetBorder(gsToolPrefL.."dtmessage", 0, 10)
asmlib.SetBorder(gsToolPrefL.."ghostblnd", 0, 1) asmlib.SetBorder(gsToolPrefL.."ghostblnd", 0, 1)
asmlib.SetBorder(gsToolPrefL.."crvsuprev", 0, 1) asmlib.SetBorder(gsToolPrefL.."crvsuprev", -2, 2)
asmlib.SetBorder(gsToolPrefL.."rtradmenu", -gnMaxRot, gnMaxRot) asmlib.SetBorder(gsToolPrefL.."rtradmenu", -gnMaxRot, gnMaxRot)
------------ CONFIGURE LOGGING ------------ ------------ CONFIGURE LOGGING ------------

View File

@ -142,7 +142,7 @@ TOOL.ClientConVar = {
[ "upspanchor" ] = 0, [ "upspanchor" ] = 0,
[ "crvturnlm" ] = 0.95, [ "crvturnlm" ] = 0.95,
[ "crvleanlm" ] = 0.95, [ "crvleanlm" ] = 0.95,
[ "crvsuprev" ] = 0.45, [ "crvsuprev" ] = 0,
[ "flipoverid" ] = "" [ "flipoverid" ] = ""
} }
@ -206,7 +206,7 @@ TOOL.Command = nil -- Command on click (nil for default)
TOOL.ConfigName = nil -- Configure file name (nil for default) TOOL.ConfigName = nil -- Configure file name (nil for default)
function TOOL:GetSuperElevation() function TOOL:GetSuperElevation()
return mathClamp(self:GetClientNumber("crvsuprev", 0), 0, 1) return mathClamp(self:GetClientNumber("crvsuprev", 0), -2, 2)
end end
function TOOL:GetCurveFactor() function TOOL:GetCurveFactor()
@ -254,7 +254,8 @@ function TOOL:GetModel()
end end
function TOOL:GetStackCount() 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 end
function TOOL:GetSpawnRate() function TOOL:GetSpawnRate()
@ -262,11 +263,13 @@ function TOOL:GetSpawnRate()
end end
function TOOL:GetMass() 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 end
function TOOL:GetSizeUCS() 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 end
function TOOL:GetDeveloperMode() function TOOL:GetDeveloperMode()
@ -274,10 +277,10 @@ function TOOL:GetDeveloperMode()
end end
function TOOL:GetPosOffsets() function TOOL:GetPosOffsets()
local nMaxLin = asmlib.GetAsmConvar("maxlinear","FLT") local nMax = asmlib.GetAsmConvar("maxlinear","FLT")
return mathClamp(self:GetClientNumber("nextx", 0), -nMaxLin, nMaxLin), return mathClamp(self:GetClientNumber("nextx", 0), -nMax, nMax),
mathClamp(self:GetClientNumber("nexty", 0), -nMaxLin, nMaxLin), mathClamp(self:GetClientNumber("nexty", 0), -nMax, nMax),
mathClamp(self:GetClientNumber("nextz", 0), -nMaxLin, nMaxLin) mathClamp(self:GetClientNumber("nextz", 0), -nMax, nMax)
end end
function TOOL:GetAngOffsets() function TOOL:GetAngOffsets()
@ -319,7 +322,8 @@ function TOOL:GetGravity()
end end
function TOOL:GetGhostsCount() 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 end
function TOOL:GetUpSpawnAnchor() function TOOL:GetUpSpawnAnchor()
@ -355,7 +359,8 @@ function TOOL:GetPointID()
end end
function TOOL:GetActiveRadius() 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 end
function TOOL:GetAngSnap() function TOOL:GetAngSnap()
@ -363,7 +368,8 @@ function TOOL:GetAngSnap()
end end
function TOOL:GetForceLimit() 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 end
function TOOL:GetWeld() function TOOL:GetWeld()
@ -942,7 +948,7 @@ function TOOL:ApplySuperElevation(tC, tData, iD)
asmlib.LogInstance("Curve missing", gtLogs); return 0 end asmlib.LogInstance("Curve missing", gtLogs); return 0 end
local spnflat = self:GetSpawnFlat() local spnflat = self:GetSpawnFlat()
local crvsuprev = self:GetSuperElevation() 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 asmlib.LogInstance("Auto roll disabled", gtLogs); return 0 end
local iN, nS = tonumber(iD), asmlib.GetOpVar("FULL_SLOPEDG") local iN, nS = tonumber(iD), asmlib.GetOpVar("FULL_SLOPEDG")
if(iN) then if(iN) then