diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 883cf7fce..efe9ddea6 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -128,6 +128,8 @@ public: }; +NIFLoader::LoaderMap NIFLoader::sLoaders; + void NIFLoader::warn(const std::string &msg) { std::cerr << "NIFLoader: Warn:" << msg << "\n"; @@ -331,8 +333,8 @@ Ogre::MeshPtr NIFLoader::load(const std::string &name, const std::string &group) Ogre::MeshPtr themesh = meshMgr.getByName(name, group); if(themesh.isNull()) { - static NIFLoader loader; - themesh = meshMgr.createManual(name, group, &loader); + NIFLoader *loader = &sLoaders[name]; + themesh = meshMgr.createManual(name, group, loader); } return themesh; } diff --git a/components/nifogre/ogre_nif_loader.hpp b/components/nifogre/ogre_nif_loader.hpp index bc1ef304c..985c64e0d 100644 --- a/components/nifogre/ogre_nif_loader.hpp +++ b/components/nifogre/ogre_nif_loader.hpp @@ -41,7 +41,7 @@ #include #include -#include +#include // For warning messages #include using namespace boost::algorithm; @@ -90,11 +90,11 @@ public: const std::string &group="General"); private: - NIFLoader() {} - NIFLoader(NIFLoader& n) {} - void warn(const std::string &msg); void fail(const std::string &msg); + + typedef std::map LoaderMap; + static LoaderMap sLoaders; }; }