/* * Author: esteldunedain * Schedules the publishment of an object variable to reduce network overhead * * Arguments: * 0: Unit . * 1: Variable name * 2: Maximum delay * * Return Value: * None * * Example: * None * * Public: No */ #include "script_component.hpp" params ["_unit", "_varName", "_maxDelay"]; // Create the publish scheduler PFH the first time if (isNil QGVAR(publishSchedId)) then { GVAR(publishVarNames) = []; GVAR(publishNextTime) = 1e7; GVAR(publishSchedId) = [{ if (diag_tickTime > GVAR(publishNextTime)) then { { _x params [_unit, _varName]; _unit setVariable [_varName, _unit getVariable _varName, true]; false } count GVAR(publishVarNames); GVAR(publishVarNames) = []; GVAR(publishNextTime) = 1e7; }; }, 0, []] call CBA_fnc_addPerFrameHandler; }; // If the variable is not on the list if (GVAR(publishVarNames) find [_unit, _varName] == -1) exitWith { GVAR(publishVarNames) pushBack [_unit, _varName]; GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay); }; // If the variable is on the list GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay);