using namespace simgear;
+SGReaderWriterBTG::SGReaderWriterBTG()
+{
+ supportsExtension("btg", "SimGear btg database format");
+}
+
+SGReaderWriterBTG::~SGReaderWriterBTG()
+{
+}
+
const char* SGReaderWriterBTG::className() const
{
return "BTG Database reader";
}
-bool SGReaderWriterBTG::acceptsExtension(const std::string& extension) const
+bool
+SGReaderWriterBTG::acceptsExtension(const std::string& extension) const
{
- return (osgDB::equalCaseInsensitive(extension, "gz")
- || osgDB::equalCaseInsensitive(extension, "btg"));
+ std::string lowercase_ext = osgDB::convertToLowerCase(extension);
+ if (lowercase_ext == "gz")
+ return true;
+ return osgDB::ReaderWriter::acceptsExtension(extension);
}
osgDB::ReaderWriter::ReadResult
SGReaderWriterBTG::readNode(const std::string& fileName,
const osgDB::ReaderWriter::Options* options) const
{
- std::string ext = osgDB::getLowerCaseFileExtension(fileName);
- if(!acceptsExtension(ext))
- return ReadResult::FILE_NOT_HANDLED;
- if (osgDB::equalCaseInsensitive(ext, "gz")) {
- std::string btgFileName = osgDB::getNameLessExtension(fileName);
- if (!acceptsExtension(
- osgDB::getLowerCaseFileExtension(btgFileName))) {
- return ReadResult::FILE_NOT_HANDLED;
- }
- }
SGMaterialLib* matlib = 0;
bool calcLights = false;
bool useRandomObjects = false;
+ bool useRandomVegetation = false;
const SGReaderWriterBTGOptions* btgOptions
= dynamic_cast<const SGReaderWriterBTGOptions*>(options);
if (btgOptions) {
matlib = btgOptions->getMatlib();
calcLights = btgOptions->getCalcLights();
useRandomObjects = btgOptions->getUseRandomObjects();
+ useRandomVegetation = btgOptions->getUseRandomVegetation();
}
osg::Node* result = SGLoadBTG(fileName, matlib, calcLights,
- useRandomObjects);
+ useRandomObjects,
+ useRandomVegetation);
if (result)
return result;
else
return ReadResult::FILE_NOT_HANDLED;
}
+
+typedef ModelRegistryCallback<DefaultProcessPolicy, NoCachePolicy,
+ NoOptimizePolicy,
+ NoSubstitutePolicy, BuildGroupBVHPolicy>
+BTGCallback;
+
namespace
{
-ModelRegistryCallbackProxy<OSGFileCallback> g_btgCallbackProxy("btg");
+ModelRegistryCallbackProxy<BTGCallback> g_btgCallbackProxy("btg");
}