|
Kemena3D
|
Owns a dtCrowd and a dtTileCache update loop for a single kNavMesh. More...
#include <knavmanager.h>
Public Member Functions | |
| kNavManager (kNavMesh *mesh, int maxAgents=128) | |
| Constructs a navigation manager for a baked navmesh. | |
| ~kNavManager () | |
| Destroys the manager, shutting down the crowd and freeing agents/obstacles. | |
| bool | init () |
| Initialises the internal dtCrowd. | |
| void | shutdown () |
| Shuts down crowd and releases all agents / obstacles. | |
| void | update (float deltaTime) |
| Steps the crowd simulation and rebuilds any dirty tiles. | |
| kNavAgent * | addAgent (const kVec3 &position, const kNavAgentConfig &config={}) |
Adds a new crowd agent at position. | |
| void | removeAgent (kNavAgent *agent) |
| Removes and destroys an agent. | |
| const std::vector< kNavAgent * > & | getAgents () const |
| All currently active agents. | |
| kNavObstacle * | addObstacle (const kVec3 &position, float radius, float height) |
| Adds a dynamic cylinder obstacle. | |
| void | removeObstacle (kNavObstacle *obstacle) |
| Removes and destroys a dynamic obstacle. | |
| const std::vector< kNavObstacle * > & | getObstacles () const |
| All currently registered obstacles. | |
| kNavMesh * | getNavMesh () const |
| Returns the kNavMesh this manager was created with. | |
Owns a dtCrowd and a dtTileCache update loop for a single kNavMesh.
Typical usage:
| kemena::kNavManager::kNavManager | ( | kNavMesh * | mesh, |
| int | maxAgents = 128 ) |
Constructs a navigation manager for a baked navmesh.
| mesh | A successfully baked kNavMesh. The manager holds a non-owning pointer — the mesh must outlive the manager. |
| maxAgents | Maximum simultaneous crowd agents (default 128). |
| kemena::kNavManager::~kNavManager | ( | ) |
Destroys the manager, shutting down the crowd and freeing agents/obstacles.
| kNavAgent * kemena::kNavManager::addAgent | ( | const kVec3 & | position, |
| const kNavAgentConfig & | config = {} ) |
Adds a new crowd agent at position.
| kNavObstacle * kemena::kNavManager::addObstacle | ( | const kVec3 & | position, |
| float | radius, | ||
| float | height ) |
Adds a dynamic cylinder obstacle.
Requires the navmesh to have been built with tileSize > 0. Returns nullptr for single-mesh builds.
| position | World-space centre (bottom) of the cylinder. |
| radius | Cylinder radius (m). |
| height | Cylinder height (m). |
| const std::vector< kNavAgent * > & kemena::kNavManager::getAgents | ( | ) | const |
All currently active agents.
| kNavMesh * kemena::kNavManager::getNavMesh | ( | ) | const |
Returns the kNavMesh this manager was created with.
| const std::vector< kNavObstacle * > & kemena::kNavManager::getObstacles | ( | ) | const |
All currently registered obstacles.
| bool kemena::kNavManager::init | ( | ) |
Initialises the internal dtCrowd.
| void kemena::kNavManager::removeAgent | ( | kNavAgent * | agent | ) |
Removes and destroys an agent.
The pointer is invalid after this call.
| void kemena::kNavManager::removeObstacle | ( | kNavObstacle * | obstacle | ) |
Removes and destroys a dynamic obstacle.
The pointer is invalid after this call.
| void kemena::kNavManager::shutdown | ( | ) |
Shuts down crowd and releases all agents / obstacles.
| void kemena::kNavManager::update | ( | float | deltaTime | ) |
Steps the crowd simulation and rebuilds any dirty tiles.
| deltaTime | Frame time in seconds. |