diff --git a/OgreMain/include/OgreControllerManager.h b/OgreMain/include/OgreControllerManager.h index 0aaa4d7cb07..cf5a4581517 100644 --- a/OgreMain/include/OgreControllerManager.h +++ b/OgreMain/include/OgreControllerManager.h @@ -56,7 +56,7 @@ namespace Ogre { class _OgreExport ControllerManager : public Singleton, public ControllerAlloc { private: - typedef std::set ControllerList; + typedef std::vector ControllerList; ControllerList mControllers; /// Global predefined controller diff --git a/OgreMain/src/OgreControllerManager.cpp b/OgreMain/src/OgreControllerManager.cpp index 16016b76342..66ad391e893 100644 --- a/OgreMain/src/OgreControllerManager.cpp +++ b/OgreMain/src/OgreControllerManager.cpp @@ -61,7 +61,7 @@ namespace Ogre { { ControllerFloat* c = OGRE_NEW ControllerFloat(src, dest, func); - mControllers.insert(c); + mControllers.push_back(c); return c; } //----------------------------------------------------------------------- @@ -206,10 +206,11 @@ namespace Ogre { //----------------------------------------------------------------------- void ControllerManager::destroyController(ControllerFloat* controller) { - ControllerList::iterator i = mControllers.find(controller); + ControllerList::iterator i = std::find(mControllers.begin(), mControllers.end(), controller); if (i != mControllers.end()) { - mControllers.erase(i); + std::swap(*i, mControllers.back()); + mControllers.pop_back(); OGRE_DELETE controller; } }