X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Fmodel%2Fanimation.hxx;h=d5063feb221e30803ef6f9929e301c478ac6b1eb;hb=3d43bc04801e9c3b54d298a031467971cd0d3366;hp=9259401b3ea89d5bd6801f764c4845bcda3692bb;hpb=4c78e887e1d08599c8ecefa983acd8d4b79c742d;p=simgear.git diff --git a/simgear/scene/model/animation.hxx b/simgear/scene/model/animation.hxx index 9259401b..d5063feb 100644 --- a/simgear/scene/model/animation.hxx +++ b/simgear/scene/model/animation.hxx @@ -99,8 +99,17 @@ public: 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; }; @@ -221,6 +230,65 @@ private: 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. * @@ -313,4 +381,21 @@ private: }; +/** + * 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