diag_log text "[MILSIM] (initPlayerCPS) writing variable loop"; _cpsPFH = [ { [] spawn { // warning: while loop without suspension executes multiple times per frame private _counter = 0; private _endTime = diag_tickTime + 5; private _frameNo = diag_frameNo; while { diag_tickTime < _endTime } do { _counter = _counter + 1; }; // in an empty mission, the _counter may go well over 2000 times per frame! diag_log text format ["[MILSIM] (initPlayerCPS) Average Execution: %1 times per frame", _counter / (diag_frameNo - _frameNo)]; player setVariable["milsim_player_raw_cps", _counter / (diag_frameNo - _frameNo), true]; // with suspension private _counter = 0; private _endTime = diag_tickTime + 5; private _frameNo = diag_frameNo; while { diag_tickTime < _endTime } do { _counter = _counter + 1; uiSleep 0.001; // waits at least 1 frame }; // _counter says one per frame, as expected diag_log text format ["[MILSIM] (initPlayerCPS) Average Execution: %1 times per frame", _counter / (diag_frameNo - _frameNo)]; player setVariable["milsim_player_cps", _counter / (diag_frameNo - _frameNo), true]; }; }, 300, [], { diag_log text "[MILSIM] (initPlayerCPS) CPS PFH loaded" }, { diag_log text "IF YOU SEE THIS CPS PFH FUCKED UP" }, { true }, { false }, [] ] call CBA_fnc_createPerFrameHandlerObject; player setVariable ["milsim_player_cps_handler", _cpsPFH];