Skip to main content

FrameInput

Struct FrameInput 

Source
pub struct FrameInput {
Show 31 fields pub forward: bool, pub backward: bool, pub left: bool, pub right: bool, pub sprint: bool, pub interact: bool, pub jump: bool, pub ctrl: bool, pub shift: bool, pub alt: bool, pub cmd: bool, pub move_axis: [f32; 2], pub look_axis: [f32; 2], pub captured_button: Option<GamepadButton>, pub nav: Option<NavDirection>, pub confirm: bool, pub back: bool, pub mouse_dx: f32, pub mouse_dy: f32, pub scroll_delta: f32, pub mouse_x: f32, pub mouse_y: f32, pub left_click: bool, pub left_button_down: bool, pub right_click: bool, pub viewport: [f32; 2], pub top_inset: f32, pub hud_toggle: bool, pub escape: bool, pub captured_key: Option<InputKey>, pub typed_char: Option<char>,
}
Expand description

Per-frame keyboard and mouse input state.

One FrameInput is updated each frame from the window’s keyboard and mouse state and read by camera and UI behavior. It is maintained automatically and is never saved with the world.

Fields§

§forward: bool

True while the move-forward key (W) is held.

§backward: bool

True while the move-backward key (S) is held.

§left: bool

True while the strafe-left key (A) is held.

§right: bool

True while the strafe-right key (D) is held.

§sprint: bool

True while the sprint key (Shift) is held.

§interact: bool

True for exactly one frame when the interact key (E) is pressed.

§jump: bool

True for exactly one frame when the jump key (Space) is pressed.

§ctrl: bool

True while the Control key is held. A modifier used by UI (e.g. a story fast-forwards its dialogue while it is down). Like escape and captured_key it is not frozen while a menu is open.

§shift: bool

True while the Shift key is held. A modifier used by UI (e.g. additive selection in the editor). Unlike sprint it is not frozen while a menu is open, matching ctrl.

§alt: bool

True while the Alt (Option) key is held. A modifier used by UI (e.g. the editor’s orbit drag). Not frozen while a menu is open, matching ctrl.

§cmd: bool

True while the platform’s command modifier is held: the Command key on macOS, where application shortcuts are built on it. Windows and Linux leave this false and use ctrl instead, since the Super key there belongs to the desktop shell. UI that offers a shortcut on both accepts either modifier. Not frozen while a menu is open, matching ctrl.

§move_axis: [f32; 2]

Gamepad left-stick movement vector [x, y]: x is rightward strafe, y is forward. Radial deadzone applied, magnitude at most 1, so partial deflection walks slower. [0.0, 0.0] with no gamepad; frozen (zeroed) while a menu is open, like the movement keys.

§look_axis: [f32; 2]

Gamepad right-stick look vector [x, y] in the mouse-delta sign convention (positive x looks right, positive y looks down), with deadzone and response curve applied, magnitude at most 1. Unlike the pixel-based mouse deltas this is a deflection rate: consumers scale it by their look speed and the frame time. Frozen while a menu is open.

§captured_button: Option<GamepadButton>

The gamepad button pressed this frame, for one frame, or None. Surfaced regardless of menu state (like captured_key) so the settings menu can capture a button for rebinding.

§nav: Option<NavDirection>

The UI-navigation pulse this frame, or None. A one-frame NavDirection produced from a d-pad press (repeating while held) or a deliberate left-stick deflection. Surfaced regardless of menu state (like captured_key); menu focus movement consumes it only while a screen is active, so during play the d-pad and stick keep their movement meaning.

§confirm: bool

True for exactly one frame when the confirm button (South) is pressed. Surfaced regardless of menu state; menus fire their focused control from it while a screen is active.

§back: bool

True for exactly one frame when the back button (East) is pressed. Surfaced regardless of menu state; menus treat it like Escape while a screen is active.

§mouse_dx: f32

Accumulated horizontal mouse movement since the last frame (pixels).

§mouse_dy: f32

Accumulated vertical mouse movement since the last frame (pixels).

§scroll_delta: f32

