ACE3/addons/laser/functions/fnc_laserTargetPFH.sqf
2016-11-17 13:28:25 -06:00

47 lines
1.2 KiB
Plaintext

/*
* Author: esteldunedain
* Maintains the tracked lasers, deleting any laser that is turned off
*
* Argument:
* PFEH Args
*
* Return value:
* None
*
* Example:
* [[], 1]] call ace_laser_fnc_laserTargetPFH;
*
* Public: No
*/
#include "script_component.hpp"
params ["", "_pfhuid"];
GVAR(trackedLaserTargets) = GVAR(trackedLaserTargets) select {
_x params ["_targetObject", "_owner", "_laserUuid", "_laserCode"];
if ((isNull _targetObject) ||
{!(alive _targetObject)} ||
{isNull _owner} ||
{!(alive _owner)}) then {
// Turn off the laser in ace_laser
[_laserUuid] call FUNC(laserOff);
TRACE_1("Laser off:", _laserUuid);
false
} else {
private _newCode = _owner getVariable [QEGVAR(laser,code), ACE_DEFAULT_LASER_CODE];
if (_laserCode != _newCode) then {
TRACE_2("code change",_newCode,_laserCode);
[QGVAR(updateCode), [_laserUuid, _newCode]] call CBA_fnc_globalEvent;
_x set [3, _newCode];
};
true
};
};
if (GVAR(trackedLaserTargets) isEqualTo []) then {
TRACE_1("ending pfeh",count GVAR(trackedLaserTargets));
[_pfhuid] call CBA_fnc_removePerFrameHandler;
GVAR(pfehID) = -1;
};