# 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
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 17 15:39:12 2006