concinnity-core 0.19.0

Runtime vocabulary for the Concinnity engine: GPU layouts, ECS components, registry, CPU kernels
Documentation
// One character-capsule move and its result. A character is moved by asking
// the simulation to resolve a desired translation against the scene rather
// than by simulating it, so the exchange is a request in and a resolved move
// out.

use crate::physics::BodyHandle;
use crate::physics::LayerMask;

/// One character-capsule move request.
#[derive(Debug, Clone, Copy)]
pub struct CharacterMoveInput {
    /// World-space capsule centre before the move.
    pub center: [f32; 3],
    /// Desired translation for this tick.
    pub desired: [f32; 3],
    /// Seconds this move covers.
    pub dt: f32,
    /// The moving capsule's own body, left out of the collision query.
    pub exclude: BodyHandle,
    /// Which layers the collision query considers.
    pub mask: LayerMask,
}

/// Result of moving a character capsule for one tick.
#[derive(Debug, Clone, Copy)]
pub struct CharacterMove {
    /// The translation actually applied after collision resolution.
    pub translation: [f32; 3],
    /// True when the capsule is resting on a surface after the move.
    pub grounded: bool,
}