From: curt Date: Thu, 8 May 2003 15:56:31 +0000 (+0000) Subject: Timed animations now working again. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=b85ff8c210facfb7f3ec99ff66b8cd841bb57e76;p=flightgear.git Timed animations now working again. --- diff --git a/src/Main/main.cxx b/src/Main/main.cxx index 2595903e4..089b64523 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -497,6 +497,7 @@ void fgRenderFrame() { } // Keep resetting sim time while the sim is initializing globals->set_sim_time_sec( 0.0 ); + Animation::set_sim_time_sec( 0.0 ); } else { // idle_state is now 1000 meaning we've finished all our // initializations and are running the main loop, so this will @@ -1024,6 +1025,7 @@ static void fgMainLoop( void ) { delta_time_sec = 0; last_time_stamp = current_time_stamp; globals->inc_sim_time_sec( delta_time_sec ); + Animation::set_sim_time_sec( globals->get_sim_time_sec() ); static long remainder = 0; long elapsed; @@ -1038,6 +1040,7 @@ static void fgMainLoop( void ) { SGTime *t = globals->get_time_params(); sglog().setLogLevels( SG_ALL, (sgDebugPriority)fgGetInt("/sim/log-level") ); + sglog().setLogLevels( SG_ALL, SG_INFO ); FGLocation * acmodel_location = 0; if(cur_fdm_state->getACModel() != 0) { diff --git a/src/Model/model.cxx b/src/Model/model.cxx index 310782a36..4dc0163a2 100644 --- a/src/Model/model.cxx +++ b/src/Model/model.cxx @@ -349,6 +349,9 @@ fgLoad3DModel( const string &fg_root, const string &path, // Implementation of Animation //////////////////////////////////////////////////////////////////////// +// Initialize the static data member +double Animation::sim_time_sec = 0.0; + Animation::Animation (SGPropertyNode_ptr props, ssgBranch * branch) : _branch(branch) { @@ -365,7 +368,7 @@ Animation::init () } void -Animation::update () +Animation::update() { } @@ -440,7 +443,7 @@ SelectAnimation::~SelectAnimation () } void -SelectAnimation::update () +SelectAnimation::update() { if (_condition != 0 && _condition->test()) ((ssgSelector *)_branch)->select(0xffff); @@ -461,7 +464,7 @@ SpinAnimation::SpinAnimation( SGPropertyNode *prop_root, _prop((SGPropertyNode *)prop_root->getNode(props->getStringValue("property", "/null"), true)), _factor(props->getDoubleValue("factor", 1.0)), _position_deg(props->getDoubleValue("starting-position-deg", 0)), - _last_time_sec( sim_time_sec /* globals->get_sim_time_sec() */ ) + _last_time_sec( sim_time_sec ) { _center[0] = props->getFloatValue("center/x-m", 0); _center[1] = props->getFloatValue("center/y-m", 0); @@ -477,7 +480,7 @@ SpinAnimation::~SpinAnimation () } void -SpinAnimation::update( double sim_time_sec ) +SpinAnimation::update() { double dt = sim_time_sec - _last_time_sec; _last_time_sec = sim_time_sec; @@ -511,7 +514,7 @@ TimedAnimation::~TimedAnimation () } void -TimedAnimation::update( double sim_time_sec ) +TimedAnimation::update() { if ((sim_time_sec - _last_time_sec) >= _duration_sec) { _last_time_sec = sim_time_sec; @@ -602,7 +605,7 @@ TranslateAnimation::~TranslateAnimation () } void -TranslateAnimation::update () +TranslateAnimation::update() { if (_table == 0) { _position_m = (_prop->getDoubleValue() + _offset_m) * _factor; diff --git a/src/Model/model.hxx b/src/Model/model.hxx index e3cbe1d56..858b7c811 100644 --- a/src/Model/model.hxx +++ b/src/Model/model.hxx @@ -53,8 +53,7 @@ class FGLocation; * instead, they should use the FGModelLoader declared in loader.hxx. */ ssgBranch * fgLoad3DModel( const string& fg_root, const string &path, - SGPropertyNode *prop_root, - double sim_time_sec ); + SGPropertyNode *prop_root, double sim_time_sec ); @@ -86,10 +85,18 @@ public: /** * Update the animation. */ - virtual void update (); + virtual void update(); + + /** + * Set the value of sim_time_sec. This needs to be called every + * frame in order for the time based animations to work correctly. + */ + static void set_sim_time_sec( double val ) { sim_time_sec = val; } protected: + static double sim_time_sec; + ssgBranch * _branch; }; @@ -137,7 +144,7 @@ public: SelectAnimation( SGPropertyNode *prop_root, SGPropertyNode_ptr props ); virtual ~SelectAnimation (); - virtual void update (); + virtual void update(); private: FGCondition * _condition; }; @@ -155,7 +162,7 @@ public: SGPropertyNode_ptr props, double sim_time_sec ); virtual ~SpinAnimation (); - virtual void update( double sim_time_sec ); + virtual void update(); private: SGPropertyNode_ptr _prop; double _factor; @@ -175,7 +182,7 @@ class TimedAnimation : public Animation public: TimedAnimation (SGPropertyNode_ptr props); virtual ~TimedAnimation (); - virtual void update( double sim_time_sec ); + virtual void update(); private: double _duration_sec; double _last_time_sec; @@ -219,7 +226,7 @@ public: TranslateAnimation( SGPropertyNode *prop_root, SGPropertyNode_ptr props ); virtual ~TranslateAnimation (); - virtual void update (); + virtual void update(); private: SGPropertyNode_ptr _prop; double _offset_m;