class SGRangeAnimation : public SGAnimation
{
public:
- SGRangeAnimation (SGPropertyNode_ptr props);
+ SGRangeAnimation (SGPropertyNode *prop_root,
+ SGPropertyNode_ptr props);
virtual ~SGRangeAnimation ();
+ virtual void update();
+private:
+ SGPropertyNode_ptr _min_prop;
+ SGPropertyNode_ptr _max_prop;
+ float _min;
+ float _max;
+ float _min_factor;
+ float _max_factor;
};
sgVec3 _axis;
};
+/**
+ * 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;
+};
+
/**
* Animation to rotate texture mappings around a center point.
*
virtual void update();
private:
SGPropertyNode_ptr _prop;
- double _offset_m;
+ double _offset;
double _factor;
double _step;
+ double _scroll;
SGInterpTable * _table;
bool _has_min;
- double _min_m;
+ double _min;
bool _has_max;
- double _max_m;
- double _position_m;
+ double _max;
+ double _position;
sgMat4 _matrix;
sgVec3 _axis;
};
+
+
+/**
+ * Classes for handling multiple types of Texture translations on one object
+ */
+
+class SGTexMultipleAnimation : public SGAnimation
+{
+public:
+ SGTexMultipleAnimation( SGPropertyNode *prop_root,
+ SGPropertyNode_ptr props );
+ virtual ~SGTexMultipleAnimation ();
+ virtual void update();
+private:
+ class TexTransform
+ {
+ public:
+ SGPropertyNode_ptr prop;
+ int subtype; // 0=translation, 1=rotation
+ double offset;
+ double factor;
+ double step;
+ double scroll;
+ SGInterpTable * table;
+ bool has_min;
+ double min;
+ bool has_max;
+ double max;
+ double position;
+ sgMat4 matrix;
+ sgVec3 center;
+ sgVec3 axis;
+ };
+ SGPropertyNode_ptr _prop;
+ TexTransform* _transform;
+ int _num_transforms;
+};
+
+
+/**
+ * An animation to enable the alpha test
+ */
+class SGAlphaTestAnimation : public SGAnimation
+{
+public:
+ SGAlphaTestAnimation (SGPropertyNode *prop_root,
+ SGPropertyNode_ptr props);
+ virtual ~SGAlphaTestAnimation ();
+ virtual void update();
+private:
+ void setAlphaClampToBranch(ssgBranch *b, float clamp);
+ bool _done;
+ float _alpha_clamp;
+};
+
+
#endif // _SG_ANIMATION_HXX