Difference between revisions of "lineIntersectsSurfaces"

From Bohemia Interactive Community
Jump to navigation Jump to search
m
(Please use notes properly. How To is next to Add New Note button)
Line 53: Line 53:
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
 
You can combine with intersect command to find selection names on intersected objects (in this example priority is geom >> ifire >> fire >> view):
 
 
<nowiki>arrow = "Sign_Arrow_F" createVehicle [0,0,0];
 
testFunc = {
 
_ins = lineIntersectsSurfaces [
 
ATLToASL positionCameraToWorld [0,0,0],
 
ATLToASL positionCameraToWorld [0,0,1000],
 
player
 
];
 
if (count _ins == 0) exitWith {
 
arrow setPosASL [0,0,0]
 
};
 
arrow setPosASL (_ins select 0 select 0);
 
arrow setVectorUp (_ins select 0 select 1);
 
_intDist = (_ins select 0 select 0) distance (ATLToASL positionCameraToWorld [0,0,0]);
 
_sel = "";
 
_dist = 10000;
 
{
 
_ins2 = [_ins select 0 select 3,_x] intersect [
 
positionCameraToWorld [0,0,0],
 
positionCameraToWorld [0,0,_intDist + 0.1]
 
];
 
 
{
 
if (_x select 1 < _dist) then {
 
_dist = _x select 1;
 
_sel = _x select 0
 
};
 
} forEach _ins2;
 
if (_sel != "") exitWith {};
 
} forEach ["GEOM","IFIRE","FIRE","VIEW"];
 
 
hintsilent format ["nearest selection: %1",_sel];
 
};
 
["sample_id","onEachFrame","testFunc"] call BIS_fnc_addStackedEventHandler;
 

Revision as of 04:23, 13 August 2015

Template:Command

Notes

Bottom Section