lineIntersectsObjs: Difference between revisions
BrettMayson (talk | contribs) mNo edit summary |
BrettMayson (talk | contribs) mNo edit summary |
||
| Line 37: | Line 37: | ||
|s2since= arma3 2.20 | |s2since= arma3 2.20 | ||
|p21= elementN: [[Array]] | |p21= elementN: [[Array]] with [begPos, endPos, ignoreObj1, ignoreObj2, sortByDistance, flags] | ||
* begPos: [[Position#PositionASL|PositionASL]] - virtual line start | * begPos: [[Position#PositionASL|PositionASL]] - virtual line start | ||
* endPos: [[Position#PositionASL|PositionASL]] - virtual line end | * endPos: [[Position#PositionASL|PositionASL]] - virtual line end | ||
| Line 52: | Line 52: | ||
Flags can be combined: 2 + 4 = 6 is CF_NEAREST_OBJECT + CF_ONLY_STATIC | Flags can be combined: 2 + 4 = 6 is CF_NEAREST_OBJECT + CF_ONLY_STATIC | ||
|r2= [[Array]] | |r2= [[Array]] with [result1, result2, ...] - each result is an [[Array]] of intersecting objects for the Nth element | ||
|x1= <sqf> | |x1= <sqf> | ||
Latest revision as of 09:52, 2 January 2026
Description
- Description:
- Returns a list of objects intersected by the line from begPos to endPos. Since
2.20, there is an alternative syntax that does multiple checks in parallel, faster than multiple calls. - Groups:
- Math - Geometry
Syntax
- Syntax:
- lineIntersectsObjs [begPos, endPos, ignoreObj1, ignoreObj2, sortByDistance, flags]
- Parameters:
- begPos: PositionASL - virtual line start
- endPos: PositionASL - virtual line end
- ignoreObj1: Object - (Optional) - object to ignore
- ignoreObj2: Object - (Optional) - object to ignore
- sortByDistance: Boolean - (Optional) - true: furthest object first, closest object last; false: unsorted
- flags: Number - (Optional)
- 1 - CF_ONLY_WATER
- 2 - CF_NEAREST_CONTACT
- 4 - CF_ONLY_STATIC
- 8 - CF_ONLY_DYNAMIC
- 16 - CF_FIRST_CONTACT
- 32 - CF_ALL_OBJECTS (Usable only with CF_FIRST_CONTACT and it will check one contact per object)
- Return Value:
- Array of Objects - intersecting objects
Alternative Syntax
- Syntax:
- lineIntersectsObjs [[element1, element2, ...]]
- Parameters:
- elementN: Array with [begPos, endPos, ignoreObj1, ignoreObj2, sortByDistance, flags]
- begPos: PositionASL - virtual line start
- endPos: PositionASL - virtual line end
- ignoreObj1: Object - (Optional) - object to ignore
- ignoreObj2: Object - (Optional) - object to ignore
- sortByDistance: Boolean - (Optional) - true: furthest object first, closest object last; false: unsorted
- flags: Number - (Optional)
- 1 - CF_ONLY_WATER
- 2 - CF_NEAREST_CONTACT
- 4 - CF_ONLY_STATIC
- 8 - CF_ONLY_DYNAMIC
- 16 - CF_FIRST_CONTACT
- 32 - CF_ALL_OBJECTS (Usable only with CF_FIRST_CONTACT and it will check one contact per object)
- Return Value:
- Array with [result1, result2, ...] - each result is an Array of intersecting objects for the Nth element
Examples
- Example 1:
- data = []; displayFunction = { { data set [_foreachindex, lineIntersectsObjs [eyePos player, ATLToASL screenToWorld [0.5, 0.5], objNull, objNull, false, _x]]; } forEach [1, 2, 4, 8, 16, 32]; hintSilent format ["ONLY_WATER: %1\nNEAREST_CONTACT: %2\nONLY_STATIC: %3\nONLY_DYNAMIC: %4\nFIRST_CONTACT: %5\nALL_OBJECTS: %6", data select 0, data select 1, data select 2, data select 3, data select 4, data select 5]; }; ["sample_id", "onEachFrame", "displayFunction"] call BIS_fnc_addStackedEventHandler; // example display objects' array in the middle of the screen sorted by 6 flags
- Example 2:
- Alternative syntax to check intersections in parallel:
Additional Information
- See also:
- lineIntersectsSurfaces lineIntersectsWith lineIntersects terrainIntersectASL terrainIntersectAtASL terrainIntersect intersect cursorObject cursorTarget checkVisibility
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord.
Only post proven facts here! Add Note
- Posted on Mar 29, 2016 - 06:07 (UTC)
- Distance sorting is relative to object model center, and not intersect position.