Difference between revisions of "LlGetClosestNavPoint"
Jump to navigation
Jump to search
m (added date of release) |
Pedro Oval (talk | contribs) m (Change category from Pathfinding to LSL_Pathfinding) |
||
Line 1: | Line 1: | ||
{{Pathfinding alpha}} | {{Pathfinding LSL alpha}} | ||
{{LSL_Function| | {{LSL_Function| | ||
inject-2={{LSL_Function/position|point|region=*}}| | inject-2={{LSL_Function/position|point|region=*}}| |
Revision as of 08:14, 30 August 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: list llGetClosestNavPoint( vector point, list options );
Used to get a point on the navmesh that is the closest point to point.
Returns a list containing a single vector which is the closest point on the navmesh to the point provided or an empty list.
• vector | point | – | A point in region-local space. | |
• list | options | – | GCNP_* and other flags with their parameters. See options table |
If an option is not explicitly set, the default value for that option is used.
Options | V | Parameters | Default | Description |
---|---|---|---|---|
[ GCNP_RADIUS ] | 0 | [ float distance ] | [ 20.0 ] | Limits how far out to search for a navigation point. |
[ GCNP_STATIC ] | 1 | [ integer use_static_mesh ] | [ FALSE ] | Specifies whether the test should use the static or dynamic nav mesh. In the static case, all dynamic obstacles are ignored. |
[ CHARACTER_TYPE ] | 6 | [ integer type ] | [ CHARACTER_TYPE_NONE ] | Filters nav points by eliminating nav mesh faces which are 0% walkable for the specified character type. In the default CHARACTER_TYPE_NONE case, all nav mesh faces are included. |
Caveats
- This function causes the script to sleep for 1 frame.
- There is no guarantee that a path exists from your current location to the returned point.
Examples
<lsl> create_character() { // Clear any previous character behaviors
llDeleteCharacter();
// default speed is 20
llCreateCharacter([CHARACTER_DESIRED_SPEED, 10.0]); llWanderWithin(llGetPos(), <64.0, 64.0, 2.0>, []);
}
default {
on_rez(integer start_param) { llResetScript(); }
state_entry() { create_character(); } touch_start(integer num_detected) { vector currentPos = llGetPos(); list points = llGetClosestNavPoint(currentPos, [GCNP_RADIUS, 10.0] );
if (!llGetListLength(points)) return;
llSay(0, "current position " + (string)currentPos + " and closest nav point " + (string)llList2Vector(points, 0) ); }
}
</lsl>Notes
Using the method incurs a one frame script sleep and the call can be extremely expensive. It is intended to be used in response to a path_update message indicating an inability to reach a requested destination (e.g., because the character or the destination is off the mesh).