/* Author: Djeeberjr Description: Points the Sectrum device to a spesific object Parameter(s): 0: OBJECT - target of the scan 1: NUMBER - interval of update e.g. 0.3 2: NUMBER - Frequency to scan on (UI only) 3: NUMBER - Cutoff signale after angle e.g. 90 4: NUMBER - Min distance to target befor device goes 100% 5: NUMBER - Max distance the target can be detected. Signal strength relativ to max distance. 6: OBJECT - receiver object most of the time the player */ _this spawn { params ["_target","_interval","_scanFreq","_angleCutoff","_minDistance","_maxDistance",["_receiverObject",player]]; missionNamespace setVariable ["#EM_FMin", _scanFreq - 3]; missionNamespace setVariable ["#EM_FMax", _scanFreq + 3]; missionNamespace setVariable ["#EM_SelMin", _scanFreq - 0.3]; missionNamespace setVariable ["#EM_SelMax", _scanFreq + 0.3]; missionNamespace setVariable ["#EM_Progress", 0]; while {alive _receiverObject} do { // Get distance _objectDistance = round (_receiverObject distance _target); // Get angle difference to target range from 0 to 180 _objectRelativeDirection = round (_receiverObject getRelDir _target); if (_objectRelativeDirection >= 180) then{ _objectRelativeDirection = (360 - _objectRelativeDirection); }else{ _objectRelativeDirection = _objectRelativeDirection; }; // Apply angle cutoff if (_objectRelativeDirection > _angleCutoff) then { _objectRelativeDirection = 180; // Set angle to max value }; _dirSignalStrength = 1 - linearConversion [0,_angleCutoff,_objectRelativeDirection,0,1,true]; _distSignalStrength = 1 - linearConversion [0,_maxDistance,_objectDistance,0,1,true]; _absSignalStrength = _dirSignalStrength * _distSignalStrength; if (_objectDistance < _minDistance) then { _absSignalStrength = 1; _distSignalStrength = 1; }; missionNamespace setVariable ["#EM_Values", [ _scanFreq, linearConversion [0,1,_absSignalStrength,missionNamespace getVariable "#EM_SMin",missionNamespace getVariable "#EM_SMax"] ]]; missionNamespace setVariable ["#EM_Progress", _distSignalStrength]; sleep _interval; }; };