From Bohemia Interactive Community
Hover & click on the images for description
Description
- Description:
- Returns a list of intersections with surfaces and ground from begPosASL to endPosASL. Doesn't return intersection with sea surface. Works underwater, unlike lineIntersects. Hardcoded max distance: 5000m.
⚠
- if begPosASL is under the ground and endPosASL is above it, the command will only return intersection with the ground, this is an engine limitation and none of the intersectXXX commands will work when initiated from under the ground.
- only a single LOD is checked for intersection. LOD2 will only be checked if LOD1 is unavailable.
Since
2.20, there is an alternative syntax that does multiple checks in parallel, faster than multiple calls.
- Groups:
- Math - Geometry
Syntax
- Syntax:
- lineIntersectsSurfaces [begPosASL, endPosASL, ignoreObj1, ignoreObj2, sortMode, maxResults, LOD1, LOD2, returnUnique]
- Parameters:
- begPosASL: Array format PositionASL - virtual line start
- endPosASL: Array format PositionASL - virtual line end
- ignoreObj1: Object - (Optional, default objNull) first object to ignore
- ignoreObj2: Object - (Optional, default objNull) second object to ignore
- sortMode: Boolean - (Optional, default true) true: closest to furthest, false: furthest to closest
- maxResults: Number - (Optional, default 1) max results to return. -1 to return every result
- since
1.52 - LOD1: String - (Optional, default "VIEW") primary LOD to look for intersection. Can be one of:
- "FIRE"
- "VIEW"
- "GEOM"
- "IFIRE" - ("I" stands for Indirect, almost identical to "FIRE")
- "NONE"
2.02 "PHYSX" - PhysX geometry LOD
2.08 "ROADWAY" - only works from the top
- since
1.52 - LOD2: String - (Optional, default "FIRE") secondary LOD to look for intersection. See LOD1 for possible values
- since
1.70 - returnUnique: Boolean - (Optional, default true) when false, all intersections in the same object are included, otherwise only the first one
- Return Value:
- Array of intersections in format [[intersectPosASL, surfaceNormal, intersectObj, parentObject, selectionNames, pathToBisurf], ...] where:
- intersectPosASL: PositionASL - the actual position where line intersects surface
- surfaceNormal: Vector - a normal to the intersected surface
- intersectObject: Object - the object the surface belongs to (could be proxy object) - objNull if terrain
- parentObject: Object - the object proxy object belongs to (not always the same as intersect object) - objNull if terrain
2.10 selectionNames: Array of Strings - Names of the intersected selections (bones). Returns [] if there is no intersection with a selection.
2.10 pathToBisurf: String - path to intersected surface properties (.bisurf) file. Returns "" if surface has no special properties. Terrain surface properties begin with #, and the surface properties are defined in CfgSurfaces. For example, if it returns #GdtVRsurface01, properties are defined in: cconfigFile >> "CfgSurfaces" >> "GdtVRsurface01"
- Syntax:
- lineIntersectsSurfaces [element1, element2, ...]
- Parameters:
- elementN: Array format [begPosASL, endPosASL, ignoreObj1, ignoreObj2, sortMode, maxResults, LOD1, LOD2, returnUnique]
- begPosASL: Array format PositionASL - virtual line start
- endPosASL: Array format PositionASL - virtual line end
- ignoreObj1: Object - (Optional, default objNull) first object to ignore
- ignoreObj2: Object - (Optional, default objNull) second object to ignore
- sortMode: Boolean - (Optional, default true) true: closest to furthest, false: furthest to closest
- maxResults: Number - (Optional, default 1) max results to return. -1 to return every result
- LOD1: String - (Optional, default "VIEW") primary LOD to look for intersection. Can be one of:
- "FIRE"
- "VIEW"
- "GEOM"
- "IFIRE" - ("I" stands for Indirect, almost identical to "FIRE")
- "NONE"
- "PHYSX" - PhysX geometry LOD
- "ROADWAY" - only works from the top
- LOD2: String - (Optional, default "FIRE") secondary LOD to look for intersection. See LOD1 for possible values
- returnUnique: Boolean - (Optional, default true) when false, all intersections in the same object are included, otherwise only the first one
- Return Value:
- Array format [result1, result2, ...] - each result is an Array of intersections in format [[intersectPosASL, surfaceNormal, intersectObj, parentObject, selectionNames, pathToBisurf], ...]
- intersectPosASL: PositionASL - the actual position where line intersects surface
- surfaceNormal: Vector - a normal to the intersected surface
- intersectObject: Object - the object the surface belongs to (could be proxy object) - objNull if terrain
- parentObject: Object - the object proxy object belongs to (not always the same as intersect object) - objNull if terrain
- selectionNames: Array of Strings - Names of the intersected selections (bones). Returns [] if there is no intersection with a selection.
- pathToBisurf: String - path to intersected surface properties (.bisurf) file. Returns "" if surface has no special properties. Terrain surface properties begin with #, and the surface properties are defined in CfgSurfaces. For example, if it returns #GdtVRsurface01, properties are defined in: cconfigFile >> "CfgSurfaces" >> "GdtVRsurface01"
Examples
- Example 1:
- Example 2:
- Example 3:
- This should detect glass windows and wire fences (since Arma 3 v1.52):
- Example 4:
- Alternative syntax to check intersections in parallel. Will draw a redline to the first intersecting object between the player and unit:
Additional Information
- See also:
- lineIntersectsObjs lineIntersectsWith lineIntersects terrainIntersectASL terrainIntersectAtASL terrainIntersect intersect cursorObject cursorTarget checkVisibility
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here!
Add Note
- Killzone_Kid - c
- Posted on Aug 27, 2015 - 12:44 (UTC)
-
Fast check if the player is in a house:
- Pierre MGI - c
- Posted on Jan 30, 2016 - 20:10 (UTC)
-
This command is useful to place weaponholder (and then spawned weapons) on floor of houses, correcting the spawn position (can_collide) to intersect with floor:
After the position (_pos) obtained in BIS_fnc_buidingPositions array:
Then fill your weapon holder.
- Tankbuster - c
- Posted on Jan 06, 2024 - 15:41 (UTC)
-
Note that dome_big and dome_small objects have glass roof panels which this function can't see if it intersects those windows