#include "script_component.hpp" /* * Author: jaynus * Returns whether the seeker object can see the target position with checkVisibility * * Arguments: * 0: Seeker * 1: Target * 2: Whether or not to use checkVisibility to test for LOS * * Return Value: * Has LOS * * Example: * [player, cursorTarget] call ace_missileguidance_fnc_checkLos; * * Public: No */ params ["_seeker", "_target", ["_checkVisibilityTest", true]]; // Boolean checkVisibilityTest so that if the seeker type is one that ignores smoke we revert back to raw LOS checking. if (_checkVisibilityTest) exitWith { private _visibility = [_seeker, "VIEW", _target] checkVisibility [getPosASL _seeker, aimPos _target]; _visibility > 0.001 }; if ((isNil "_seeker") || {isNil "_target"}) exitWith { ERROR_2("nil",_seeker,_target); false }; private _targetPos = getPosASL _target; private _targetAimPos = aimPos _target; private _seekerPos = getPosASL _seeker; private _return = true; if (!((terrainIntersectASL [_seekerPos, _targetPos]) && {terrainIntersectASL [_seekerPos, _targetAimPos]})) then { if (lineIntersects [_seekerPos, _targetPos, _seeker, _target]) then { _return = false; }; } else { _return = false; }; _return