diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 9494d41e89..a9d977ef6c 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -34,15 +34,5 @@ GVAR(weaponInfoCache) setText QGVAR(weaponInfoCache); [19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key -// Create a PFH to cool down all player weapons at (infrequent) regular intervals -[{ - if (primaryWeapon ACE_player != "") then { - [ACE_player, primaryWeapon ACE_player, 0] call FUNC(updateTemperature); - }; - if (handgunWeapon ACE_player != "") then { - [ACE_player, handgunWeapon ACE_player, 0] call FUNC(updateTemperature); - }; - if (secondaryWeapon ACE_player != "") then { - [ACE_player, secondaryWeapon ACE_player, 0] call FUNC(updateTemperature); - }; -}, 5, []] call CBA_fnc_addPerFrameHandler; +// Schedule cool down calculation of player weapons at (infrequent) regular intervals +[] call FUNC(updateTemperatureThread); diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index ec841eeac6..fd025012c6 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -12,5 +12,6 @@ PREP(overheat); PREP(swapBarrel); PREP(swapBarrelCallback); PREP(updateTemperature); +PREP(updateTemperatureThread); ADDON = true; diff --git a/addons/overheating/functions/fnc_updateTemperatureThread.sqf b/addons/overheating/functions/fnc_updateTemperatureThread.sqf new file mode 100644 index 0000000000..78c040d50a --- /dev/null +++ b/addons/overheating/functions/fnc_updateTemperatureThread.sqf @@ -0,0 +1,29 @@ +/* + * Author: esteldunedain + * Update temperature of a weapon at regular intervals. + * + * Argument: + * None + * + * Return value: + * None + * + * Example: + * [] call ace_overheating_fnc_updateTemperatureThread + * + * Public: No + */ +#include "script_component.hpp" + +if (primaryWeapon ACE_player != "") then { + [ACE_player, primaryWeapon ACE_player, 0] call FUNC(updateTemperature); +}; +if (handgunWeapon ACE_player != "") then { + [ACE_player, handgunWeapon ACE_player, 0] call FUNC(updateTemperature); +}; +if (secondaryWeapon ACE_player != "") then { + [ACE_player, secondaryWeapon ACE_player, 0] call FUNC(updateTemperature); +}; + +// Schedule for execution again after 5 seconds +[DFUNC(updateTemperatureThread), [], 5] call EFUNC(common,waitAndExecute);