Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

OgreSceneManagerEnumerator.h

Go to the documentation of this file.
00001 /*
00002 -----------------------------------------------------------------------------
00003 This source file is part of OGRE
00004     (Object-oriented Graphics Rendering Engine)
00005 For the latest info, see http://www.ogre3d.org/
00006 
00007 Copyright (c) 2000-2005 The OGRE Team
00008 Also see acknowledgements in Readme.html
00009 
00010 This program is free software; you can redistribute it and/or modify it under
00011 the terms of the GNU Lesser General Public License as published by the Free Software
00012 Foundation; either version 2 of the License, or (at your option) any later
00013 version.
00014 
00015 This program is distributed in the hope that it will be useful, but WITHOUT
00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public License along with
00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
00022 http://www.gnu.org/copyleft/lesser.txt.
00023 -----------------------------------------------------------------------------
00024 */
00025 #ifndef __SceneManagerEnumerator_H__
00026 #define __SceneManagerEnumerator_H__
00027 
00028 #include "OgrePrerequisites.h"
00029 
00030 #include "OgreSceneManager.h"
00031 #include "OgreSingleton.h"
00032 #include "OgreIteratorWrappers.h"
00033 
00034 namespace Ogre {
00035     
00037     class _OgreExport DefaultSceneManagerFactory : public SceneManagerFactory
00038     {
00039     protected:
00040         void initMetaData(void) const;
00041     public:
00042         DefaultSceneManagerFactory() {}
00043         ~DefaultSceneManagerFactory() {}
00045         static const String FACTORY_TYPE_NAME;
00046         SceneManager* createInstance(const String& instanceName);
00047         void destroyInstance(SceneManager* instance);
00048     };
00050     class _OgreExport DefaultSceneManager : public SceneManager
00051     {
00052     public:
00053         DefaultSceneManager(const String& name);
00054         ~DefaultSceneManager();
00055         const String& getTypeName(void) const;
00056     };
00057 
00078     class _OgreExport SceneManagerEnumerator : public Singleton<SceneManagerEnumerator>
00079     {
00080     public:
00082         typedef std::map<String, SceneManager*> Instances;
00084         typedef std::vector<const SceneManagerMetaData*> MetaDataList;
00085     private:
00087         typedef std::list<SceneManagerFactory*> Factories;
00088         Factories mFactories;
00089         Instances mInstances;
00091         MetaDataList mMetaDataList;
00093         DefaultSceneManagerFactory mDefaultFactory;
00095         unsigned long mInstanceCreateCount;
00097         RenderSystem* mCurrentRenderSystem;
00098 
00099 
00100     public:
00101         SceneManagerEnumerator();
00102         ~SceneManagerEnumerator();
00103 
00108         void addFactory(SceneManagerFactory* fact);
00109 
00112         void removeFactory(SceneManagerFactory* fact);
00113 
00123         const SceneManagerMetaData* getMetaData(const String& typeName) const;
00124 
00125         typedef ConstVectorIterator<MetaDataList> MetaDataIterator;
00129         MetaDataIterator getMetaDataIterator(void) const;
00130 
00142         SceneManager* createSceneManager(const String& typeName, 
00143             const String& instanceName = StringUtil::BLANK);
00144 
00157         SceneManager* createSceneManager(SceneTypeMask typeMask, 
00158             const String& instanceName = StringUtil::BLANK);
00159 
00161         void destroySceneManager(SceneManager* sm);
00162 
00167         SceneManager* getSceneManager(const String& instanceName) const;
00168 
00169         typedef MapIterator<Instances> SceneManagerIterator;
00171         SceneManagerIterator getSceneManagerIterator(void);
00172 
00175         void setRenderSystem(RenderSystem* rs);
00176 
00178         void shutdownAll(void);
00194         static SceneManagerEnumerator& getSingleton(void);
00210         static SceneManagerEnumerator* getSingletonPtr(void);
00211 
00212     };
00213 
00214 
00215 }
00216 
00217 #endif

Copyright © 2000-2005 by The OGRE Team
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Mar 12 14:37:49 2006