Struct bevy_ecs::schedule::ScheduleGraph
source · pub struct ScheduleGraph { /* private fields */ }
Expand description
Metadata for a Schedule
.
Implementations§
source§impl ScheduleGraph
impl ScheduleGraph
sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty ScheduleGraph
with default settings.
sourcepub fn get_system_at(
&self,
id: NodeId
) -> Option<&dyn System<In = (), Out = ()>>
pub fn get_system_at( &self, id: NodeId ) -> Option<&dyn System<In = (), Out = ()>>
Returns the system at the given NodeId
, if it exists.
sourcepub fn system_at(&self, id: NodeId) -> &dyn System<In = (), Out = ()>
pub fn system_at(&self, id: NodeId) -> &dyn System<In = (), Out = ()>
Returns the system at the given NodeId
.
Panics if it doesn’t exist.
sourcepub fn get_set_at(&self, id: NodeId) -> Option<&dyn SystemSet>
pub fn get_set_at(&self, id: NodeId) -> Option<&dyn SystemSet>
Returns the set at the given NodeId
, if it exists.
sourcepub fn set_at(&self, id: NodeId) -> &dyn SystemSet
pub fn set_at(&self, id: NodeId) -> &dyn SystemSet
Returns the set at the given NodeId
.
Panics if it doesn’t exist.
sourcepub fn systems(
&self
) -> impl Iterator<Item = (NodeId, &dyn System<In = (), Out = ()>, &[BoxedCondition])>
pub fn systems( &self ) -> impl Iterator<Item = (NodeId, &dyn System<In = (), Out = ()>, &[BoxedCondition])>
Returns an iterator over all systems in this schedule.
sourcepub fn system_sets(
&self
) -> impl Iterator<Item = (NodeId, &dyn SystemSet, &[BoxedCondition])>
pub fn system_sets( &self ) -> impl Iterator<Item = (NodeId, &dyn SystemSet, &[BoxedCondition])>
Returns an iterator over all system sets in this schedule.
sourcepub fn hierarchy(&self) -> &Dag
pub fn hierarchy(&self) -> &Dag
Returns the Dag
of the hierarchy.
The hierarchy is a directed acyclic graph of the systems and sets, where an edge denotes that a system or set is the child of another set.
sourcepub fn dependency(&self) -> &Dag
pub fn dependency(&self) -> &Dag
Returns the Dag
of the dependencies in the schedule.
Nodes in this graph are systems and sets, and edges denote that a system or set has to run before another system or set.
sourcepub fn conflicting_systems(&self) -> &[(NodeId, NodeId, Vec<ComponentId>)]
pub fn conflicting_systems(&self) -> &[(NodeId, NodeId, Vec<ComponentId>)]
Returns the list of systems that conflict with each other, i.e. have ambiguities in their access.
If the Vec<ComponentId>
is empty, the systems conflict on World
access.
Must be called after ScheduleGraph::build_schedule
to be non-empty.
sourcepub fn initialize(&mut self, world: &mut World)
pub fn initialize(&mut self, world: &mut World)
Initializes any newly-added systems and conditions by calling System::initialize
sourcepub fn build_schedule(
&mut self,
components: &Components,
schedule_label: InternedScheduleLabel,
ignored_ambiguities: &BTreeSet<ComponentId>
) -> Result<SystemSchedule, ScheduleBuildError>
pub fn build_schedule( &mut self, components: &Components, schedule_label: InternedScheduleLabel, ignored_ambiguities: &BTreeSet<ComponentId> ) -> Result<SystemSchedule, ScheduleBuildError>
Build a SystemSchedule
optimized for scheduler access from the ScheduleGraph
.
This method also
- checks for dependency or hierarchy cycles
- checks for system access conflicts and reports ambiguities
source§impl ScheduleGraph
impl ScheduleGraph
sourcepub fn conflicts_to_string<'a>(
&'a self,
ambiguities: &'a [(NodeId, NodeId, Vec<ComponentId>)],
components: &'a Components
) -> impl Iterator<Item = (String, String, Vec<&str>)> + 'a
pub fn conflicts_to_string<'a>( &'a self, ambiguities: &'a [(NodeId, NodeId, Vec<ComponentId>)], components: &'a Components ) -> impl Iterator<Item = (String, String, Vec<&str>)> + 'a
convert conflicts to human readable format
Trait Implementations§
source§impl Default for ScheduleGraph
impl Default for ScheduleGraph
source§fn default() -> ScheduleGraph
fn default() -> ScheduleGraph
Auto Trait Implementations§
impl !RefUnwindSafe for ScheduleGraph
impl Send for ScheduleGraph
impl Sync for ScheduleGraph
impl Unpin for ScheduleGraph
impl !UnwindSafe for ScheduleGraph
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.