#include <iomanip>
#include <osg/ArgumentParser>
+#include <osg/Image>
#include <simgear/props/props.hxx>
#include <simgear/props/props_io.hxx>
#include <simgear/scene/model/BVHPageNodeOSG.hxx>
#include <simgear/scene/model/ModelRegistry.hxx>
#include <simgear/scene/util/SGReaderWriterOptions.hxx>
+#include <simgear/scene/util/OptionsReadFileCallback.hxx>
#include <simgear/scene/tgdb/userdata.hxx>
namespace sg = simgear;
sg::BVHPager& _pager;
};
+// Short circuit reading image files.
+class ReadFileCallback : public sg::OptionsReadFileCallback {
+public:
+ virtual ~ReadFileCallback()
+ { }
+
+ virtual osgDB::ReaderWriter::ReadResult readImage(const std::string& name, const osgDB::Options*)
+ { return new osg::Image; }
+};
+
static bool
intersect(sg::BVHNode& node, sg::BVHPager& pager,
const SGVec3d& start, SGVec3d& end, double offset)
<< "Probably FG_ROOT is not properly set.");
}
- /// dont need that here
- props->getNode("sim/rendering/random-objects", true)->setBoolValue(false);
- props->getNode("sim/rendering/random-vegetation", true)->setBoolValue(false);
-
/// now set up the simgears required model stuff
simgear::ResourceManager::instance()->addBasePath(fg_root, simgear::ResourceManager::PRIORITY_DEFAULT);
options->getDatabasePathList());
options->setMaterialLib(ml);
options->setPropertyNode(props);
+ options->setReadFileCallback(new ReadFileCallback);
options->setPluginStringData("SimGear::FG_ROOT", fg_root);
// we do not need the builtin boundingvolumes
options->setPluginStringData("SimGear::BOUNDINGVOLUMES", "OFF");
+ // And we only want terrain, no objects on top.
+ options->setPluginStringData("SimGear::FG_ONLY_TERRAIN", "ON");
+ props->getNode("sim/rendering/random-objects", true)->setBoolValue(false);
+ props->getNode("sim/rendering/random-vegetation", true)->setBoolValue(false);
// Here, all arguments are processed
arguments.reportRemainingOptionsAsUnrecognized();