#include "..\script_component.hpp" /* * Author: Glowbal * Get the distance to the nearest detectable object * * Arguments: * 0: Unit * 1: Configuration * * Return Value: * [isDetected , mine , distance ] * * Example: * [ace_player, DETECTOR_CONFIG] call ace_minedetector_fnc_getDetectedObject * * Public: No */ params ["_unit", "_detectorConfig"]; _detectorConfig params ["", "_radius"]; private _worldPosition = _unit modelToWorld (_unit selectionPosition "granat"); private _ref = (_unit weaponDirection currentWeapon _unit) call EFUNC(common,createOrthonormalReference); _ref params ["_v1", "_v2", "_v3"]; private _detectorPointAGL = _worldPosition vectorAdd (_v1 vectorMultiply ( 0.9 * __DR)) vectorAdd (_v2 vectorMultiply (-0.2 * __DR)) vectorAdd (_v3 vectorMultiply ( 0.4 * __DR)); private _nearestObjects = nearestObjects [_detectorPointAGL, [], _radius]; #ifdef DEBUG_MODE_FULL GVAR(debugDetector) = [_detectorPointAGL, _nearestObjects]; #endif private _isDetectable = false; private _mine = objNull; private _distance = -1; { if ((getModelInfo _x) select 0 == "empty.p3d") then { continue; }; // If an object was detected, exit the search if ((typeOf _x) in (uiNamespace getVariable QGVAR(detectableClasses))) exitWith { _isDetectable = true; _distance = _detectorPointAGL distance _x; _mine = _x; TRACE_3("return",_isDetectable,_mine,_distance); }; } forEach _nearestObjects; [_isDetectable, _mine, _distance];