1
0
Fork 0

This falls under the oops category or perhaps I was uncharacteristically

confused by the alphabet soup.

- Forgot to impliment the SALS(F) version of SALS approach configuration.
- Was generating SSALS when the system was requesting SALSF.
This commit is contained in:
curt 2002-11-04 20:04:24 +00:00
parent 00f4c61073
commit 5f502fc76b

View file

@ -909,7 +909,7 @@ static FGSuperPoly gen_reil( const FGRunway& rwy_info, float alt_m,
} }
// generate ALSF-I/II and SALS approach lighting schemes // generate ALSF-I/II and SALS/SALSF approach lighting schemes
static superpoly_list gen_alsf( const FGRunway& rwy_info, static superpoly_list gen_alsf( const FGRunway& rwy_info,
float alt_m, const string &kind, bool recip ) float alt_m, const string &kind, bool recip )
{ {
@ -1004,7 +1004,7 @@ static superpoly_list gen_alsf( const FGRunway& rwy_info,
ref = Point3D( lon, lat, 0.0 ); ref = Point3D( lon, lat, 0.0 );
count = 30; count = 30;
} else { } else {
// SALS // SALS/SALSF
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg, geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg,
-300 * SG_FEET_TO_METER, &lat, &lon, &r ); -300 * SG_FEET_TO_METER, &lat, &lon, &r );
ref = Point3D( lon, lat, 0.0 ); ref = Point3D( lon, lat, 0.0 );
@ -1051,7 +1051,7 @@ static superpoly_list gen_alsf( const FGRunway& rwy_info,
ref = ref_save; ref = ref_save;
if ( kind == "1" || kind == "O" ) { if ( kind == "1" || kind == "O" || kind == "P" ) {
// Terminating bar // Terminating bar
// offset 200' downwind // offset 200' downwind
@ -1153,7 +1153,7 @@ static superpoly_list gen_alsf( const FGRunway& rwy_info,
} }
} }
if ( kind == "1" || kind == "O" ) { if ( kind == "1" || kind == "O" || kind == "P" ) {
// Generate pre-threshold bar // Generate pre-threshold bar
ref = ref_save; ref = ref_save;
@ -1243,7 +1243,7 @@ static superpoly_list gen_alsf( const FGRunway& rwy_info,
ref = ref_save; ref = ref_save;
if ( kind == "O" ) { if ( kind == "O" || kind == "P" ) {
// generate SALS secondary threshold // generate SALS secondary threshold
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg, geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg,
@ -1341,6 +1341,23 @@ static superpoly_list gen_alsf( const FGRunway& rwy_info,
s_lights.push_back( ref ); s_lights.push_back( ref );
s_normals.push_back( normal ); s_normals.push_back( normal );
// offset 100' downwind
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg,
-100 * SG_FEET_TO_METER, &lat, &lon, &r );
ref = Point3D( lon, lat, 0.0 );
}
} else if ( kind == "P" ) {
// generate 3 sequenced lights aligned with last 3 light bars
// start 1300' downwind
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg,
-1300 * SG_FEET_TO_METER, &lat, &lon, &r );
ref = Point3D( lon, lat, 0.0 );
for ( i = 0; i < 3; ++i ) {
s_lights.push_back( ref );
s_normals.push_back( normal );
// offset 100' downwind // offset 100' downwind
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg, geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), length_hdg,
-100 * SG_FEET_TO_METER, &lat, &lon, &r ); -100 * SG_FEET_TO_METER, &lat, &lon, &r );
@ -2248,15 +2265,15 @@ void gen_runway_lights( const FGRunway& rwy_info, float alt_m,
} }
} }
// SSALS // SALSF
if ( rwy_info.end1_flags.substr(3,1) == "P" ) { if ( rwy_info.end1_flags.substr(3,1) == "P" ) {
superpoly_list s = gen_ssalx( rwy_info, alt_m, "P", false ); superpoly_list s = gen_alsf( rwy_info, alt_m, "P", false );
for ( i = 0; i < s.size(); ++i ) { for ( i = 0; i < s.size(); ++i ) {
lights.push_back( s[i] ); lights.push_back( s[i] );
} }
} }
if ( rwy_info.end2_flags.substr(3,1) == "P" ) { if ( rwy_info.end2_flags.substr(3,1) == "P" ) {
superpoly_list s = gen_ssalx( rwy_info, alt_m, "P", true ); superpoly_list s = gen_alsf( rwy_info, alt_m, "P", true );
for ( i = 0; i < s.size(); ++i ) { for ( i = 0; i < s.size(); ++i ) {
lights.push_back( s[i] ); lights.push_back( s[i] );
} }
@ -2290,7 +2307,21 @@ void gen_runway_lights( const FGRunway& rwy_info, float alt_m,
} }
} }
// Many aproach lighting systems define the threshold lighting // SSALS
if ( rwy_info.end1_flags.substr(3,1) == "S" ) {
superpoly_list s = gen_ssalx( rwy_info, alt_m, "S", false );
for ( i = 0; i < s.size(); ++i ) {
lights.push_back( s[i] );
}
}
if ( rwy_info.end2_flags.substr(3,1) == "S" ) {
superpoly_list s = gen_ssalx( rwy_info, alt_m, "S", true );
for ( i = 0; i < s.size(); ++i ) {
lights.push_back( s[i] );
}
}
// Many aproach lighting systems define the threshold lighting
// needed, but for those that don't (i.e. REIL, ODALS, or Edge // needed, but for those that don't (i.e. REIL, ODALS, or Edge
// lights defined but no approach lights.) // lights defined but no approach lights.)
// Make threshold lighting // Make threshold lighting