]> git.mxchange.org Git - flightgear.git/blobdiff - src/Model/model.hxx
Make sure that all elapsed time gets passed to update when a subsystem
[flightgear.git] / src / Model / model.hxx
index 18e320e1ebbb0fa7227186ef971936dc5b3dd1d7..623d529f68121c9fe9847d340b7353e3e28fc452 100644 (file)
@@ -75,10 +75,15 @@ public:
    */
   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:
 
@@ -95,7 +100,6 @@ class NullAnimation : public Animation
 public:
   NullAnimation (SGPropertyNode_ptr props);
   virtual ~NullAnimation ();
-  virtual void update ();
 };
 
 
@@ -107,7 +111,6 @@ class RangeAnimation : public Animation
 public:
   RangeAnimation (SGPropertyNode_ptr props);
   virtual ~RangeAnimation ();
-  virtual void update ();
 };
 
 
@@ -119,7 +122,6 @@ class BillboardAnimation : public Animation
 public:
   BillboardAnimation (SGPropertyNode_ptr props);
   virtual ~BillboardAnimation ();
-  virtual void update ();
 };
 
 
@@ -159,6 +161,22 @@ private:
 };
 
 
+/**
+ * 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.
  *
@@ -275,6 +293,3 @@ private:
 };
 
 #endif // __MODEL_HXX
-
-
-