summaryrefslogtreecommitdiffstats
path: root/Common/Functions/Common_PlaceSafe.sqf
blob: 45176c20772cc818f3bc749d8539b398e9e145f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private["_count","_currentPosition","_direction","_object","_obstacles","_placed","_position","_radius","_vehicles"];
scopeName "PlaceSafe";

_object = _this select 0;
_position = _this select 1;
_radius = if (count _this > 2) then {_this select 2} else {35};

_currentPosition = _position;
_placed = false;
_direction = 0;

for [{_count = 0},{_count < 30 && !_placed},{_count = _count + 1}] do {
	_obstacles = nearestObjects [_currentPosition, ["Building"], 15];
	_vehicles = _currentPosition nearEntities [["Building","Car","Tank","Air"], 7];

	if (count _obstacles > 0 || count _vehicles > 0 || surfaceIsWater _currentPosition) then {
		_currentPosition = [(_position select 0)+((sin _direction)*_radius),(_position select 1)+((cos _direction)*_radius),0];
		_direction = _direction + 36;
		if (_count > 15) then {_radius = _radius + 25};
	} else {
		_object setPos _currentPosition;
		_object setVelocity [0,0,-0.5];
		_placed = true;
		breakTo "PlaceSafe";
	};
};

if (!_placed) then {_object setPos _position;_object setVelocity [0,0,-0.5]};