Struct PropertyDrivenAnimationPlayer

pub struct PropertyDrivenAnimationPlayer(/* private fields */);
Expand description

Use Property Driven Animation Player when you want to use a property type to control a keyframe animation. Property Driven Animation Player applies an animation with the time taken from a specific property in the node, to which you attach the player, every time that property changes.

Property Driven Animation Player applies the timeline specified in the TimelineProperty property of the player. Kanzi resolves paths to animated objects relative to the node to which you attach the player. All animations in the applied timeline are relative: values calculated in animations are added to property values instead of replacing them.

The time for the timeline is taken from a property of the node to which you attach the Property Driven Animation Player. To set the type name of this property, use the TimeControllerPropertyTypeProperty property of the player. You can use any integer and float properties. Property Driven Animation Player does not support using properties of other data types. The time calculated from the value of the property depends on its data type:

  • For float properties, property value 1.0 is interpreted as 1 second. For example, if the value of the time property is 5.5f, the time for the timeline is 5.5 seconds, and so on.
  • For integer properties, property value 1 is interpreted as 1 millisecond. For example, if the value of the time property is 2300, the time for the timeline is 2.3 seconds, and so on.

It is recommended to use integer properties as time controllers. Using an integer property enables precise control of the time at which the animations in the timeline are applied. If you use a floating point property as a time controller, the Property Driven Animation Player rounds it to an integer number of milliseconds. In this case the result time, at which the animations in the timeline are applied, is not precise, but you can apply various effects to a floating point time property. For example, smooth interpolation by PropertyTargetInterpolator.

Property Driven Animation Player starts to apply animations from the timeline immediately after it is attached to the node. If the time controller property cannot be resolved or if it has an unsupported data type, the player does not apply the timeline. If the time controller property is resolved but is not set to the node, the player calculates the time using the default property value.

Note that the TimelineProperty and TimeControllerPropertyTypeProperty properties are applied only once when you attach the Property Driven Animation Player to the node. New values, which you set to these properties after attaching the player, are ignored.

See: AnimationPlayer, PropertyTargetInterpolator

§Examples

To create a Property Driven Animation Player and sets its timeline and time controller property:

To attach a Property Driven Animation Player to a node:

Implementations§

§

impl PropertyDrivenAnimationPlayer

pub fn create( domain: &Domain, name: impl AsRef<KanziStr>, ) -> Result<PropertyDrivenAnimationPlayer, Error>

Creates a Property Driven Animation Player.

§Arguments
  • domain - Domain.
  • name - Name of the Property Driven Animation Player.
§Returns

Property Driven Animation Player.

§

impl PropertyDrivenAnimationPlayer

Methods from Deref<Target = NodeComponent>§

pub fn get_name(&self) -> Result<KanziString, Error>

pub fn set_name(&self, value: impl AsRef<KanziStr>) -> Result<(), Error>

pub fn get_node(&self) -> Result<Option<Weak<Node>>, Error>

Returns the node the node component is attached to or None if node component is not attached to a node.

pub fn get_state(&self) -> Result<NodeComponentState, Error>

Gets the state of node component indicating if component is attached to a node, detached from any node or in process of attaching/detaching.

Methods from Deref<Target = Object>§

pub fn as_ptr(&self) -> *mut ObjectWrapper

pub fn as_wrapper(&self) -> &ObjectWrapper

pub fn as_object(&self) -> &Object

Represents any type inheriting from Object as &Object. This is useful for comparisions when PartialEq traits failed to compare objects of different types.

let child = screen.get_child(0)?;
let parent = child.get_parent()?.into_error(ErrorKind::ObjectNotFound)?;
// assert_eq!(screen, parent); // <- Fails to compile!
assert_eq!(screen.as_object(), parent.as_object());

pub fn get_native(&self) -> Result<NonNull<c_void>, Error>

Gets a pointer to the backing C++ instance.

pub fn is_stale(&self) -> bool

Checks whether the weak reference has expired.

pub fn get_property<T>( &self, property_type: &PropertyType<T>, ) -> Result<<T as VariantConstraint>::RetArg, Error>

Returns the current value of a property disregarding modifiers.

Base value is affected by the following inputs where the highest entry in the list determines the base value:

  1. Local value set with setProperty or loaded from kzb
  2. Value set by a style affecting the property.
  3. Value defined by class metadata.

Modifiers are not applied, the highest-priority base value is returned.

If no inputs to the property value can be established the system returns the value default value from property type metadata.

§Arguments
  • property_type - The property type identifying the property to retrieve.
§Returns

The evaluated property value.

