2015-01-11 18:24:19 +00:00
|
|
|
#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;
|
|
|
|
{
|
2015-04-02 16:35:36 +00:00
|
|
|
scopeName "mainSearch";
|
|
|
|
for "_i" from 1 to 10 do {
|
|
|
|
_nextPos = [
|
|
|
|
(_lastPos select 0)+((_vec select 0)*_x),
|
|
|
|
(_lastPos select 1)+((_vec select 1)*_x),
|
|
|
|
(_lastPos select 2)+((_vec select 2)*_x)
|
|
|
|
];
|
|
|
|
|
|
|
|
if(lineIntersects [_lastPos, _nextPos] || terrainIntersectASL [_lastPos, _nextPos]) then {
|
|
|
|
_resultPos = _lastPos;
|
|
|
|
breakTo "mainSearch";
|
|
|
|
} else {
|
|
|
|
_distance = _distance + _x;
|
|
|
|
_lastPos = _nextPos;
|
|
|
|
};
|
|
|
|
};
|
2015-01-11 18:24:19 +00:00
|
|
|
|
|
|
|
} forEach _fidelity;
|
|
|
|
[_resultPos, _distance];
|