Programming
Fundamentials
Setting Up Development Environment
UnigineScript
High-Level Systems
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Bounds-Related Classes
Containers
Controls-Related Classes
Core Library
Engine-Related Classes
GUI-Related Classes
Node-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes
Utility Classes

PathRoute Class

This class calculates the shortest 2D or 3D route around the obstacles within connected navigation areas and sets the size and velocity of the point moving along this route.

  • In case of 2D route, a point moves in the lower plane of the navigation area. The Z coordinate is not taken into account when calculating the 2D route. The height and radius values set for the point via the setHeight() and setRadius() functions are used to check whether the navigation area can take part in pathfinding: if the height or radius set for the point is greater than the size of the navigation area, such navigation area will be discarded. If the height difference between the connected areas exceeds the maximum height, the navigation area is also discarded from calculations.
  • In case of 3D route (available only for navigation sectors), a point moves in 3 dimensions. The radius set for the point via the setRadius() function is used to check whether the navigation sector can take part in pathfinding: if the radius set for the point is greater than the size of the navigation sector, it will be discarded. Also the point cannot rise up higher than maximum height set for the navigation sector.

Functions of the PathRoute class enable to ignore the specified navigation areas and obstacles. Also the maximum time acceptable to get to the destination point and the maximum danger factor can be limited as well.

Notice
To choose between navigation areas, A* algorithm is used.

Warning
There is no connection between functions of the PathRoute class and functions of the Path class.

PathRoute Class

Members


PathRoute (float radius = 0.0f)

Constructor. Creates a new 2D or 3D route. The radius is used to check whether the point can move inside a navigation area or this navigation area should be excluded from pathfinding.

Arguments

  • float radius - Radius of the point moving along the route.

void addExcludeNavigation (const Ptr<Node> & navigation)

Sets a navigation sector or a navigation mesh to be ignored during pathfinding. Excluded sectors/meshes are added into the list.

Arguments

  • const Ptr<Node> & navigation - A navigation area to be ignored.

void setMaxAngle (float angle)

Sets cosine of the maximum possible angle between navigation mesh polygons. For example, this option enables to exclude walls when calculating a valid route.

Arguments

  • float angle - Maximum angle cosine.

void setMaxDangerous (float dangerous)

Sets the maximum danger factor acceptable for moving along this route. If the navigation areas have a higher danger factor, the point will not move along it.

Arguments

  • float dangerous - Maximum danger factor.

int isReached ()

Returns a value indicating that a destination point of the route is reached.

Return value

1 if the destination point is reached; otherwise, 0.

float getVelocity ()

Returns the current velocity of the point moving along the route.

Return value

Velocity of the point that moves along the route.

float getMaxTime ()

Returns the current maximum time for reaching the destination point. If the route takes longer, the point will not move along it.

Return value

Maximum movement time.

void renderVisualizer (const Math::vec4 & color)

Renders the route in a given color.
Notice
You should enable the engine visualizer by the show_visualizer 1 console command.

Arguments

  • const Math::vec4 & color - Route color.

void setObstacleMask (int mask)

Sets the obstacle mask. The obstacle is taken into account if its obstacle mask matches the obstacle mask of the route.

Arguments

  • int mask - An integer value, each bit of which is used to set a mask.

void removeExcludeObstacle (const Ptr<Node> & obstacle)

Removes an obstacle from the list of ignored ones during pathfinding.

Arguments

  • const Ptr<Node> & obstacle - An obstacle.

void setMaxTime (float time)

Sets the maximum time for reaching the destination point. If the route takes longer, the point will not move along it.

Arguments

  • float time - Maximum movement time.

int getNavigationMask ()

Returns the current navigation mask. The navigation mask of the navigation area must match the navigation mask of the route that is calculated within it. Otherwise, the area will not participate in pathfinding.

Return value

An integer value, each bit of which is used to set a mask.

void create3D (const Math::Vec3 & p0, const Math::Vec3 & p1, int delay = 0)

Calculates a 3D route between the given points with the specified delay.

Arguments

  • const Math::Vec3 & p0 - The starting point.
  • const Math::Vec3 & p1 - The destination point.
  • int delay - The number of frames which is possible to delay pathfinding calculations. 0 means the pathfinding should be calculated immediately.

float getMaxHeight ()

Returns the current maximum height difference between the connected navigation areas acceptable when finding the 2D route. In case of the 3D route, it is the maximum height the point can move up to.

Return value

Maximum height.

void setVelocity (float velocity)

Sets the velocity of the point that moves along the route.

Arguments

  • float velocity - Velocity of the point that moves along the route.

int getObstacleMask ()

Returns the current obstacle mask. The obstacle is taken into account if its obstacle mask matches the obstacle mask of the route.

Return value

An integer value, each bit of which is used to set a mask.

float getDistance ()

Returns the length of the route.

Return value

