Description
Runs given statement every frame in an unscheduled environment.
Note
Arma 3: In order to keep compatibility between official and community content:
- Since Arma 3 v1.58 a stackable version of this EH is available: EachFrame Mission Event Handler
- Before that, the scripted version of the event handler should be used instead (using BIS_fnc_addStackedEventHandler and BIS_fnc_removeStackedEventHandler).
Syntax
onEachFrame statement
Parameters:
Returns: Nothing
Examples
Example 1
onEachFrame { hintSilent str getPosWorld player }; // hints position every frame
Example 2
Private variables defined outside of the onEachFrame scope are not inherited:
_myVar = "bob";
MyVar = "bill";
onEachFrame { hintSilent str [_myVar, MyVar]; };
// Result: [any, "bill"]
Example 3
Only one onEachFrame loop can exist at any time:
onEachFrame { player sideChat "first"; };
onEachFrame { player sideChat "second"; }; // replaces the first one
onEachFrame {}; // reset to the initial state
Example 4
Script suspension is not permitted within onEachFrame scope:
// will throw an error
onEachFrame { sleep 1; };
Example 5
onEachFrame { if (diag_frameNo mod 60 isEqualTo 0) then { /* code */ } }; // executes every 60 frames (every second @ 60 FPS, every two seconds @ 30 FPS, etc)
onEachFrame { // this version is the closest to a precise 1 second tick
if (isNil "TAG_LastHint") then
{
TAG_LastHint = diag_tickTime;
}
else
{
if (diag_tickTime - TAG_LastHint >= 1) then // set the duration in seconds here
{
hint format ["a second has passed (%1s since game start)", diag_tickTime];
TAG_LastHint = diag_tickTime;
};
};
};