/// True if the agent is active, false if the agent is in an unused slot in the agent pool. bool active;
/// The type of mesh polygon the agent is traversing. (See: #CrowdAgentState) unsignedchar state;
/// True if the agent has valid path (targetState == DT_CROWDAGENT_TARGET_VALID) and the path does not lead to the requested position, else false. bool partial;
/// The path corridor the agent is using. dtPathCorridor corridor;
/// The local boundary data for the agent. dtLocalBoundary boundary;
/// Time since the agent's path corridor was optimized. float topologyOptTime;
/// The known neighbors of the agent. dtCrowdNeighbour neis[DT_CROWDAGENT_MAX_NEIGHBOURS];
/// The number of neighbors. int nneis;
/// The desired speed. float desiredSpeed;
float npos[3]; ///< The current agent position. [(x, y, z)] float disp[3]; ///< A temporary value used to accumulate agent displacement during iterative collision resolution. [(x, y, z)] float dvel[3]; ///< The desired velocity of the agent. Based on the current path, calculated from scratch each frame. [(x, y, z)] float nvel[3]; ///< The desired velocity adjusted by obstacle avoidance, calculated from scratch each frame. [(x, y, z)] float vel[3]; ///< The actual velocity of the agent. The change from nvel -> vel is constrained by max acceleration. [(x, y, z)]
/// The agent's configuration parameters. dtCrowdAgentParams params;
/// The local path corridor corners for the agent. (Staight path.) [(x, y, z) * #ncorners] float cornerVerts[DT_CROWDAGENT_MAX_CORNERS*3];
/// The local path corridor corner flags. (See: #dtStraightPathFlags) [(flags) * #ncorners] unsignedchar cornerFlags[DT_CROWDAGENT_MAX_CORNERS];
/// The reference id of the polygon being entered at the corner. [(polyRef) * #ncorners] dtPolyRef cornerPolys[DT_CROWDAGENT_MAX_CORNERS];
/// The number of corners. int ncorners;
unsignedchar targetState; ///< State of the movement request. // enum MoveRequestState // { // DT_CROWDAGENT_TARGET_NONE = 0, // DT_CROWDAGENT_TARGET_FAILED, // DT_CROWDAGENT_TARGET_VALID, // DT_CROWDAGENT_TARGET_REQUESTING, // DT_CROWDAGENT_TARGET_WAITING_FOR_QUEUE, // DT_CROWDAGENT_TARGET_WAITING_FOR_PATH, // DT_CROWDAGENT_TARGET_VELOCITY, //}; dtPolyRef targetRef; ///< Target polyref of the movement request. float targetPos[3]; ///< Target position of the movement request (or velocity in case of DT_CROWDAGENT_TARGET_VELOCITY). dtPathQueueRef targetPathqRef; ///< Path finder ref. bool targetReplan; ///< Flag indicating that the current path is being replanned. float targetReplanTime; /// <Time since the agent's target was replanned.
/// How aggresive the agent manager should be at avoiding collisions with this agent. [Limit: >= 0] float separationWeight;
/// Flags that impact steering behavior. (See: #UpdateFlags) unsignedchar updateFlags;
/// The index of the avoidance configuration to use for the agent. /// [Limits: 0 <= value <= #DT_CROWD_MAX_OBSTAVOIDANCE_PARAMS] unsignedchar obstacleAvoidanceType;
/// The index of the query filter used by this agent. unsignedchar queryFilterType;
/// User defined data attached to the agent. void* userData; };
/// The type of navigation mesh polygon the agent is currently traversing. /// @ingroup crowd enum CrowdAgentState { DT_CROWDAGENT_STATE_INVALID, ///< The agent is not in a valid state. DT_CROWDAGENT_STATE_WALKING, ///< The agent is traversing a normal navigation mesh polygon. DT_CROWDAGENT_STATE_OFFMESH, ///< The agent is traversing an off-mesh connection. };