diff --git a/framework/CfgFunctions.hpp b/framework/CfgFunctions.hpp index 48fee2b..978abca 100644 --- a/framework/CfgFunctions.hpp +++ b/framework/CfgFunctions.hpp @@ -26,7 +26,6 @@ class DOUBLES(PREFIX,client) { class initClient {}; class addMicroDAGRWaypoints {}; class addZenModules {}; - class bindEmptyGroupGarbageCleanup {}; class bindEventHandlers {}; class bindVehicleActions {}; }; @@ -106,13 +105,14 @@ class DOUBLES(PREFIX,performance) { class functions { file = "framework\performance\functions"; class addCBASettings {preInit=1;}; - class addDNI_PlayerFPS { postInit = 1; }; + class addDNI_PlayerFPS {postInit = 1;}; // PFHs managed in addCBASettings onChange code class addClientStatsPFH {}; class calculateClientStats {}; class addServerStatsPFH {}; class calculateServerStats {}; + class addEmptyGroupCleanupPFH {}; }; }; diff --git a/framework/client/functions/fn_initClient.sqf b/framework/client/functions/fn_initClient.sqf index f3d8fac..1d5e7bb 100644 --- a/framework/client/functions/fn_initClient.sqf +++ b/framework/client/functions/fn_initClient.sqf @@ -5,7 +5,6 @@ if (!hasInterface) exitWith {}; call FUNC(addMicroDAGRWaypoints); call FUNC(addZenModules); -call FUNC(bindEmptyGroupGarbageCleanup); call FUNC(bindEventHandlers); call FUNC(bindVehicleActions); diff --git a/framework/performance/functions/fn_addCBASettings.sqf b/framework/performance/functions/fn_addCBASettings.sqf index 405e72c..947c1cb 100644 --- a/framework/performance/functions/fn_addCBASettings.sqf +++ b/framework/performance/functions/fn_addCBASettings.sqf @@ -1,5 +1,27 @@ #include "..\script_component.hpp" +[ + QGVAR(emptyGroupCleanup_enable), + "CHECKBOX", + "Empty Group Cleanup Enabled", + [QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)], + true, + true, + { + params ["_value"]; + [ + QGVAR(emptyGroupCleanup_enable), + _value + ] call EFUNC(common,logSettingChanged); + + if (!isNull (missionNamespace getVariable [QGVAR(emptyGroupCleanupPFH), locationNull])) then { + deleteLocation GVAR(emptyGroupCleanupPFH); + }; + + call FUNC(addEmptyGroupCleanupPFH); + } +] call CBA_fnc_addSetting; + //--------------------- // Server CPS //--------------------- diff --git a/framework/client/functions/fn_bindEmptyGroupGarbageCleanup.sqf b/framework/performance/functions/fn_addEmptyGroupCleanupPFH.sqf similarity index 71% rename from framework/client/functions/fn_bindEmptyGroupGarbageCleanup.sqf rename to framework/performance/functions/fn_addEmptyGroupCleanupPFH.sqf index 4833821..6dc4a90 100644 --- a/framework/client/functions/fn_bindEmptyGroupGarbageCleanup.sqf +++ b/framework/performance/functions/fn_addEmptyGroupCleanupPFH.sqf @@ -7,7 +7,7 @@ [] ] call EFUNC(common,log); -_emptyGroupPFH = [ +GVAR(emptyGroupCleanupPFH) = [ { { if (local _x) then { @@ -19,7 +19,7 @@ _emptyGroupPFH = [ }, 300, [], - { + { // on creation [ LEVEL_INFO, QUOTE(COMPONENT), @@ -27,15 +27,16 @@ _emptyGroupPFH = [ [] ] call EFUNC(common,log); }, - { [ + { // on deletion + [ LEVEL_INFO, QUOTE(COMPONENT), "Empty group deletion PFH unloaded", [] ] call EFUNC(common,log); }, - { true }, - { false }, + { (missionNamespace getVariable [QGVAR(emptyGroupCleanup_enable), false]) }, + { not (missionNamespace getVariable [QGVAR(emptyGroupCleanup_enable), false]) }, [] ] call CBA_fnc_createPerFrameHandlerObject;