pub fn get_optional_property<T>( &self, property_type: &PropertyType<T>, ) -> Result<Option<<T as VariantConstraint>::RetArg>, Error>

Returns the current value of a property disregarding modifiers, but does not default to the value in property metadata if there are no inputs to the property value.

If there is no value sources, None is returned.

If no inputs to the property value can be established the system returns the value default value from property type metadata.

§Arguments
  • property_type - The property type identifying the property to retrieve.
§Returns

The evaluated property value.

pub fn set_property<T>( &self, property_type: &PropertyType<T>, value: <T as VariantConstraint>::DataArg<'_>, ) -> Result<(), Error>

Sets the local value of a property type.

pub fn has_value<T>( &self, property_type: &PropertyType<T>, ) -> Result<bool, Error>

Evaluates whether there are any inputs into the property value. Both value sources and modifiers are taken into account.

§Returns

Returns true if there are inputs into the property value, false otherwise.

pub fn remove_local_value<T>( &self, property_type: &PropertyType<T>, ) -> Result<(), Error>

Removes the local value associated with the property.

pub fn get_metaclass(&self) -> Result<Metaclass, Error>

Returns the metaclass of the dynamic type of the object.

pub fn get_domain(&self) -> Result<Domain, Error>

Returns the domain the object belongs to.

pub fn set_flag_keep_during_patching<T>( &self, property_type: &PropertyType<T>, ) -> Result<(), Error>

Sets the flag to indicate that the property was loaded from KZB.

pub fn debug_string(&self) -> Result<String, Error>

Builds a string representation of the object intended for debugging purposes.

Trait Implementations§

§

impl Clone for PropertyDrivenAnimationPlayer

§

fn clone(&self) -> PropertyDrivenAnimationPlayer

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl ConcreteObjectConstraint for PropertyDrivenAnimationPlayer

§

fn create_instance( domain: &Domain, name: impl AsRef<KanziStr>, ) -> Result<Self, Error>

§

impl Debug for PropertyDrivenAnimationPlayer

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Deref for PropertyDrivenAnimationPlayer

§

type Target = NodeComponent

The resulting type after dereferencing.
§

fn deref(&self) -> &<PropertyDrivenAnimationPlayer as Deref>::Target

Dereferences the value.
§

impl Inheritable for PropertyDrivenAnimationPlayer

§

unsafe fn downcast_unchecked<T>(self) -> T
where T: Inherits<Self>,

Downcast the object to a more specific type. Read more
§

unsafe fn downcast_unchecked_ref<T>(&self) -> &T
where T: Inherits<Self>,

Downcast the object reference to a more specific type. Read more
§

impl Inherits<NodeComponent> for PropertyDrivenAnimationPlayer

§

fn upcast(self) -> Base

§

fn upcast_ref(&self) -> &Base

§

impl Inherits<Object> for PropertyDrivenAnimationPlayer

§

fn upcast(self) -> Base

§

fn upcast_ref(&self) -> &Base

§

impl MetaclassConstraint for PropertyDrivenAnimationPlayer

§

fn get_static_metaclass() -> &'static Metaclass

Gets metaclass associated with a given type.
§

impl ObjectConstraint for PropertyDrivenAnimationPlayer

§

fn downcast<T>(self) -> Result<Option<T>, Error>
where T: MetaInherits<Self>,

Casts metaclass to a more specific type by value.
§

fn downcast_ref<T>(&self) -> Result<Option<&T>, Error>
where T: MetaInherits<Self>,

Casts metaclass to a more specific type by reference.
§

fn is_a<T>(&self) -> Result<bool, Error>
where T: MetaInherits<Self>,

Determines whether the class this metaclass describes derives from a class described by specified metaclass.
§

fn downgrade(self) -> Weak<Self>

§

fn downgrade_ref(&self) -> Weak<Self>

§

fn lock(self) -> ThreadObject<Self>

§

fn lock_ref(&self) -> ThreadObject<Self>

§

impl<T> PartialEq<T> for PropertyDrivenAnimationPlayer

§

fn eq(&self, rhs: &T) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<T> PartialEq<Weak<T>> for PropertyDrivenAnimationPlayer

§

fn eq(&self, rhs: &Weak<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Eq for PropertyDrivenAnimationPlayer

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsAny for T
where T: 'static,

§

fn as_any(&self) -> &(dyn Any + 'static)

§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Inherits<T> for T

§

fn upcast(self) -> Base

§

fn upcast_ref(&self) -> &Base

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<Base, T> MetaInherits<Base> for T
where Base: ObjectConstraint, T: Inherits<Base> + ObjectConstraint,