[][src]Struct specs_hierarchy::Hierarchy

pub struct Hierarchy<P> { /* fields omitted */ }

Scene graph type hierarchy.

Will use the given generic type P as the component type that provides parenting links. The internal structure is kept in sync with the Tracked events for that component type.

Will send modification events on the internal EventChannel. Note that Removed events do not indicate that the Parent component was removed from the component storage, just that the Entity will no longer be considered to be a part of the Hierarchy. This is because the user may wish to either remove only the component, or the complete Entity, or something completely different. When an Entity that is a parent gets removed from the hierarchy, the full tree of children below it will also be removed from the hierarchy.

Any cycles in the hierarchy will cause Undefined Behavior.

Methods

impl<P> Hierarchy<P>[src]

pub fn new(reader_id: ReaderId<ComponentEvent>) -> Self where
    P: Component,
    P::Storage: Tracked
[src]

Create a new hierarchy object.

pub fn all(&self) -> &[Entity][src]

Get all entities that contain parents, in sorted order, where parents are guaranteed to be before their children.

Note: This does not include entities that are parents.

pub fn children(&self, entity: Entity) -> &[Entity][src]

Get the immediate children of a specific entity.

pub fn all_children(&self, entity: Entity) -> BitSet[src]

Get all children of this entity recursively as a BitSet

This does not include the parent entity you pass in.

Important traits for SubHierarchyIterator<'a, P>
pub fn all_children_iter<'a>(
    &'a self,
    entity: Entity
) -> SubHierarchyIterator<'a, P>
[src]

Returns an iterator over all of the recursive children of this entity.

This does not include the parent entity you pass in. Parents are guaranteed to be prior to their children.

pub fn parent(&self, entity: Entity) -> Option<Entity>[src]

Get the parent of a specific entity

pub fn track(&mut self) -> ReaderId<HierarchyEvent>[src]

Get a token for tracking the modification events from the hierarchy

pub fn changed(&self) -> &EventChannel<HierarchyEvent>[src]

Get the EventChannel for the modification events for reading

pub fn maintain(&mut self, data: ParentData<P>) where
    P: Component + Parent,
    P::Storage: Tracked
[src]

Maintain the hierarchy, usually only called by HierarchySystem.

Auto Trait Implementations

impl<P> Unpin for Hierarchy<P> where
    P: Unpin

impl<P> Sync for Hierarchy<P> where
    P: Sync

impl<P> Send for Hierarchy<P> where
    P: Send

impl<P> !UnwindSafe for Hierarchy<P>

impl<P> !RefUnwindSafe for Hierarchy<P>

Blanket Implementations

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

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

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<T> Borrow<T> for T where
    T: ?Sized
[src]

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

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

impl<T> Any for T where
    T: Any

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

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