bevy_tnua/builtins/
walk_sensors.rs

1use crate::ghost_overrides::{TnuaGhostOverwrite, TnuaGhostOverwritesForBasis};
2use crate::sensor_sets::TnuaSensors;
3use bevy::prelude::*;
4use bevy_tnua_physics_integration_layer::data_for_backends::TnuaProximitySensor;
5
6#[derive(Copy, Clone)]
7pub struct TnuaBuiltinWalkSensors<'a> {
8    /// The main sensor of the floating character model.
9    pub ground: &'a TnuaProximitySensor,
10
11    /// An upward-facing sensor that checks for obstacles above the character.
12    pub headroom: Option<&'a TnuaProximitySensor>,
13}
14
15impl<'a> TnuaSensors<'a> for TnuaBuiltinWalkSensors<'a> {
16    type Entities = TnuaBuiltinWalkSensorsEntities;
17    type GhostOverwrites = TnuaBuiltinWalkSensorsGhostOverwrites;
18}
19
20#[derive(Default)]
21pub struct TnuaBuiltinWalkSensorsEntities {
22    /// The main sensor of the floating character model.
23    pub ground: Option<Entity>,
24
25    /// An upward-facing sensor that checks for
26    pub headroom: Option<Entity>,
27}
28
29#[derive(Component, Default)]
30#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
31pub struct TnuaBuiltinWalkSensorsGhostOverwrites {
32    /// The main sensor of the floating character model.
33    pub ground: TnuaGhostOverwrite,
34}
35
36impl TnuaGhostOverwritesForBasis for TnuaBuiltinWalkSensorsGhostOverwrites {
37    type Entities = TnuaBuiltinWalkSensorsEntities;
38}