// each subsequent iteration through the EOM
int FGLaRCsim::init( double dt ) {
-#ifdef USE_NEW_ENGINE_CODE
- // Initialize our little engine that hopefully might
- eng.init(dt);
- // dcl - in passing dt to init rather than update I am assuming
- // that the LaRCsim dt is fixed at one value (yes it is 120hz CLO)
-
- // update the engines interface
- FGEngInterface e;
- add_engine( e );
-#endif
+ if ( current_options.get_aircraft() == "c172" ) {
+ // Initialize our little engine that hopefully might
+ eng.init(dt);
+ // dcl - in passing dt to init rather than update I am assuming
+ // that the LaRCsim dt is fixed at one value (yes it is 120hz CLO)
+
+ // update the engines interface
+ FGEngInterface e;
+ add_engine( e );
+ }
// cout << "FGLaRCsim::init()" << endl;
int FGLaRCsim::update( int multiloop ) {
// cout << "FGLaRCsim::update()" << endl;
-#ifdef USE_NEW_ENGINE_CODE
- // set control inputs
- eng.set_IAS( V_calibrated_kts );
- eng.set_Throttle_Lever_Pos( controls.get_throttle( 0 ) * 100.0 );
- eng.set_Propeller_Lever_Pos( 100 );
- if ( controls.get_mixture( 0 ) > 0.60 ) {
- eng.set_Mixture_Lever_Pos( controls.get_mixture( 0 ) * 100.0 );
- } else {
- eng.set_Mixture_Lever_Pos( 60.0 );
- }
-
- // update engine model
- eng.update();
-
- // copy engine state values onto "bus"
- FGEngInterface *e = get_engine( 0 );
- e->set_Throttle( controls.get_throttle( 0 ) * 100.0 );
- e->set_Mixture( 80 );
- e->set_Prop_Advance( 100 );
- e->set_RPM( eng.get_RPM() );
- e->set_Manifold_Pressure( eng.get_Manifold_Pressure() );
- e->set_MaxHP( eng.get_MaxHP() );
- e->set_Percentage_Power( eng.get_Percentage_Power() );
- e->set_EGT( eng.get_EGT() );
- e->set_prop_thrust( eng.get_prop_thrust_SI() );
+ if ( current_options.get_aircraft() == "c172" ) {
+ // set control inputs
+ eng.set_IAS( V_calibrated_kts );
+ eng.set_Throttle_Lever_Pos( controls.get_throttle( 0 ) * 100.0 );
+ eng.set_Propeller_Lever_Pos( 100 );
+ if ( controls.get_mixture( 0 ) > 0.60 ) {
+ eng.set_Mixture_Lever_Pos( controls.get_mixture( 0 ) * 100.0 );
+ } else {
+ eng.set_Mixture_Lever_Pos( 60.0 );
+ }
+
+ // update engine model
+ eng.update();
+
+ // copy engine state values onto "bus"
+ FGEngInterface *e = get_engine( 0 );
+ e->set_Throttle( controls.get_throttle( 0 ) * 100.0 );
+ e->set_Mixture( 80 );
+ e->set_Prop_Advance( 100 );
+ e->set_RPM( eng.get_RPM() );
+ e->set_Manifold_Pressure( eng.get_Manifold_Pressure() );
+ e->set_MaxHP( eng.get_MaxHP() );
+ e->set_Percentage_Power( eng.get_Percentage_Power() );
+ e->set_EGT( eng.get_EGT() );
+ e->set_prop_thrust( eng.get_prop_thrust_SI() );
#if 0
- cout << "Throttle = " << controls.get_throttle( 0 ) * 100.0;
- cout << " Mixture = " << controls.get_mixture( 0 ) * 100.0;
- cout << " RPM = " << eng.get_RPM();
- cout << " MP = " << eng.get_Manifold_Pressure();
- cout << " HP = " << ( eng.get_MaxHP() * eng.get_Percentage_Power()
+ cout << "Throttle = " << controls.get_throttle( 0 ) * 100.0;
+ cout << " Mixture = " << controls.get_mixture( 0 ) * 100.0;
+ cout << " RPM = " << eng.get_RPM();
+ cout << " MP = " << eng.get_Manifold_Pressure();
+ cout << " HP = " << ( eng.get_MaxHP() * eng.get_Percentage_Power()
/ 100.0 );
- cout << " EGT = " << eng.get_EGT();
- cout << " Thrust (N) " << eng.get_prop_thrust_SI(); // Thrust in Newtons
- cout << '\n';
+ cout << " EGT = " << eng.get_EGT();
+ cout << " Thrust (N) " << eng.get_prop_thrust_SI(); // Thrust in Newtons
+ cout << '\n';
#endif
- F_X_engine = eng.get_prop_thrust_SI() * 0.07;
-#endif // USE_NEW_ENGINE_CODE
+ F_X_engine = eng.get_prop_thrust_SI() * 0.07;
+ }
double save_alt = 0.0;
double time_step = (1.0 / current_options.get_model_hz()) * multiloop;
Long_trim = controls.get_elevator_trim();
Rudder_pedal = controls.get_rudder() / current_options.get_speed_up();
Flap_handle = 30.0 * controls.get_flaps();
-#ifdef USE_NEW_ENGINE_CODE
- Throttle_pct = -1.0; // tells engine model to use propellor thrust
-#else
+
+ if ( current_options.get_aircraft() == "c172" ) {
+ Use_External_Engine = 1;
+ } else {
+ Use_External_Engine = 0;
+ }
+
Throttle_pct = controls.get_throttle( 0 ) * 1.0;
-#endif
Brake_pct[0] = controls.get_brake( 1 );
Brake_pct[1] = controls.get_brake( 0 );
// $Id$
-#define USE_NEW_ENGINE_CODE
-#undef MICHAEL_JOHNSON_EXPERIMENTAL_ENGINE_AUDIO
-
-
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
# include <Weather/weather.hxx>
#endif
+#include "version.h"
+
#include "bfi.hxx"
#include "fg_init.hxx"
#include "fg_io.hxx"
{ 0.0f, 0.0f, 0.0f, 1.0f }
} ;
-// The following defines flight gear options. Because glutlib will also
+// The following defines flightgear options. Because glutlib will also
// want to parse its own options, those options must not be included here
// or they will get parsed by the main program option parser. Hence case
// is significant for any option added that might be in conflict with
#ifdef ENABLE_AUDIO_SUPPORT
if ( current_options.get_sound() && !audio_sched->not_working() ) {
-# if defined(MICHAEL_JOHNSON_EXPERIMENTAL_ENGINE_AUDIO)
-
- static double kts_to_fts = NM_TO_METER * METER_TO_FEET / 3600.0;
-
- // note: all these factors are relative to the sample. our
- // sample format should really contain a conversion factor so
- // that we can get prop speed right for arbitrary samples.
- // Note that for normal-size props, there is a point at which
- // the prop tips approach the speed of sound; that is a pretty
- // strong limit to how fast the prop can go.
-
- // multiplication factor is prime pitch control; add some log
- // component for verisimilitude
-
- double pitch = log((controls.get_throttle(0) * 14.0) + 1.0);
- //fprintf(stderr, "pitch1: %f ", pitch);
- // if (controls.get_throttle(0) > 0.0 ||
- // cur_fdm_state->get_V_calibrated_kts() > 40.0) {
-
- //fprintf(stderr, "rel_wind: %f ", cur_fdm_state->get_V_calibrated_kts());
- // only add relative wind and AoA if prop is moving
- // or we're really flying at idle throttle
- if (pitch < 5.4) { // this needs tuning
- // prop tips not breaking sound barrier
- pitch += log(cur_fdm_state->get_V_calibrated_kts() * kts_to_fts + 0.8)/2;
- } else {
- // prop tips breaking sound barrier
- pitch += log(cur_fdm_state->get_V_calibrated_kts() * kts_to_fts + 0.8)/10;
- }
- //fprintf(stderr, "pitch2: %f ", pitch);
- //fprintf(stderr, "AoA: %f ", FG_Gamma_vert_rad);
-
- // Angle of Attack next... -x^3(e^x) is my best guess Just
- // need to calculate some reasonable scaling factor and
- // then clamp it on the positive aoa (neg adj) side
- double aoa = cur_fdm_state->get_Gamma_vert_rad() * 2.2;
- double tmp = 3.0;
- double aoa_adj = pow(-aoa, tmp) * pow(M_E, aoa);
- if (aoa_adj < -0.8) aoa_adj = -0.8;
- pitch += aoa_adj;
- //fprintf(stderr, "pitch3: %f ", pitch);
-
- // don't run at absurdly slow rates -- not realistic
- // and sounds bad to boot. :-)
- if (pitch < 0.8) pitch = 0.8;
- // }
- // fprintf(stderr, "pitch4: %f\n", pitch);
-
- double volume = controls.get_throttle(0) * 0.1 + 0.3 +
- log(cur_fdm_state->get_V_calibrated_kts() * kts_to_fts + 1.0)/14.0;
- if ( volume > 1.0 ) { volume = 1.0; }
-
- // fprintf(stderr, "volume: %f\n", volume);
-
- pitch_envelope.setStep ( 0, 0.01, pitch );
- volume_envelope.setStep ( 0, 0.01, volume );
-
-# elif defined(USE_NEW_ENGINE_CODE)
-
- if ( current_options.get_flight_model() == FGInterface::FG_LARCSIM ) {
+ if ( current_options.get_aircraft() == "c172" ) {
// pitch corresponds to rpm
// volume corresponds to manifold pressure
- double rpm_factor = cur_fdm_state->get_engine(0)->get_RPM() /
- 2500.0;
+ double rpm_factor;
+ if ( cur_fdm_state->get_engine(0) != NULL ) {
+ rpm_factor = cur_fdm_state->get_engine(0)->get_RPM() / 2500.0;
+ } else {
+ rpm_factor = 1.0;
+ }
// cout << "rpm = " << cur_fdm_state->get_engine(0)->get_RPM()
// << endl;
if (pitch > 5.0) { pitch = 5.0; }
// cout << "pitch = " << pitch << endl;
- double mp_factor =
- cur_fdm_state->get_engine(0)->get_Manifold_Pressure() / 28;
+ double mp_factor;
+ if ( cur_fdm_state->get_engine(0) != NULL ) {
+ mp_factor =
+ cur_fdm_state->get_engine(0)->get_Manifold_Pressure() / 28;
+ } else {
+ mp_factor = 1.0;
+ }
// cout << "mp = "
// << cur_fdm_state->get_engine(0)->get_Manifold_Pressure()
// << endl;
pitch_envelope.setStep ( 0, 0.01, param );
volume_envelope.setStep ( 0, 0.01, param );
}
-# endif
+
audio_sched -> update();
}
#endif
} else if ( idle_state == 3 ) {
// This is the top level init routine which calls all the
// other subsystem initialization routines. If you are adding
- // a subsystem to flight gear, its initialization call should
+ // a subsystem to flightgear, its initialization call should
// located in this routine.
if( !fgInitSubsystems()) {
FG_LOG( FG_GENERAL, FG_ALERT,
// Initialize windows
if ( current_options.get_game_mode() == 0 ) {
// Open the regular window
- glutCreateWindow("Flight Gear");
+ glutCreateWindow("FlightGear");
#ifndef GLUT_WRONG_VERSION
} else {
// Open the cool new 'game mode' window
// set default log levels
fglog().setLogLevels( FG_ALL, FG_INFO );
- FG_LOG( FG_GENERAL, FG_INFO, "Flight Gear: Version " << VERSION << endl );
+ FG_LOG( FG_GENERAL, FG_INFO, "FlightGear: Version "
+ << FLIGHTGEAR_VERSION << endl );
// seed the random number generater
fg_srandom();