Distance in units.

void setHeight (float height)

Sets the height that is required to move the point along the 2D route inside the navigation area. If the specified height exceeds the height of the navigation area, the point will not move inside it.

Arguments

  • float height - Height that is required to move the point inside the navigation area. If a negative value is provided, 0 will be used instead.

int getNumPoints ()

Returns the number of turning points along the route.

Return value

The number of points.

void setNavigationMask (int mask)

Sets the navigation mask. The navigation mask of the navigation area must match the navigation mask of the route that is calculated within it. Otherwise, the area will not participate in pathfinding.

Arguments

  • int mask - An integer value, each bit of which is used to set a mask.

void setMaxHeight (float height)

Sets the maximum height difference between the connected navigation areas acceptable when finding the 2D route. In case of the 3D route, it is the maximum height the point can move up to.

Arguments

  • float height - Maximum height.

Ptr<Navigation> getNavigation (int num)

Returns the navigation sector or mesh within which the specified route point is located.

Arguments

  • int num - Point number.

Return value

Navigation sector or navigation mesh.

void removeExcludeNavigation (const Ptr<Node> & navigation)

Removes a navigation sector or a navigation mesh from the list of ignored ones during pathfinding.

Arguments

  • const Ptr<Node> & navigation - A navigation area.

void setRadius (float radius)

Sets the radius that is required to move the point along the route inside the navigation area. If the specified radius exceeds the size of the navigation area, the point will not move inside it.

Arguments

  • float radius - Radius that is required to move the point inside the navigation area. If a negative value is provided, 0 will be used instead.

int isReady ()

Returns a value indicating that a route is calculated.

Return value

1 if the route is calculated; otherwise, 0.

float getDangerous ()

Returns the highest danger factor of the navigation areas met along the route.

Return value

Highest danger factor

void setExcludeNavigations (const Vector< Ptr<Node> > & exclude_navigations)

Sets the list of navigation sectors and navigation meshes to be ignored during pathfinding.

Arguments

  • const Vector< Ptr<Node> > & exclude_navigations - Array of the ignored navigation areas.

Ptr<Obstacle> getIntersection (const Ptr<PathRouteIntersection> & intersection)

Returns the first intersected obstacle.

Arguments

  • const Ptr<PathRouteIntersection> & intersection - PathRouteIntersection node.

Return value

Intersected obstacle.

void addExcludeObstacle (const Ptr<Node> & obstacle)

Sets an obstacle to be ignored during pathfinding. Excluded obstacles are added into the list.

Arguments

  • const Ptr<Node> & obstacle - An obstacle to be ignored.

Vector< Ptr<Node> > getExcludeObstacles ()

Returns the list of obstacles ignored during pathfinding.

Return value

float getMaxAngle ()

Returns cosine of the maximum possible angle between navigation mesh polygons. For example, this option enables to exclude walls when calculating a valid route.

Return value

Maximum angle cosine.

float getMaxDangerous ()

Returns the maximum danger factor acceptable for moving along this route. If the navigation areas have a higher danger factor, the point will not move along it.

Return value

Maximum danger factor.

void create2D (const Math::Vec3 & p0, const Math::Vec3 & p1, int delay = 0)

Calculates a 2D route between the given points with the specified delay.

Arguments

  • const Math::Vec3 & p0 - The starting point.
  • const Math::Vec3 & p1 - The destination point.
  • int delay - The number of frames which is possible to delay pathfinding calculations. 0 means the pathfinding should be calculated immediately.

Math::Vec3 getPoint (int num)

Returns the coordinates of the turning point in the route.

Arguments

  • int num - Point number.

Return value

Point coordinates.

float getTime ()

Returns the time that is required for the point to move along the route.

Return value

Time in seconds.

Ptr<Obstacle> getObstacle (int num)

Returns the obstacle around which the route is turning.

Arguments

  • int num - Point number.

Return value

Obstacle.

Vector< Ptr<Node> > getExcludeNavigations ()

Returns the list of navigation sectors and navigation meshes excluded from pathfinding.

Return value

float getHeight ()

Returns the current height that is required to move the point along the 2D route inside the navigation area.

Return value

Height that is required to move the point inside the navigation area. If the returned height exceeds the height of the navigation area, the point will not move inside it.

int isQueued ()

Returns a value indicating that a route is queued to be calculated.

Return value

1 if the route is queued; otherwise, 0.

void setExcludeObstacles (const Vector< Ptr<Node> > & obstacles)

Sets the list of obstacles to be ignored during pathfinding.

Arguments

  • const Vector< Ptr<Node> > & obstacles - Array of the ignored obstacles.

float getRadius ()

Returns the current radius that is required to move the point along the route inside the navigation area.

Return value

Radius that is required to move the point inside the navigation area. If the returned radius exceeds the size of the navigation area, the point will not move inside it.
Last update: 2017-07-03