#include <plib/sg.h>
#include <plib/ssg.h>
+#include <simgear/misc/props.hxx>
+
// Don't pull in the headers, since we don't need them here.
class ssgBranch;
class ssgSelector;
class ssgTransform;
-class SGPropertyNode;
class SGInterpTable;
class FGCondition;
class FGLocation;
*/
virtual ssgBranch * getBranch () { return _branch; }
+ /**
+ * Initialize the animation, after children have been added.
+ */
+ virtual void init ();
+
/**
* Update the animation.
*/
- virtual void update () = 0;
+ virtual void update ();
protected:
public:
NullAnimation (SGPropertyNode_ptr props);
virtual ~NullAnimation ();
- virtual void update ();
};
public:
RangeAnimation (SGPropertyNode_ptr props);
virtual ~RangeAnimation ();
- virtual void update ();
};
public:
BillboardAnimation (SGPropertyNode_ptr props);
virtual ~BillboardAnimation ();
- virtual void update ();
};
virtual ~SpinAnimation ();
virtual void update ();
private:
- SGPropertyNode * _prop;
+ SGPropertyNode_ptr _prop;
double _factor;
double _position_deg;
double _last_time_sec;
};
+/**
+ * Animation to draw objects for a specific amount of time each.
+ */
+class TimedAnimation : public Animation
+{
+public:
+ TimedAnimation (SGPropertyNode_ptr props);
+ virtual ~TimedAnimation ();
+ virtual void update ();
+private:
+ double _duration_sec;
+ double _last_time_sec;
+ int _step;
+};
+
+
/**
* Animation to rotate an object around a center point.
*
virtual ~RotateAnimation ();
virtual void update ();
private:
- SGPropertyNode * _prop;
+ SGPropertyNode_ptr _prop;
double _offset_deg;
double _factor;
SGInterpTable * _table;
virtual ~TranslateAnimation ();
virtual void update ();
private:
- SGPropertyNode * _prop;
+ SGPropertyNode_ptr _prop;
double _offset_m;
double _factor;
SGInterpTable * _table;
};
#endif // __MODEL_HXX
-
-
-