ACE3/addons/laser/functions/fnc_shootRay.sqf

24 lines
748 B
Plaintext

#include "script_component.hpp"
private ["_pos", "_vec", "_distance", "_resultPos", "_fidelity", "_lastPos", "_i", "_nextPos"];
scopeName "main";
_pos = _this select 0;
_vec = _this select 1;
_distance = 0;
_resultPos = nil;
_fidelity = [1000,100,10,1,0.1];
_lastPos = +_pos;
{
scopeName "mainSearch";
for "_i" from 1 to 10 do {
_nextPos = _lastPos vectorAdd (_vec vectorMultiply _x);
if(terrainIntersectASL [_lastPos, _nextPos] || {lineIntersects [_lastPos, _nextPos]}) then {
_resultPos = _lastPos;
breakTo "mainSearch";
} else {
_distance = _distance + _x;
_lastPos = _nextPos;
};
};
} forEach _fidelity;
[_resultPos, _distance];