Accumulated vertical scroll-wheel movement since the last frame. Positive scrolls the content up (a scrollable UI panel moves its rows up). Cleared each frame like the mouse deltas.

§mouse_x: f32

Absolute cursor X position in window pixels (origin top-left). Only meaningful when the cursor is not captured.

§mouse_y: f32

Absolute cursor Y position in window pixels (origin top-left). Only meaningful when the cursor is not captured.

§left_click: bool

True for exactly one frame when the left mouse button is pressed while the cursor is not captured.

§left_button_down: bool

True while the left mouse button is held down (cursor not captured). Unlike left_click this stays true across frames until release, so a UI drag (e.g. a slider) can track the cursor for its whole duration.

§right_click: bool

True for exactly one frame when the right mouse button is pressed while the cursor is not captured. Used for contextual UI (e.g. a create-at-cursor menu); it never captures the cursor.

§viewport: [f32; 2]

Live logical viewport size in pixels [width, height]. Used to map overlay (Screen-owned) UI between its fixed reference resolution and the window, so menus scale with the window and the cursor still hit-tests against the scaled controls. [0.0, 0.0] before the backend is ready.

§top_inset: f32

Height of the window chrome overlapping the top of the render surface, in the same logical units as viewport. Non-zero only where the window’s content runs under a transparent title bar (macOS), leaving the OS window buttons floating over the frame’s top-left corner: UI anchored to the top of the window starts below this so it cannot land under them. 0.0 on a window whose content already begins below its chrome.

§hud_toggle: bool

True for exactly one frame when the HUD-toggle key (F1) is pressed.

§escape: bool

True for exactly one frame when Escape is pressed while the cursor is not captured (menu / UI worlds). Used to fire KeyBinding actions. In worlds that capture the cursor, Escape instead releases the cursor and this stays false.

§captured_key: Option<InputKey>

The canonical key pressed this frame, for one frame, or None. Surfaced regardless of menu state (unlike the gameplay keys, which freeze while a menu is open) so the settings menu can capture a key for rebinding and scrollable menu lists can react to the arrow keys.

§typed_char: Option<char>

The printable character typed this frame (Unicode, with shift / layout applied by the OS), for text-input fields, or None. A one-frame pulse surfaced regardless of menu state, like captured_key. Editing keys (Backspace, Delete, arrows) arrive via captured_key, not here.

Trait Implementations§

Source§

impl Clone for FrameInput

Source§

fn clone(&self) -> FrameInput

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Component for FrameInput

Source§

const NAME: &'static str = "FrameInput"

The registry name a world authors this component under.
Source§

fn from_baked(bytes: &[u8]) -> Result<FrameInput, CnResult>

Reconstruct this component from a blob record, whose bytes are the serialized runtime component (cook already ran the asset -> component translation). The default rejects: runtime-only components are never stored in a blob, so only loadable types provide an implementation.
Source§

fn inject_locator(&mut self, _locator: PayloadLocator)

Called after construction to inject the payload locator from the blob def. Only meaningful for components with a compiled payload. The default implementation does nothing (correct for most components).
Source§

fn inject_name(&mut self, _id: AssetId)

Called after construction to inject the asset’s identity from the blob def. Only meaningful for components that look themselves up by id at runtime. The default implementation does nothing.
Source§

impl ComponentSlot for FrameInput

Source§

const DISCRIMINANT: u8

The component type’s stable id, used as its ComponentId.
Source§

fn slot(s: &ComponentStorage) -> &Column<FrameInput>

Borrow this type’s column out of the storage.
Source§

fn slot_mut(s: &mut ComponentStorage) -> &mut Column<FrameInput>

Mutably borrow this type’s column out of the storage.
Source§

impl Debug for FrameInput

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for FrameInput

Source§

fn default() -> FrameInput

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for FrameInput

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<FrameInput, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<FrameInput> for ComponentAsset

Source§

fn from(c: FrameInput) -> ComponentAsset

Converts to this type from the input type.
Source§

impl RuntimeComponent for FrameInput

Source§

impl Serialize for FrameInput

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more