parent
d4d9b9ef0d
commit
5e84fda144
3 changed files with 60 additions and 35 deletions
|
@ -1137,16 +1137,23 @@ void Airport::BuildBtg(const std::string& root, const string_list& elev_src )
|
||||||
throw sg_exception("error writing file. :-(");
|
throw sg_exception("error writing file. :-(");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string indexFileName = objpath + "/" + b.gen_base_path() + "/" + b.gen_index_str() + ".ind";
|
||||||
|
if (cleanIndexFiles.find(indexFileName) == cleanIndexFiles.end())
|
||||||
|
{
|
||||||
|
truncate_index_file(indexFileName);
|
||||||
|
cleanIndexFiles.insert(indexFileName);
|
||||||
|
}
|
||||||
|
|
||||||
// write out airport object reference
|
// write out airport object reference
|
||||||
write_index( objpath, b, name );
|
write_index_object( objpath, b, name );
|
||||||
|
|
||||||
#if 0 // TODO : along with taxiway signs
|
#if 0 // TODO : along with taxiway signs
|
||||||
// write out tower references
|
// write out tower references
|
||||||
for ( i = 0; i < (int)tower_nodes.size(); ++i )
|
for ( i = 0; i < (int)tower_nodes.size(); ++i )
|
||||||
{
|
{
|
||||||
write_index_shared( objpath, b, tower_nodes[i],
|
write_index_object_shared( objpath, b, tower_nodes[i],
|
||||||
"Models/Airport/tower.xml",
|
"Models/Airport/tower.xml",
|
||||||
0.0 );
|
0.0 );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1161,13 +1168,13 @@ void Airport::BuildBtg(const std::string& root, const string_list& elev_src )
|
||||||
|
|
||||||
if ( windsocks[i]->IsLit() )
|
if ( windsocks[i]->IsLit() )
|
||||||
{
|
{
|
||||||
write_index_shared( objpath, b, ref_geod,
|
write_index_object_shared( objpath, b, ref_geod,
|
||||||
"Models/Airport/windsock_lit.xml", 0.0 );
|
"Models/Airport/windsock_lit.xml", 0.0 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
write_index_shared( objpath, b, ref_geod,
|
write_index_object_shared( objpath, b, ref_geod,
|
||||||
"Models/Airport/windsock.xml", 0.0 );
|
"Models/Airport/windsock.xml", 0.0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1177,9 +1184,9 @@ void Airport::BuildBtg(const std::string& root, const string_list& elev_src )
|
||||||
ref_geod = beacons[i]->GetLoc();
|
ref_geod = beacons[i]->GetLoc();
|
||||||
ref_geod.setElevationM( apt_surf.calc_elevation( ref_geod, 0.0 ) );
|
ref_geod.setElevationM( apt_surf.calc_elevation( ref_geod, 0.0 ) );
|
||||||
|
|
||||||
write_index_shared( objpath, b, ref_geod,
|
write_index_object_shared( objpath, b, ref_geod,
|
||||||
"Models/Airport/beacon.xml",
|
"Models/Airport/beacon.xml",
|
||||||
0.0 );
|
0.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// write out taxiway signs references
|
// write out taxiway signs references
|
||||||
|
@ -1187,10 +1194,10 @@ void Airport::BuildBtg(const std::string& root, const string_list& elev_src )
|
||||||
{
|
{
|
||||||
ref_geod = signs[i]->GetLoc();
|
ref_geod = signs[i]->GetLoc();
|
||||||
ref_geod.setElevationM( apt_surf.calc_elevation( ref_geod, 0.0 ) );
|
ref_geod.setElevationM( apt_surf.calc_elevation( ref_geod, 0.0 ) );
|
||||||
write_object_sign( objpath, b, ref_geod,
|
write_index_object_sign( objpath, b, ref_geod,
|
||||||
signs[i]->GetDefinition(),
|
signs[i]->GetDefinition(),
|
||||||
signs[i]->GetHeading(),
|
signs[i]->GetHeading(),
|
||||||
signs[i]->GetSize() );
|
signs[i]->GetSize() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// write out water buoys
|
// write out water buoys
|
||||||
|
@ -1202,9 +1209,9 @@ void Airport::BuildBtg(const std::string& root, const string_list& elev_src )
|
||||||
{
|
{
|
||||||
ref_geod = buoys.GetNode(j);
|
ref_geod = buoys.GetNode(j);
|
||||||
ref_geod.setElevationM( apt_surf.calc_elevation( ref_geod, 0.0 ) );
|
ref_geod.setElevationM( apt_surf.calc_elevation( ref_geod, 0.0 ) );
|
||||||
write_index_shared( objpath, b, ref_geod,
|
write_index_object_shared( objpath, b, ref_geod,
|
||||||
"Models/Airport/water_rw_buoy.xml",
|
"Models/Airport/water_rw_buoy.xml",
|
||||||
0.0 );
|
0.0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,19 +24,20 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <fstream>
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#include <simgear/debug/logstream.hxx>
|
#include <simgear/debug/logstream.hxx>
|
||||||
#include <simgear/bucket/newbucket.hxx>
|
#include <simgear/bucket/newbucket.hxx>
|
||||||
#include <simgear/misc/sg_path.hxx>
|
#include <simgear/misc/sg_path.hxx>
|
||||||
|
|
||||||
#include "output.hxx"
|
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
// update index file (list of objects to be included in final scenery build)
|
// update index file (list of objects to be included in final scenery build)
|
||||||
void write_index( const string& base, const SGBucket& b, const string& name )
|
void write_index_object( const string& base, const SGBucket& b, const string& name )
|
||||||
{
|
{
|
||||||
string dir = base + "/" + b.gen_base_path();
|
string dir = base + "/" + b.gen_base_path();
|
||||||
SGPath sgp( dir );
|
SGPath sgp( dir );
|
||||||
|
@ -57,9 +58,8 @@ void write_index( const string& base, const SGBucket& b, const string& name )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// update index file (list of shared objects to be included in final
|
// update index file (list of shared objects to be included in final scenery build)
|
||||||
// scenery build)
|
void write_index_object_shared( const string &base, const SGBucket &b,
|
||||||
void write_index_shared( const string &base, const SGBucket &b,
|
|
||||||
const SGGeod &p, const string& name,
|
const SGGeod &p, const string& name,
|
||||||
const double &heading )
|
const double &heading )
|
||||||
{
|
{
|
||||||
|
@ -82,7 +82,9 @@ void write_index_shared( const string &base, const SGBucket &b,
|
||||||
fclose( fp );
|
fclose( fp );
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_object_sign( const string &base, const SGBucket &b,
|
|
||||||
|
// update index file (list of shared objects to be included in final scenery build)
|
||||||
|
void write_index_object_sign( const string &base, const SGBucket &b,
|
||||||
const SGGeod &p, const string& sign,
|
const SGGeod &p, const string& sign,
|
||||||
const double &heading, const int &size)
|
const double &heading, const int &size)
|
||||||
{
|
{
|
||||||
|
@ -104,3 +106,17 @@ void write_object_sign( const string &base, const SGBucket &b,
|
||||||
p.getLongitudeDeg(), p.getLatitudeDeg(), p.getElevationM(), heading, size );
|
p.getLongitudeDeg(), p.getLatitudeDeg(), p.getElevationM(), heading, size );
|
||||||
fclose( fp );
|
fclose( fp );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// purge the existing index file when it already exists
|
||||||
|
void truncate_index_file( const std::string& fileName )
|
||||||
|
{
|
||||||
|
if (static_cast<bool>(std::ifstream(fileName)))
|
||||||
|
{
|
||||||
|
SG_LOG( SG_GENERAL, SG_DEBUG, "Truncating file " << fileName );
|
||||||
|
|
||||||
|
std::ofstream fsIndex;
|
||||||
|
fsIndex.open(fileName, std::ofstream::out | std::ofstream::trunc);
|
||||||
|
fsIndex.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -27,21 +27,23 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
// update index file (list of objects to be included in final scenery build)
|
// update index file (list of objects to be included in final scenery build)
|
||||||
void write_index( const std::string& base, const SGBucket& b, const std::string& name );
|
void write_index_object( const std::string& base, const SGBucket& b, const std::string& name );
|
||||||
|
|
||||||
// update index file (list of shared objects to be included in final
|
// update index file (list of shared objects to be included in final scenery build)
|
||||||
// scenery build)
|
void write_index_object_shared( const std::string &base, const SGBucket &b,
|
||||||
void write_index_shared( const std::string &base, const SGBucket &b,
|
|
||||||
const SGGeod &p, const std::string& name,
|
const SGGeod &p, const std::string& name,
|
||||||
const double &heading );
|
const double &heading );
|
||||||
|
|
||||||
// update index file (list of shared objects to be included in final
|
// update index file (list of shared objects to be included in final scenery build)
|
||||||
// scenery build)
|
void write_index_object_sign( const std::string &base, const SGBucket &b,
|
||||||
void write_object_sign( const std::string &base, const SGBucket &b,
|
|
||||||
const SGGeod &p, const std::string& sign,
|
const SGGeod &p, const std::string& sign,
|
||||||
const double &heading, const int &size );
|
const double &heading, const int &size );
|
||||||
|
|
||||||
|
// purge the existing index file when it already exists
|
||||||
|
void truncate_index_file( const std::string& fileName );
|
||||||
|
|
||||||
|
// record index files that have been cleaned
|
||||||
|
std::set<std::string> cleanIndexFiles;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue