# include <stdlib.h>
#endif
-#include <sys/stat.h> /* for stat() */
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h> /* for stat() */
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h> /* for stat() */
// Update internal time dependent calculations (i.e. flight model)
-void fgUpdateTimeDepCalcs(int multi_loop) {
+void fgUpdateTimeDepCalcs(int multi_loop, int remainder) {
FGState *f = current_aircraft.fdm_state;
fgLIGHT *l = &cur_light_params;
fgTIME *t = &cur_time_params;
fgAPRun();
// printf("updating flight model x %d\n", multi_loop);
- fgFlightModelUpdate( current_options.get_flight_model(),
- cur_fdm_state, multi_loop );
+ fgFDMUpdate( current_options.get_flight_model(),
+ cur_fdm_state, multi_loop, remainder );
} else {
- fgFlightModelUpdate( current_options.get_flight_model(),
- cur_fdm_state, 0 );
+ fgFDMUpdate( current_options.get_flight_model(),
+ cur_fdm_state, 0, remainder );
}
// update the view angle
void fgInitTimeDepCalcs( void ) {
// initialize timer
-#ifdef HAVE_SETITIMER
- fgTimerInit( 1.0 / DEFAULT_TIMER_HZ, fgUpdateTimeDepCalcs );
-#endif HAVE_SETITIMER
-
+ // #ifdef HAVE_SETITIMER
+ // fgTimerInit( 1.0 / DEFAULT_TIMER_HZ, fgUpdateTimeDepCalcs );
+ // #endif HAVE_SETITIMER
}
static const double alt_adjust_ft = 3.758099;
static void fgMainLoop( void ) {
FGState *f;
fgTIME *t;
- static int remainder = 0;
- int elapsed, multi_loop;
+ static long remainder = 0;
+ long elapsed, multi_loop;
// int i;
// double accum;
static time_t last_time = 0;
f->get_Altitude() * FEET_TO_METER,
scenery.cur_elev + alt_adjust_m - 3.0,
scenery.cur_elev + alt_adjust_m );
- fgFlightModelSetAltitude( current_options.get_flight_model(),
- cur_fdm_state,
- scenery.cur_elev + alt_adjust_m );
+ fgFDMForceAltitude( current_options.get_flight_model(),
+ scenery.cur_elev + alt_adjust_m );
FG_LOG( FG_ALL, FG_DEBUG,
"<*> resetting altitude to "
<< f->get_Altitude() * FEET_TO_METER << " meters" );
}
- f->set_Runway_altitude( scenery.cur_elev * METER_TO_FEET );
+ fgFDMSetGroundElevation( current_options.get_flight_model(),
+ scenery.cur_elev ); // meters
}
/* printf("Adjustment - ground = %.2f runway = %.2f alt = %.2f\n",
// update "time"
fgTimeUpdate(f, t);
- // Get elapsed time for this past frame
+ // Get elapsed time (in usec) for this past frame
elapsed = fgGetTimeInterval();
- FG_LOG( FG_ALL, FG_BULK,
- "Time interval is = " << elapsed
+ FG_LOG( FG_ALL, FG_DEBUG,
+ "Elapsed time interval is = " << elapsed
<< ", previous remainder is = " << remainder );
// Calculate frame rate average
if ( (t->cur_time != last_time) && (last_time > 0) ) {
general.set_frame_rate( frames );
+ FG_LOG( FG_ALL, FG_DEBUG,
+ "--> Frame rate is = " << general.get_frame_rate() );
frames = 0;
}
last_time = t->cur_time;
// Run flight model
if ( ! use_signals ) {
// Calculate model iterations needed for next frame
- FG_LOG( FG_ALL, FG_DEBUG,
- "--> Frame rate is = " << general.get_frame_rate() );
elapsed += remainder;
- multi_loop = (int)(((float)elapsed * 0.001) * DEFAULT_MODEL_HZ);
- remainder = elapsed - ((multi_loop*1000) / DEFAULT_MODEL_HZ);
- FG_LOG( FG_ALL, FG_BULK,
+ multi_loop = (int)(((double)elapsed * 0.000001) * DEFAULT_MODEL_HZ);
+ remainder = elapsed - ((multi_loop*1000000) / DEFAULT_MODEL_HZ);
+ FG_LOG( FG_ALL, FG_DEBUG,
"Model iterations needed = " << multi_loop
<< ", new remainder = " << remainder );
// flight model
if ( multi_loop > 0 ) {
- fgUpdateTimeDepCalcs(multi_loop);
+ fgUpdateTimeDepCalcs(multi_loop, remainder);
} else {
FG_LOG( FG_ALL, FG_INFO, "Elapsed time is zero ... we're zinging" );
}
// $Log$
+// Revision 1.82 1999/01/20 13:42:24 curt
+// Tweaked FDM interface.
+// Testing check sum support for NMEA serial output.
+//
+// Revision 1.81 1999/01/19 20:57:03 curt
+// MacOS portability changes contributed by "Robert Puyol" <puyol@abvent.fr>
+//
+// Revision 1.80 1999/01/09 13:37:40 curt
+// Convert fgTIMESTAMP to FGTimeStamp which holds usec instead of ms.
+//
+// Revision 1.79 1999/01/08 03:23:56 curt
+// Beginning work on compensating for sim time vs. real world time "jitter".
+//
// Revision 1.78 1999/01/07 20:25:08 curt
// Updated struct fgGENERAL to class FGGeneral.
//