Property driven animation player applies animation with time taken from specified property on the node every time property changes.
More...
|
void | setTimeline (TimelineSharedPtr animationTimeline) |
| Sets animation timeline to Timeline property of the player. More...
|
|
TimelineSharedPtr | getTimeline () const |
| Gets animation timeline from Timeline property of the player. More...
|
|
void | setTimeControllerPropertyType (string propertyTypeName) |
| Sets the value of TimeControllerPropertyType property of the player. More...
|
|
string | getTimeControllerPropertyType () const |
| Gets the value of TimeControllerPropertyType property of the player. More...
|
|
void | setRelativePlayback (bool relativePlayback) |
| Sets value of RelativePlayback property. More...
|
|
bool | isRelativePlayback () const |
| Gets value of RelativePlayback property. More...
|
|
void | setEnabled (bool enabled) |
| Sets value of Enabled property. More...
|
|
bool | isEnabled () const |
| Gets value of Enabled property. More...
|
|
virtual | ~NodeComponent () |
| Destructor. More...
|
|
void | setName (string_view name) |
| Sets the name of node component. More...
|
|
string | getName () const |
| Gets the name of node component. More...
|
|
NodeSharedPtr | getNode () const |
| Returns the node the node component is attached to or null pointer if node component is not attached to a node. More...
|
|
void | attach (NodeWeakPtr node) |
| Attaches node component to node. More...
|
|
void | detach () |
| Detaches node component from the node it was attached to. More...
|
|
State | getState () const |
| Gets the state of node component indicating if component is attached to a node, detached from any node or in process of attaching/detaching. More...
|
|
bool | isAttaching () const |
| Indicates whether node component is in the process of attaching to a node. More...
|
|
bool | isAttached () const |
| Indicates whether node component is attached to a node. More...
|
|
bool | isAttachingOrAttached () const |
| Indicates whether node component is in the process of attaching to a node or already attached. More...
|
|
bool | isDetaching () const |
| Indicates whether node component currently detaching from the node. More...
|
|
bool | isDetached () const |
| Indicates whether node component is detached from any node. More...
|
|
bool | isDetachingOrDetached () const |
| Indicates whether node component is in the process of detaching from the node or already detached. More...
|
|
| Object (Domain *domain) |
|
virtual | ~Object () |
|
Domain * | getDomain () const |
| Returns the domain the object belongs to. More...
|
|
KzuTaskScheduler * | getTaskScheduler () const |
| Returns the task scheduler of the object. More...
|
|
KzuMessageDispatcher * | getMessageDispatcher () const |
| Returns the message dispatcher of the object. More...
|
|
ResourceManager * | getResourceManager () const |
| Returns the resource manager of the object. More...
|
|
virtual const Metaclass * | getDynamicMetaclass () const KZ_OVERRIDE |
| Returns the metaclass of the dynamic type of the object. More...
|
|
AppliedStyleEntry * | applyObjectStyle (kanzi::StyleSharedPtr style) |
| Applies a style to an object. More...
|
|
void | unapplyObjectStyle (AppliedStyleEntry *appliedStyleEntry) |
|
void | applyObjectStyles () |
| Apply all styles for an object node. More...
|
|
void | unapplyObjectStyles () |
| Unapplies and removes all applied styles. More...
|
|
virtual | ~MetaObject () |
|
bool | isTypeOf (const Metaclass *objectType) const |
| Determines if the type of this object is the given type or derived from it. More...
|
|
| PropertyObject () |
|
virtual | ~PropertyObject () |
|
template<typename DataType > |
void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
| Sets the local value of a property. More...
|
|
void | removeKzbProperties () |
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property. More...
|
|
template<typename DataType > |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
| Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. More...
|
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property disregarding modifiers. More...
|
|
template<typename DataType > |
void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
|
template<typename DataType > |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
|
void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
|
bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
|
void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
|
bool | hasValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value. More...
|
|
bool | hasBaseValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value, disregarding modifiers. More...
|
|
bool | hasLocalValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a local value set for the property. More...
|
|
bool | hasNonClassValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a value of any precedence higher than class default value set for the property. More...
|
|
void | removeLocalValue (AbstractPropertyType propertyType) |
| Removes the local value associated with the property. More...
|
|
void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
| Copies local value of single property from another object. More...
|
|
void | copyLocalValues (const PropertyObject &other) |
| Copies all local values from another object. More...
|
|
template<typename DataType > |
void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *owner) |
|
template<typename DataType > |
void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *owner) |
|
template<typename DataType > |
void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
|
template<typename DataType > |
void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
|
void | validatePropertyModifiers (AbstractPropertyType propertyType) |
|
template<typename DataType > |
void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
|
template<typename DataType > |
void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
|
template<typename DataType > |
size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) |
| Gets number of current notification handlers for given property type. More...
|
|
|
| PropertyDrivenAnimationPlayer (Domain *domain, string_view name) |
| Constructor. More...
|
|
virtual void | attachOverride () KZ_OVERRIDE |
| NodeComponent::attachOverride() implementation. More...
|
|
virtual void | detachOverride () KZ_OVERRIDE |
| NodeComponent::detachOverride() implementation. More...
|
|
virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) KZ_OVERRIDE |
| Object::onPropertyChanged() implementation. More...
|
|
void | startTimelinePlayback () |
| Starts playback of an animation timeline assigned to the player via Timeline property. More...
|
|
void | stopTimelinePlayback () |
| Stops ongoing playback of an animation timeline. More...
|
|
template<typename T > |
void | updateTimelinePlaybackTime () |
| Updates timeline playback by time calculated from time controller property. More...
|
|
chrono::milliseconds | convertToMilliseconds (int milliseconds) |
| Converts integer number of milliseconds to chrono duration in milliseconds. More...
|
|
chrono::milliseconds | convertToMilliseconds (float seconds) |
| Converts floating point number of seconds to chrono duration in milliseconds. More...
|
|
| NodeComponent (Domain *domain, string_view name) |
| Constructor. More...
|
|
template<typename TMessageType , typename TClass , typename TMethod > |
Node::MessageSubscriptionToken | addNodeComponentMessageHandler (TMessageType &messageType, TClass *nodeComponent, TMethod method) |
| Adds message handler for node component messages to the component's node. More...
|
|
void | removeNodeComponentMessageFilter (Node::MessageSubscriptionToken subscriptionToken) |
| Removes message handler added via addNodeComponentMessageHandler function. More...
|
|
void | initialize () |
|
void | onCopy (const Object &other) |
|
| MetaObject () |
|
void | initialize () |
|
void | addPropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, PropertyValuePrecedence precedence, void *owner) |
|
void | removePropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, void *owner) |
|
AbstractPropertyTypeDescriptor::ValueSourceEntry * | getTopValueSourceEntry (AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage) const |
|
AbstractPropertyTypeDescriptor::ValueSourceEntry * | getTopValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor) const |
|
AbstractPropertyTypeDescriptor::ValueSource * | getTopValueSource (AbstractPropertyTypeDescriptor &descriptor) const |
|
AbstractPropertyTypeDescriptor::ValueSource * | getFinalValueSource (AbstractPropertyTypeDescriptor &descriptor) const |
|
AbstractPropertyTypeDescriptor::ValueSource * | getNonClassValueSource (AbstractPropertyTypeDescriptor &descriptor) const |
|
AbstractPropertyTypeDescriptor::ValueSource * | getClassValueSource (AbstractPropertyTypeDescriptor &descriptor) const |
|
AbstractPropertyTypeDescriptor::ValueSourceEntry * | findLocalValueSourceEntry (AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage) |
|
AbstractPropertyTypeDescriptor::ValueSourceEntry * | constructLocalValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage) |
|
AbstractPropertyTypeDescriptor::ValueSourceEntry * | acquireLocalValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor) |
|
AbstractPropertyTypeDescriptor::PropertyStorage * | findPropertyStorage (AbstractPropertyTypeDescriptor &descriptor) const |
|
PropertyStoragePtr | findPropertyStoragePtr (AbstractPropertyTypeDescriptor &descriptor) const |
| Gets property storage intrusive pointer that can be used to hold a reference until end of operation. More...
|
|
PropertyStoragePtr | constructPropertyStorage (AbstractPropertyTypeDescriptor &descriptor) |
|
PropertyStoragePtr | acquirePropertyStorage (AbstractPropertyTypeDescriptor &descriptor) |
|
AbstractPropertyTypeDescriptor::ModifierStorage * | acquireModifierStorage (AbstractPropertyTypeDescriptor &descriptor) |
|
AbstractPropertyTypeDescriptor::ModifierStorage * | findModifierStorage (AbstractPropertyTypeDescriptor &descriptor) |
|
AbstractPropertyTypeDescriptor::NotificationStorage * | acquireNotificationStorage (AbstractPropertyTypeDescriptor &descriptor) |
|
AbstractPropertyTypeDescriptor::NotificationStorage * | findNotificationStorage (AbstractPropertyTypeDescriptor &descriptor) |
|
AbstractPropertyTypeDescriptor * | findPropertyTypeDescriptorByUnqualifiedNameAndDataType (string_view unqualifiedName, PropertyDataType dataType) |
|
void | validatePropertyModifiersAndNotifyHandlers (PropertyStoragePtr &propertyStorage) |
|
void | copyLocalValue (const AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage) |
| Copy local value from property storage. More...
|
|
PropertyStorageContainer::iterator | beginPropertyStorage () |
|
PropertyStorageContainer::iterator | endPropertyStorage () |
|
virtual void | notifyPropertyHandlers (PropertyStoragePtr &propertyStorage, PropertyNotificationReason reason) |
|
void | onCopy (const PropertyObject &other) |
|
Property driven animation player applies animation with time taken from specified property on the node every time property changes.
Property driven animation player applies timeline specified in the Timeline property of the player. Paths to animated objects are resolved relative to the node where the player is attached to. All animations in applied timeline are relative: values calculated in animations are added to property values instead of replacing it.
Time for timeline is taken from a property of the node; type name of this property should be set in the TimeControllerPropertyType property of the player. Any property of integer or float type can be used for this purpose. Properties with data types other than integer and float are not supported. Time calculated from value of the property depends on its data type:
- If property is of float type, then property value 1.0 is interpreted as 1 second (so if value of time property is for example 5.5f, then the time for timeline will be 5.5 seconds, etc.).
- If property is of integer type, then property value 1 is interpreted as 1 millisecond (so if value of time property is for example 2300, then the time for timeline will be 2.3 seconds, etc.).
Recommended data type for a property used as time controller is integer. Using integer property allows to precisely control the time at which animations in timeline are applied. If floating point property is used as a time controller, property driven animation player rounds it to integer number of milliseconds. In this case result time at which animations in timeline are applied is not precise, but various effects can be applied to floating point time property, for example smooth interpolation by property target interpolator.
Property driven animation player starts to apply animations from the timeline immediately after it is attached to the node. If time controller property could not be resolved or if it has unsupported data type, player will not apply timeline. If time controller property is resolved but is not set to the node, the player will use default property value for calculating time.
Please note that Timeline and TimeController properties of the player are applied only once when it is attached to the node. New values which are set to these properties after player is attach will be ignored.
Examples
To create property driven animation player and specify its timeline and time controller property:
player->setTimeline(timeline);
player->setTimeControllerPropertyType(timePropertyType.getName());
To attach property driven animation player to the node:
node->addNodeComponent(player);