use crate::common::DtVector;
pub mod crowd;
#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub struct DtAgentParams {
pub radius: f32,
pub height: f32,
pub max_acceleration: f32,
pub max_speed: f32,
pub collision_query_range: f32,
pub path_optimization_range: f32,
pub separation_weight: f32,
pub anticipate_turns: i32,
pub optimize_vis: i32,
pub optimize_topo: i32,
pub obstacle_avoidance: i32,
pub crowd_separation: i32,
pub obstacle_avoidance_type: i32,
pub query_filter_type: i32
}
impl DtAgentParams {
pub fn default() -> Self {
DtAgentParams {
radius: 0.5,
height: 2.0,
max_acceleration: 20.0,
max_speed: 5.0,
collision_query_range: 6.0,
path_optimization_range: 15.0,
separation_weight: 1.0,
anticipate_turns: 1,
optimize_vis: 1,
optimize_topo: 1,
obstacle_avoidance: 1,
crowd_separation: 1,
obstacle_avoidance_type: 1,
query_filter_type: 0,
}
}
}
pub enum CrowdAgentState
{
DtCrowdagentStateInvalid,
DtCrowdagentStateWalking,
DtCrowdagentStateOffmesh
}
#[derive(Clone, Copy, Debug, Default)]
#[repr(C)]
pub struct DtCrowdAgent
{
pub index: i32,
pub state: u8,
pub active: i32,
pub partial: i32,
pub desired_speed: f32,
pub position: DtVector,
pub velocity: DtVector
}
#[derive(Clone, Copy, Debug)]
#[repr(C)]
pub struct DtCrowdAgentsResult
{
pub agents: *mut DtCrowdAgent,
pub agent_count: i32
}