+
+ struct ConnectorTargetValues
+ {
+ ConnectorTargetValues()
+ : targetValue(),
+ timePeriod( 0.0f ),
+ connectorIndex( 0 ),
+ animatorType( TO )
+ {
+ }
+
+ Property::Value targetValue;
+ TimePeriod timePeriod;
+ std::size_t connectorIndex;
+ Animation::Type animatorType;
+ };
+
+ enum class Notify
+ {
+ USE_CURRENT_VALUE, ///< Set the current value for the property
+ USE_TARGET_VALUE, ///< Set the animator's target value for the property
+ FORCE_CURRENT_VALUE, ///< Set the current value for the property even if the end action is to discard
+ };
+
+private:
+
+ /**
+ * Compares the end times of the animators returning true if lhs end time is less than rhs end time.
+ * @param[in] lhs The first comparator
+ * @param[in] rhs The second comparator
+ * @return True if end time of lhs is less, false otherwise.
+ */
+ static bool CompareConnectorEndTimes( const ConnectorTargetValues& lhs, const ConnectorTargetValues& rhs );
+
+ /**
+ * Notifies all the objects whose properties are being animated.
+ * @param[in] notifyValueType Whether we should set the current or target value
+ */
+ void NotifyObjects( Notify notifyValueType );
+
+ /**
+ * Sends message to SceneGraph with final progress value
+ */
+ void SendFinalProgressNotificationMessage();
+
+private: