Difference between revisions of "Path update"

From Second Life Wiki
Jump to navigation Jump to search
Line 1: Line 1:
{{TOCright}}
{{Pathfinding alpha}}
 
{{LSL_Event|
{{Box
event=path_update|
|[[:Category:LSL Events|Event]]: path_update( integer updateType, list reserved ) { ; }
event_desc=Event description goes here.|
|Contents}}
p1_type=integer|
 
p1_name=type|
{{Box|Caveats|Contents}}
p1_desc=The path event type|
 
p2_type=list|
{{Box|Examples|
p2_name=reserved|
p2_desc=Reserved; not currently used.|
constants={{LSL_Constants/path_update}}|
caveats=
* Note that if wandering, the "stop" (type 0x01) type may never occur as a new goal may be chosen when near (0x00) the previous goal.
* When the character cannot navigate from the current position (type 0x02) [[llNavigateTo]] with the FORCE_DIRECT_PATH option may be helpful.|
examples=
<lsl>
<lsl>
default
default
Line 64: Line 70:
     }
     }
}
}
</lsl>
</lsl> |
also_functions=
* [[llNavigateTo]]
* [[llCreateCharacter]]
}}
}}
{{Box|Notes|Contents}}
{{Box|See Also|Contents}}

Revision as of 12:47, 14 February 2012

Description

Event: path_update( integer type, list reserved ){ ; }

Event description goes here.

• integer type The path event type
• list reserved Reserved; not currently used.
Constants Value Description
PU_SLOWDOWN_DISTANCE_REACHED 0x00 Character is near current goal.
PU_GOAL_REACHED 0x01 Character has reached the goal and will stop or choose a new goal (if wandering).
PU_FAILURE_INVALID_START 0x02 Character cannot navigate from the current location - e.g., the character is off the navmesh or too high above it.
PU_FAILURE_INVALID_GOAL 0x03 Goal is not on the navmesh and cannot be reached.
PU_FAILURE_UNREACHABLE 0x04 Goal is no longer reachable for some reason - e.g., an obstacle blocks the path.
PU_FAILURE_TARGET_GONE 0x05 Target (for llPursue or llEvade) can no longer be tracked - e.g., it left the region or is an avatar that is now more than about 30m outside the region.
PU_FAILURE_NO_VALID_DESTINATION 0x06 There's no good place for the character to go - e.g., it is patrolling and all the patrol points are now unreachable.
PU_EVADE_HIDDEN 0x07 Triggered when an llEvade character thinks it has hidden from its pursuer.
PU_EVADE_SPOTTED 0x08 Triggered when an llEvade character switches from hiding to running
PU_FAILURE_NO_NAVMESH 0x09 This is a fatal error reported to a character when there is no navmesh for the region. This usually indicates a server failure and users should file a bug report and include the time and region in which they received this message.
PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED 0x0A Triggered when a character enters a region with dynamic pathfinding disabled. Dynamic pathfinding can be toggled by estate managers via the 'dynamic_pathfinding' option in the Region Debug Console.
PU_FAILURE_PARCEL_UNREACHABLE 0x0B Triggered when a character failed to enter a parcel because it is not allowed to enter, e.g. because the parcel is already full or because object entry was disabled after the navmesh was baked.
PU_FAILURE_OTHER 0xF4240 Other failure.

Caveats

  • Note that if wandering, the "stop" (type 0x01) type may never occur as a new goal may be chosen when near (0x00) the previous goal.
  • When the character cannot navigate from the current position (type 0x02) llNavigateTo with the FORCE_DIRECT_PATH option may be helpful.


Examples

<lsl> default {

   state_entry()
   {
       llDeleteCharacter(); // Clear any previous character behaviors
       llCreateCharacter([CHARACTER_DESIRED_SPEED, 35.0]);
       
       llWanderWithin(llGetPos(), 10.0, []);
   }
   
   path_update(integer type, list reserved)
   {
       if (type == 0)
       {
           llOwnerSay("Near");
       }
       else if (type == 1)
       {
           llOwnerSay("Stopping");
       }
       else if (type == 2)
       {
           llOwnerSay("Cannot path find from current location! Attempting to go to the center of the region.");
           
           llNavigateTo(<128.0, 128.0, llGround(<128.0, 128.0, 0.0> - llGetPos())>, [FORCE_DIRECT_PATH, TRUE]);
       }
       else if (type == 3)
       {
           llOwnerSay("Goal not on navmesh!");
       }
       else if (type == 4)
       {
           llOwnerSay("Goal unreachable!");
       }
       else if (type == 5)
       {
           llOwnerSay("Target gone!");
       }
       else if (type == 6)
       {
           llOwnerSay("No place to go!");
       }
       else if (type == 7)
       {
           llOwnerSay("Hiding from pursuer...");
       }
       else if (type == 8)
       {
           llOwnerSay("Switched from hiding to running...");
       } else
       {
           llOwnerSay("Unknown failure");
       }
   }

} </lsl>

See Also

Deep Notes

Signature

event void path_update( integer type, list reserved );