[][src]Struct rust_action_heroes::system::grab::GrabSystem

pub(crate) struct GrabSystem {
    reader: ReaderId<TransformedInputEvent>,
}

Grab System

The grab system was an interesting challenge.

The mechanic in One Action Heroes is that all entities touching Grabaron get toggled into a "Grab" state. Not only that, but all entities touching those entities get toggled to the "Grab" state, and so on.

I decided to implement it by having a Holding component which tags a component as holdable. These are the player characters, crates, and keys mostly.

The crux of the solution then was to start with Grabaron and iteratively process all entities it, and all entities touching those entities, etc. It's not performant, but it gets the job done.

Fields

reader: ReaderId<TransformedInputEvent>

Implementations

impl GrabSystem[src]

pub(crate) fn new(reader: ReaderId<TransformedInputEvent>) -> Self[src]

Trait Implementations

impl<'s> System<'s> for GrabSystem[src]

type SystemData = (Read<'s, EventChannel<TransformedInputEvent>>, ReadStorage<'s, Position>, WriteStorage<'s, Holding>, ReadStorage<'s, Named>)

The resource bundle required to execute this system. Read more

impl<'system_desc_a, 'system_desc_b> SystemDesc<'system_desc_a, 'system_desc_b, GrabSystem> for GrabSystem[src]

Auto Trait Implementations

impl !RefUnwindSafe for GrabSystem

impl Send for GrabSystem

impl Sync for GrabSystem

impl Unpin for GrabSystem

impl !UnwindSafe for GrabSystem

Blanket Implementations

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S where
    D: AdaptFrom<S, Swp, Dwp, T>,
    Dwp: WhitePoint,
    Swp: WhitePoint,
    T: Component + Float
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Any for T where
    T: Any

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Event for T where
    T: Send + Sync + 'static, 

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Resource for T where
    T: Any + Send + Sync

impl<'a, T> RunNow<'a> for T where
    T: System<'a>, 

impl<'a, T> RunWithPool<'a> for T where
    T: System<'a>, 

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SetParameter for T

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 

impl<T> Supports<T> for T

impl<'s, S> SystemExt for S where
    S: System<'s>, 

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,