1
0
Fork 0

Tweaks so that Jon's FDM stuff get's initialized better.

This commit is contained in:
curt 1999-07-31 04:58:26 +00:00
parent 0bb22cd0a7
commit 439779ee36
4 changed files with 43 additions and 6 deletions

View file

@ -314,7 +314,9 @@ bool fgInitSubsystems( void ) {
// and should really be read in from one or more files.
// Initial Velocity
f->set_Velocities_Local( 0.0, 0.0, 0.0 );
f->set_Velocities_Local( current_options.get_uBody(),
current_options.get_vBody(),
current_options.get_wBody());
// Initial Orientation
f->set_Euler_Angles( current_options.get_roll() * DEG_TO_RAD,
@ -508,7 +510,9 @@ void fgReInitSubsystems( void )
// and should really be read in from one or more files.
// Initial Velocity
f->set_Velocities_Local( 0.0, 0.0, 0.0 );
f->set_Velocities_Local( current_options.get_uBody(),
current_options.get_vBody(),
current_options.get_wBody());
// Initial Orientation
f->set_Euler_Angles( current_options.get_roll() * DEG_TO_RAD,

View file

@ -407,6 +407,10 @@ static void fgRenderFrame( void ) {
sgMat4 sgVIEW;
while ( current_view.follow.size() > 400 ) {
current_view.follow.pop_front();
}
if ( current_view.view_mode == FGView::FG_VIEW_FIRST_PERSON ) {
// select current view matrix
sgCopyMat4( sgVIEW, current_view.sgVIEW );
@ -417,9 +421,6 @@ static void fgRenderFrame( void ) {
// select view matrix from front of view matrix queue
FGMat4Wrapper tmp = current_view.follow.front();
sgCopyMat4( sgVIEW, tmp.m );
while ( current_view.follow.size() > 40 ) {
current_view.follow.pop_front();
}
// enable TuX and set up his position and orientation
penguin_sel->select(1);
@ -1129,7 +1130,8 @@ int main( int argc, char **argv ) {
penguin_sel = new ssgSelector;
penguin_pos = new ssgTransform;
ssgEntity *tux_obj = ssgLoadAC( "glider.ac" );
// ssgEntity *tux_obj = ssgLoadAC( "glider.ac" );
ssgEntity *tux_obj = ssgLoadAC( "Tower1x.ac" );
penguin_pos->addKid( tux_obj );
penguin_sel->addKid( penguin_pos );
ssgFlatten( tux_obj );

View file

@ -138,6 +138,9 @@ fgOPTIONS::fgOPTIONS() :
// if it is lower than the terrain
altitude(-9999.0),
// Initialize current options velocities to 0.0
uBody(0.0), vBody(0.0), wBody(0.0),
// Initial Orientation
heading(270.0), // heading (yaw) angle in degress (Psi)
roll(0.0), // roll angle in degrees (Phi)
@ -592,6 +595,24 @@ int fgOPTIONS::parse_option( const string& arg ) {
} else {
altitude = atof( arg.substr(11) );
}
} else if ( arg.find( "--uBody=" ) != string::npos ) {
if ( units == FG_UNITS_FEET ) {
uBody = atof( arg.substr(8) ) * FEET_TO_METER;
} else {
uBody = atof( arg.substr(8) );
}
} else if ( arg.find( "--vBody=" ) != string::npos ) {
if ( units == FG_UNITS_FEET ) {
vBody = atof( arg.substr(8) ) * FEET_TO_METER;
} else {
vBody = atof( arg.substr(8) );
}
} else if ( arg.find( "--wBody=" ) != string::npos ) {
if ( units == FG_UNITS_FEET ) {
wBody = atof( arg.substr(8) ) * FEET_TO_METER;
} else {
wBody = atof( arg.substr(8) );
}
} else if ( arg.find( "--heading=" ) != string::npos ) {
heading = atof( arg.substr(10) );
} else if ( arg.find( "--roll=" ) != string::npos ) {
@ -775,6 +796,10 @@ void fgOPTIONS::usage ( void ) {
printf("\t--heading=degrees: heading (yaw) angle in degress (Psi)\n");
printf("\t--roll=degrees: roll angle in degrees (Phi)\n");
printf("\t--pitch=degrees: pitch angle in degrees (Theta)\n");
printf("\t--uBody=feet per second: velocity along the body X axis\n");
printf("\t--vBody=feet per second: velocity along the body Y axis\n");
printf("\t--wBody=feet per second: velocity along the body Z axis\n");
printf("\t\t(unless --units-meters specified\n");
printf("\n");
printf("Rendering Options:\n");

View file

@ -100,6 +100,9 @@ private:
double heading; // heading (yaw) angle in degress (Psi)
double roll; // roll angle in degrees (Phi)
double pitch; // pitch angle in degrees (Theta)
double uBody; // Body axis X velocity (U)
double vBody; // Body axis Y velocity (V)
double wBody; // Body axis Z velocity (W)
// Miscellaneous
bool game_mode; // Game mode enabled/disabled
@ -181,6 +184,9 @@ public:
inline double get_heading() const { return heading; }
inline double get_roll() const { return roll; }
inline double get_pitch() const { return pitch; }
inline double get_uBody() const {return uBody;}
inline double get_vBody() const {return vBody;}
inline double get_wBody() const {return wBody;}
inline bool get_game_mode() const { return game_mode; }
inline bool get_splash_screen() const { return splash_screen; }
inline bool get_intro_music() const { return intro_music; }