Skip to content

Commit 91b2a86

Browse files
committed
perf: replace chained select with counting in telemetry loop
1 parent 5e42cc5 commit 91b2a86

1 file changed

Lines changed: 24 additions & 17 deletions

File tree

addons/recorder/fnc_telemetryLoop.sqf

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,25 +41,32 @@ Author:
4141
private _sideData = [];
4242
{
4343
private _s = _x;
44-
private _sUnits = _allUnits select {side _x isEqualTo _s};
45-
private _sDead = _allDeadMen select {side _x isEqualTo _s};
46-
private _sGroups = _allGroups select {side _x isEqualTo _s};
47-
private _sVeh = _vehicles select {side _x isEqualTo _s};
48-
49-
private _localUnits = _sUnits select {local _x};
50-
private _remoteUnits = _sUnits select {!local _x};
51-
private _localDead = _sDead select {local _x};
52-
private _remoteDead = _sDead select {!local _x};
53-
private _localGroups = _sGroups select {local _x};
54-
private _remoteGroups = _sGroups select {!local _x};
55-
private _localVeh = _sVeh select {local _x && !(_x isKindOf "WeaponHolderSimulated")};
56-
private _remoteVeh = _sVeh select {!local _x && !(_x isKindOf "WeaponHolderSimulated")};
57-
private _localWH = _sVeh select {local _x && _x isKindOf "WeaponHolderSimulated"};
58-
private _remoteWH = _sVeh select {!local _x && _x isKindOf "WeaponHolderSimulated"};
44+
private _localUnits = 0; private _localAlive = 0; private _remoteUnits = 0; private _remoteAlive = 0;
45+
{ if (side _x isEqualTo _s) then {
46+
if (local _x) then { _localUnits = _localUnits + 1; if (alive _x) then { _localAlive = _localAlive + 1 } }
47+
else { _remoteUnits = _remoteUnits + 1; if (alive _x) then { _remoteAlive = _remoteAlive + 1 } };
48+
}} forEach _allUnits;
49+
50+
private _localDead = 0; private _remoteDead = 0;
51+
{ if (side _x isEqualTo _s) then {
52+
if (local _x) then { _localDead = _localDead + 1 } else { _remoteDead = _remoteDead + 1 };
53+
}} forEach _allDeadMen;
54+
55+
private _localGroups = 0; private _remoteGroups = 0;
56+
{ if (side _x isEqualTo _s) then {
57+
if (local _x) then { _localGroups = _localGroups + 1 } else { _remoteGroups = _remoteGroups + 1 };
58+
}} forEach _allGroups;
59+
60+
private _localVeh = 0; private _remoteVeh = 0; private _localWH = 0; private _remoteWH = 0;
61+
{ if (side _x isEqualTo _s) then {
62+
private _isWH = _x isKindOf "WeaponHolderSimulated";
63+
if (local _x) then { if (_isWH) then { _localWH = _localWH + 1 } else { _localVeh = _localVeh + 1 } }
64+
else { if (_isWH) then { _remoteWH = _remoteWH + 1 } else { _remoteVeh = _remoteVeh + 1 } };
65+
}} forEach _vehicles;
5966

6067
_sideData pushBack [
61-
[count _localUnits, {alive _x} count _localUnits, count _localDead, count _localGroups, count _localVeh, count _localWH],
62-
[count _remoteUnits, {alive _x} count _remoteUnits, count _remoteDead, count _remoteGroups, count _remoteVeh, count _remoteWH]
68+
[_localUnits, _localAlive, _localDead, _localGroups, _localVeh, _localWH],
69+
[_remoteUnits, _remoteAlive, _remoteDead, _remoteGroups, _remoteVeh, _remoteWH]
6370
];
6471
} forEach [east, west, independent, civilian];
6572

0 commit comments

Comments
 (0)