+/**
+ * Animation to blend an object.
+ */
+class SGBlendAnimation : public SGAnimation
+{
+public:
+ SGBlendAnimation( SGPropertyNode *prop_root,
+ SGPropertyNode_ptr props );
+ virtual ~SGBlendAnimation ();
+ virtual void update();
+private:
+ SGPropertyNode_ptr _prop;
+ SGInterpTable * _table;
+ double _prev_value;
+ double _offset;
+ double _factor;
+ bool _has_min;
+ double _min;
+ bool _has_max;
+ double _max;
+};
+
+/**
+ * Animation to scale an object.
+ */
+class SGScaleAnimation : public SGAnimation
+{
+public:
+ SGScaleAnimation( SGPropertyNode *prop_root,
+ SGPropertyNode_ptr props );
+ virtual ~SGScaleAnimation ();
+ virtual void update();
+private:
+ SGPropertyNode_ptr _prop;
+ double _x_factor;
+ double _y_factor;
+ double _z_factor;
+ double _x_offset;
+ double _y_offset;
+ double _z_offset;
+ SGInterpTable * _table;
+ bool _has_min_x;
+ bool _has_min_y;
+ bool _has_min_z;
+ double _min_x;
+ double _min_y;
+ double _min_z;
+ bool _has_max_x;
+ bool _has_max_y;
+ bool _has_max_z;
+ double _max_x;
+ double _max_y;
+ double _max_z;
+ double _x_scale;
+ double _y_scale;
+ double _z_scale;
+ sgMat4 _matrix;
+};
+