diff --git a/simgear/scene/util/SGReaderWriterOptions.hxx b/simgear/scene/util/SGReaderWriterOptions.hxx index 082cfb82..ef7a5864 100644 --- a/simgear/scene/util/SGReaderWriterOptions.hxx +++ b/simgear/scene/util/SGReaderWriterOptions.hxx @@ -21,6 +21,7 @@ #define SGREADERWRITEROPTIONS_HXX 1 #include +#include #include #include @@ -92,6 +93,17 @@ public: void setInstantiateEffects(bool instantiateEffects) { _instantiateEffects = instantiateEffects; } + static SGReaderWriterOptions* copyOrCreate(const osgDB::Options* options) + { + if (!options) + options = osgDB::Registry::instance()->getOptions(); + if (!options) + return new SGReaderWriterOptions; + if (!dynamic_cast(options)) + return new SGReaderWriterOptions(*options); + return new SGReaderWriterOptions(*static_cast(options)); + } + protected: virtual ~SGReaderWriterOptions() {}