Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 26th, 2012  |  syntax: None  |  size: 2.76 KB  |  hits: 26  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. diff --git a/simgear/scene/tgdb/ReaderWriterSTG.cxx b/simgear/scene/tgdb/ReaderWriterSTG.cxx
  2. index 0f80079..db77e95 100644
  3. --- a/simgear/scene/tgdb/ReaderWriterSTG.cxx
  4. +++ b/simgear/scene/tgdb/ReaderWriterSTG.cxx
  5. @@ -92,6 +92,17 @@ static bool hasOptionalValue(sg_gzifstream &in)
  6.      }
  7.  }
  8.  
  9. +static double getGroundElevation(const double &lon, const double &lat, double &elev)
  10. +{
  11. +
  12. +    SG_LOG( SG_TERRAIN, SG_ALERT,
  13. +          "Compute Ground Elevation with lon=" << lon << " lat=" << lat << " offset=" << elev );
  14. +
  15. +    elev = 0.0; // Just for test, we need to implement the calcul
  16. +
  17. +    return elev;
  18. +}
  19. +
  20.  ReaderWriterSTG::ReaderWriterSTG()
  21.  {
  22.      supportsExtension("stg", "SimGear stg database format");
  23. @@ -273,7 +284,7 @@ ReaderWriterSTG::readStgFile(const std::string& absoluteFileName,
  24.              in >> lon >> lat >> elev >> hdg;
  25.              
  26.              // Always OK to load
  27. -            if ( token == "OBJECT_STATIC" ) {
  28. +            if ( token == "OBJECT_STATIC" || token == "OBJECT_STATIC_AGL" ) {
  29.                  if (!onlyTerrain) {
  30.                      osg::ref_ptr<SGReaderWriterOptions> opt;
  31.                      opt = new SGReaderWriterOptions(*staticOptions);
  32. @@ -299,7 +310,7 @@ ReaderWriterSTG::readStgFile(const std::string& absoluteFileName,
  33.                      }
  34.                  }
  35.                  
  36. -            } else if ( token == "OBJECT_SHARED" ) {
  37. +            } else if ( token == "OBJECT_SHARED" || token == "OBJECT_SHARED_AGL" ) {
  38.                  if (!onlyTerrain) {
  39.                      osg::ref_ptr<SGReaderWriterOptions> opt;
  40.                      opt = new SGReaderWriterOptions(*sharedOptions);
  41. @@ -320,18 +331,25 @@ ReaderWriterSTG::readStgFile(const std::string& absoluteFileName,
  42.                      }
  43.                  }
  44.                  
  45. -            } else if ( token == "OBJECT_SIGN" ) {
  46. +            } else if ( token == "OBJECT_SIGN" || token == "OBJECT_SIGN_AGL" ) {
  47.                  int size(-1);
  48.  
  49.                  if ( hasOptionalValue(in) ){
  50.                      in >> size;
  51.                  }
  52. -                if (!onlyTerrain)
  53. +                if (!onlyTerrain) {
  54. +                    if ( token == "OBJECT_SIGN_AGL" )
  55. +                        elev = getGroundElevation(lon, lat, elev);
  56. +
  57.                      signBuilder.addSign(SGGeod::fromDegM(lon, lat, elev), hdg, name, size);
  58. +                }
  59.              } else {
  60.                  SG_LOG( SG_TERRAIN, SG_ALERT, absoluteFileName
  61.                          << ": Unknown token '" << token << "'" );
  62.              }
  63. +
  64. +            if ( token == "OBJECT_STATIC_AGL" || token == "OBJECT_SHARED_AGL" )
  65. +                 elev = getGroundElevation(lon, lat, elev);
  66.              
  67.              if (node.valid()) {
  68.                  osg::Matrix matrix;