#![forbid(missing_docs)]
#![forbid(unsafe_code)]
#![warn(clippy::doc_markdown)]
#![doc = include_str!("../README.md")]
use crate::action_state::ActionState;
use crate::input_map::InputMap;
use bevy::ecs::prelude::*;
use bevy::reflect::{FromReflect, Reflect, TypePath};
use std::hash::Hash;
pub mod action_diff;
pub mod action_driver;
pub mod action_state;
pub mod axislike;
pub mod buttonlike;
pub mod clashing_inputs;
pub mod common_conditions;
mod display_impl;
pub mod errors;
pub mod input_map;
pub mod input_mocking;
pub mod input_streams;
pub mod orientation;
pub mod plugin;
pub mod systems;
pub mod timing;
pub mod user_input;
pub use leafwing_input_manager_macros::Actionlike;
pub mod prelude {
pub use crate::action_driver::ActionStateDriver;
pub use crate::action_state::ActionState;
pub use crate::axislike::{
DeadZoneShape, DualAxis, MouseWheelAxisType, SingleAxis, VirtualAxis, VirtualDPad,
};
pub use crate::buttonlike::MouseWheelDirection;
pub use crate::clashing_inputs::ClashStrategy;
pub use crate::input_map::InputMap;
#[cfg(feature = "ui")]
pub use crate::input_mocking::MockUIInteraction;
pub use crate::input_mocking::{MockInput, QueryInput};
pub use crate::user_input::{InputKind, Modifier, UserInput};
pub use crate::plugin::InputManagerPlugin;
pub use crate::plugin::ToggleActions;
pub use crate::{Actionlike, InputManagerBundle};
}
pub trait Actionlike:
Eq + Hash + Send + Sync + Clone + Hash + Reflect + TypePath + FromReflect + 'static
{
}
#[derive(Bundle)]
pub struct InputManagerBundle<A: Actionlike> {
pub action_state: ActionState<A>,
pub input_map: InputMap<A>,
}
impl<A: Actionlike> Default for InputManagerBundle<A> {
fn default() -> Self {
Self {
action_state: ActionState::default(),
input_map: InputMap::default(),
}
}
}