PathEngine home | previous: | next: |
A version of advanceAlongPath() with extra precision components of the agent's position and collision information.
bool advanceAlongPathWithCollisionInfo(iPath* path, float distance, const iCollisionContext* context, float& precisionX, float& precisionY, cCollidingLine& collidingLine, std::unique_ptr<iAgent>& agent) |
path |
A path along which to advance the agent. The path must start at the agent's current position, and the path will then be updated so to start at the agent's new position after the advance. A null pointer may safely be passed in to this argument, in which case the call will have no effect. | ||
distance |
The distance to advance along the path. | ||
context |
The state of dynamic collision that will apply for this query. An empty context can be specified by passing nullptr for this argument. Note that the agent is not considered to obstruct itself even if included in this context. | ||
precisionX | Extra precision for the x component of the agent's position is returned in this parameter. | ||
precisionY | Extra precision for the y component of the agent's position is returned in this parameter. | ||
collidingLine | If there is a collision then this will be filled in to describe a line of first contact. | ||
agent | If there is a collision, and first contact is with an agent in the supplied collision context, this returns a pointer to the obstructing agent. If there is no collision, this is set to zero. |
Requires that the agent is moveable and that collision preprocess has been generated on the agent's mesh for the agent's collision shape.
The agent will be moved along the path and at the same time the path updated to start at the agents new position.
When approximating positions along diagonal path segments,
collision checks are used to prevent the agent from getting placed inside obstructed space.
Information is stored within
In the case of a collision, the line of contact is guaranteed to cross the direction of travel from right to left, but note the start and end points of this line of contact serve only to describe the position and direction of the 'infinite line' at point of collision, and should not be considered as meaningful in of themselves.
The precision components returned in precisionX and precisionY can be added to the
integer part of the position to obtain higher precision coordinates for rendering purposes.
Refer to
bool advanceAlongPathWithCollisionInfo(Path path, float distance, CollisionContext context, out float precisionX, out float precisionY, out PathEngine.CollidingLine collidingLine, out Agent agent); |
boolean advanceAlongPathWithCollisionInfo(Path path, float distance, CollisionContext context, float_OutArgument precisionX, float_OutArgument precisionY, Object_OutArgument collidingLine, Object_OutArgument agent); |
Documentation for PathEngine release 6.04 - Copyright © 2002-2024 PathEngine | next: |