pub struct AnimationGraph {
pub nodes: HashMap<NodeId, AnimationNode>,
pub edges: HashMap<SourcePin, TargetPin>,
pub edges_inverted: HashMap<TargetPin, SourcePin>,
pub io_spec: IoSpec<GraphInputPin>,
pub default_data: HashMap<GraphInputPin, DataValue>,
pub editor_metadata: EditorMetadata,
}Fields§
§nodes: HashMap<NodeId, AnimationNode>§edges: HashMap<SourcePin, TargetPin>Indexed by start pin.
edges_inverted: HashMap<TargetPin, SourcePin>Inverted, indexed by end pin.
io_spec: IoSpec<GraphInputPin>Defines inputs and outputs for this graph.
default_data: HashMap<GraphInputPin, DataValue>§editor_metadata: EditorMetadataImplementations§
Source§impl AnimationGraph
impl AnimationGraph
pub fn new() -> AnimationGraph
Sourcepub fn add_node(&mut self, node: AnimationNode)
pub fn add_node(&mut self, node: AnimationNode)
Add a new node to the graph
Sourcepub fn remove_node(&mut self, node_id: impl Into<NodeId>)
pub fn remove_node(&mut self, node_id: impl Into<NodeId>)
Add a new node to the graph
Sourcepub fn add_edge(&mut self, source_pin: SourcePin, target_pin: TargetPin)
pub fn add_edge(&mut self, source_pin: SourcePin, target_pin: TargetPin)
Add a new edge to the graph
Sourcepub fn remove_edge_by_target(
&mut self,
target_pin: &TargetPin,
) -> Option<SourcePin>
pub fn remove_edge_by_target( &mut self, target_pin: &TargetPin, ) -> Option<SourcePin>
Remove an edge from the graph.
Sourcepub fn set_default_data(&mut self, input: GraphInputPin, value: DataValue)
pub fn set_default_data(&mut self, input: GraphInputPin, value: DataValue)
Sets the value for a default parameter, registering it if it wasn’t yet done
Sourcepub fn get_default_data(&mut self, input: &GraphInputPin) -> Option<DataValue>
pub fn get_default_data(&mut self, input: &GraphInputPin) -> Option<DataValue>
Get the default value of an input parameter, if it exists
Sourcepub fn add_input_data(&mut self, input: GraphInputPin, data_spec: DataSpec)
pub fn add_input_data(&mut self, input: GraphInputPin, data_spec: DataSpec)
Register an input pose pin for the graph
Sourcepub fn add_input_time(&mut self, input: GraphInputPin)
pub fn add_input_time(&mut self, input: GraphInputPin)
Register an input pose pin for the graph
Sourcepub fn add_output_data(&mut self, pin_id: String, spec: DataSpec)
pub fn add_output_data(&mut self, pin_id: String, spec: DataSpec)
Register an output parameter for the graph
Sourcepub fn add_output_time(&mut self)
pub fn add_output_time(&mut self)
Enables time “output” for this graph
pub fn add_input_data_edge( &mut self, input_name: impl Into<GraphInputPin>, target_node: impl Into<NodeId>, target_edge: impl Into<String>, )
pub fn add_output_data_edge( &mut self, source_node: impl Into<NodeId>, source_edge: impl Into<String>, output_name: impl Into<String>, )
pub fn add_input_time_edge( &mut self, input_name: impl Into<GraphInputPin>, target_node: impl Into<NodeId>, target_edge: impl Into<String>, )
pub fn add_output_pose_edge(&mut self, source_node: impl Into<NodeId>)
Sourcepub fn add_node_parameter_edge(
&mut self,
source_node: impl Into<NodeId>,
source_pin: impl Into<String>,
target_node: impl Into<NodeId>,
target_pin: impl Into<String>,
)
pub fn add_node_parameter_edge( &mut self, source_node: impl Into<NodeId>, source_pin: impl Into<String>, target_node: impl Into<NodeId>, target_pin: impl Into<String>, )
Adds an edge between two nodes in the graph
Sourcepub fn add_node_pose_edge(
&mut self,
source_node: impl Into<NodeId>,
target_node: impl Into<NodeId>,
target_pin: impl Into<String>,
)
pub fn add_node_pose_edge( &mut self, source_node: impl Into<NodeId>, target_node: impl Into<NodeId>, target_pin: impl Into<String>, )
Adds an edge between two node pose pins in the graph
pub fn validate(&self) -> Result<(), GraphValidationError>
Sourcepub fn can_add_edge(
&self,
edge: Edge,
ctx: SpecResources<'_>,
) -> Result<(), Option<Edge>>
pub fn can_add_edge( &self, edge: Edge, ctx: SpecResources<'_>, ) -> Result<(), Option<Edge>>
Check whether a new edge can be added to the graph. If not, return whether an edge can be removed to maybe make it possible. It is not guaranteed that the edge will be legal after a single edge removal, so this function should be called repeatedly until it returns Ok(()) or Err(None)
Sourcepub fn validate_edges(
&self,
ctx: SpecResources<'_>,
) -> Result<(), HashSet<Edge>>
pub fn validate_edges( &self, ctx: SpecResources<'_>, ) -> Result<(), HashSet<Edge>>
Verify that graph edges are legal. If not, return a set of edges that when removed would make the graph legal.
Reasons for edges to make the graph illegal are:
- Two pose edges share the same source.
- An edge source and target pins have different types. This could be:
- Pose pin connected to a parameter pin.
- Pose type mismatch.
- Parameter type mismatch.
- An edge source pin, target pin or both are missing. This could be because:
- The source node, target node or both are missing.
- The source node or target node do not have the named pin.
- Cycle.
pub fn contains_node_that<T>(&self, f: impl Fn(&T) -> bool) -> Option<NodeId>where
T: NodeLike,
pub fn get_data( &self, target_pin: TargetPin, ctx: GraphContext<'_>, ) -> Result<DataValue, GraphError>
pub fn get_duration( &self, target_pin: TargetPin, ctx: GraphContext<'_>, ) -> Result<Option<f32>, GraphError>
pub fn get_time_update( &self, source_pin: SourcePin, ctx: GraphContext<'_>, ) -> Result<TimeUpdate, GraphError>
pub fn query( &self, time_update: TimeUpdate, context_arena: &mut GraphContextArena, resources: &SystemResources<'_, '_>, root_entity: Entity, entity_map: &HashMap<BoneId, Entity>, deferred_gizmos: &mut DeferredGizmos, ) -> Result<HashMap<String, DataValue>, GraphError>
pub fn query_with_env( &self, time_update: TimeUpdate, context_arena: &mut GraphContextArena, resources: &SystemResources<'_, '_>, io_env: &dyn GraphIoEnv, root_entity: Entity, entity_map: &HashMap<BoneId, Entity>, deferred_gizmos: &mut DeferredGizmos, ) -> Result<HashMap<String, DataValue>, GraphError>
Trait Implementations§
Source§impl Clone for AnimationGraph
impl Clone for AnimationGraph
Source§fn clone(&self) -> AnimationGraph
fn clone(&self) -> AnimationGraph
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AnimationGraph
impl Debug for AnimationGraph
Source§impl Default for AnimationGraph
impl Default for AnimationGraph
Source§fn default() -> AnimationGraph
fn default() -> AnimationGraph
Source§impl FromReflect for AnimationGraph
impl FromReflect for AnimationGraph
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<AnimationGraph>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<AnimationGraph>
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetTypeRegistration for AnimationGraph
impl GetTypeRegistration for AnimationGraph
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl PartialReflect for AnimationGraph
impl PartialReflect for AnimationGraph
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<AnimationGraph>) -> ReflectOwned
fn reflect_owned(self: Box<AnimationGraph>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<AnimationGraph>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<AnimationGraph>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<AnimationGraph>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<AnimationGraph>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
PartialReflect, combines reflect_clone and
take in a useful fashion, automatically constructing an appropriate
ReflectCloneError if the downcast fails. Read moreSource§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for AnimationGraph
impl Reflect for AnimationGraph
Source§fn into_any(self: Box<AnimationGraph>) -> Box<dyn Any>
fn into_any(self: Box<AnimationGraph>) -> Box<dyn Any>
Box<dyn Any>. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<AnimationGraph>) -> Box<dyn Reflect>
fn into_reflect(self: Box<AnimationGraph>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl Struct for AnimationGraph
impl Struct for AnimationGraph
Source§fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
name as a &dyn PartialReflect.Source§fn field_mut(
&mut self,
name: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, name: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
name as a
&mut dyn PartialReflect.Source§fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
index as a
&dyn PartialReflect.Source§fn field_at_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
index
as a &mut dyn PartialReflect.Source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index.Source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
Source§fn to_dynamic_struct(&self) -> DynamicStruct
fn to_dynamic_struct(&self) -> DynamicStruct
DynamicStruct from this struct.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None if TypeInfo is not available.Source§impl TypePath for AnimationGraph
impl TypePath for AnimationGraph
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl Typed for AnimationGraph
impl Typed for AnimationGraph
Source§impl VisitAssetDependencies for AnimationGraph
impl VisitAssetDependencies for AnimationGraph
fn visit_dependencies(&self, visit: &mut impl FnMut(UntypedAssetId))
impl Asset for AnimationGraph
Auto Trait Implementations§
impl Freeze for AnimationGraph
impl !RefUnwindSafe for AnimationGraph
impl Send for AnimationGraph
impl Sync for AnimationGraph
impl Unpin for AnimationGraph
impl !UnwindSafe for AnimationGraph
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<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> 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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>, which can then be
downcast into Box<dyn 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>, which 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> 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info.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
Creates Self using default().
Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§impl<T> GraphStateType for T
impl<T> GraphStateType for T
fn clone_box(&self) -> Box<dyn GraphStateType>
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.