Struct bevy_internal::ecs::schedule::ScheduleGraph
source · pub struct ScheduleGraph { /* private fields */ }
Expand description
Metadata for a Schedule
.
Implementations§
source§impl ScheduleGraph
impl ScheduleGraph
sourcepub fn new() -> ScheduleGraph
pub fn new() -> ScheduleGraph
Creates an empty ScheduleGraph
with default settings.
sourcepub fn get_system_at(
&self,
id: NodeId
) -> Option<&(dyn System<In = (), Out = ()> + 'static)>
pub fn get_system_at( &self, id: NodeId ) -> Option<&(dyn System<In = (), Out = ()> + 'static)>
Returns the system at the given NodeId
, if it exists.
sourcepub fn system_at(
&self,
id: NodeId
) -> &(dyn System<In = (), Out = ()> + 'static)
pub fn system_at( &self, id: NodeId ) -> &(dyn System<In = (), Out = ()> + 'static)
Returns the system at the given NodeId
.
Panics if it doesn’t exist.
sourcepub fn get_set_at(&self, id: NodeId) -> Option<&(dyn SystemSet + 'static)>
pub fn get_set_at(&self, id: NodeId) -> Option<&(dyn SystemSet + 'static)>
Returns the set at the given NodeId
, if it exists.
sourcepub fn set_at(&self, id: NodeId) -> &(dyn SystemSet + 'static)
pub fn set_at(&self, id: NodeId) -> &(dyn SystemSet + 'static)
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 = ()> + 'static), &[Box<dyn ReadOnlySystem<In = (), Out = bool>>])>
pub fn systems( &self ) -> impl Iterator<Item = (NodeId, &(dyn System<In = (), Out = ()> + 'static), &[Box<dyn ReadOnlySystem<In = (), Out = bool>>])>
Returns an iterator over all systems in this schedule.
sourcepub fn system_sets(
&self
) -> impl Iterator<Item = (NodeId, &(dyn SystemSet + 'static), &[Box<dyn ReadOnlySystem<In = (), Out = bool>>])>
pub fn system_sets( &self ) -> impl Iterator<Item = (NodeId, &(dyn SystemSet + 'static), &[Box<dyn ReadOnlySystem<In = (), Out = bool>>])>
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: Interned<dyn ScheduleLabel>,
ignored_ambiguities: &BTreeSet<ComponentId>
) -> Result<SystemSchedule, ScheduleBuildError>
pub fn build_schedule( &mut self, components: &Components, schedule_label: Interned<dyn ScheduleLabel>, 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<&'a 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<&'a 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, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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
.