From 0c85f5f3394620e31e8149897dbbe72d1e272358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brostr=C3=B6m=2EA=20=7C=20Evul?= Date: Wed, 13 Oct 2021 23:58:09 +0200 Subject: [PATCH] Vehicles - Utilize `setCruiseControl` for speed limiter (#8273) * Change speed limiter to utalize setCruiseControl Kept setVelocity with a +2 to speed check to make vehicle slow down downhill and to slow it down when enabled. * Update addons/vehicles/functions/fnc_speedLimiter.sqf Co-authored-by: Filip Maciejewski * Update addons/vehicles/functions/fnc_speedLimiter.sqf Co-authored-by: Filip Maciejewski * Update addons/vehicles/functions/fnc_speedLimiter.sqf Co-authored-by: PabstMirror * Update addons/vehicles/functions/fnc_speedLimiter.sqf Co-authored-by: PabstMirror Co-authored-by: Filip Maciejewski Co-authored-by: PabstMirror --- addons/vehicles/functions/fnc_speedLimiter.sqf | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf index da2f7bf19a..6d76293bff 100644 --- a/addons/vehicles/functions/fnc_speedLimiter.sqf +++ b/addons/vehicles/functions/fnc_speedLimiter.sqf @@ -21,9 +21,13 @@ params ["_driver", "_vehicle"]; if (GVAR(isSpeedLimiter)) exitWith { [localize LSTRING(Off)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; + _vehicle setCruiseControl [0, false]; GVAR(isSpeedLimiter) = false; }; +(getCruiseControl _vehicle) params ["_speedLimit"]; +if (_speedLimit != 0) exitWith { TRACE_1("speed limit set by external source",_speedLimit); }; + [localize LSTRING(On)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = true; @@ -38,21 +42,24 @@ GVAR(speedLimit) = speed _vehicle max 5; private _uavControll = UAVControl _vehicle; if ((_uavControll select 0) != _driver || _uavControll select 1 != "DRIVER") then { GVAR(isSpeedLimiter) = false; + _vehicle setCruiseControl [0, false]; }; } else { if (_driver != driver _vehicle) then { GVAR(isSpeedLimiter) = false; + _vehicle setCruiseControl [0, false]; }; }; if (!GVAR(isSpeedLimiter)) exitWith { + _vehicle setCruiseControl [0, false]; [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private _speed = speed _vehicle; - - if (_speed > GVAR(speedLimit)) then { - _vehicle setVelocity ((velocity _vehicle) vectorMultiply ((GVAR(speedLimit) / _speed) - 0.00001)); // fix 1.42-hotfix PhysX libraries applying force in previous direction when turning + getCruiseControl _vehicle params ["_currentSpeedLimit"]; + if (_currentSpeedLimit != GVAR(speedLimit)) then { + _vehicle setCruiseControl [GVAR(speedLimit), false]; }; + }, 0, [_driver, _vehicle]] call CBA_fnc_addPerFrameHandler;