source: GTP/trunk/Lib/Illum/IBRBillboardCloudTrees/OGRE/src/BBCManager.cpp @ 699

Revision 699, 4.8 KB checked in by igarcia, 18 years ago (diff)
Line 
1
2#include "BBCManager.h"
3
4namespace BBC {
5
6template <> Manager* CSingleton<Manager>::ms_Singleton = NULL;
7
8Manager* Manager::getSingletonPtr(void)
9{
10    return ms_Singleton;
11}
12
13Manager& Manager::getSingleton(void)
14
15    assert( ms_Singleton );  return ( *ms_Singleton ); 
16}
17
18Manager::Manager()
19{
20   // Change it when the texture generation will be included...
21   //mOgreRoot = new Ogre::Root();
22   if (Ogre::Root::getSingletonPtr() == NULL)
23   {
24                mOgreRoot = new Ogre::Root("", "ogre.cfg", "Ogre.log"); 
25                Ogre::LogManager::getSingleton().logMessage("OgreRoot created in LBBC");
26   }
27   else
28   {   
29           mOgreRoot = Ogre::Root::getSingletonPtr();
30           Ogre::LogManager::getSingleton().logMessage("OgreRoot assigned in LBCC");
31   }
32   
33   mDefaultHardwareBufferManager = new Ogre::DefaultHardwareBufferManager();
34   mMeshSerializer = new Ogre::MeshSerializer();
35   mXMLMeshSerializer = new Ogre::XMLMeshSerializer();
36   mMath = new Ogre::Math();
37   loadResources();   
38}
39
40void Manager::loadResources()
41{
42        // Load resource paths from config file
43        Ogre::ConfigFile cf;
44    cf.load("resources.cfg");
45    // Go through all sections & settings in the file
46        Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
47
48        Ogre::String secName, typeName, archName;
49    while (seci.hasMoreElements())
50    {
51        secName = seci.peekNextKey();
52                Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
53                Ogre::ConfigFile::SettingsMultiMap::iterator i;
54        for (i = settings->begin(); i != settings->end(); ++i)
55        {
56            typeName = i->first;
57            archName = i->second;
58                        Ogre::ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName);
59        }
60    }
61        Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
62}
63
64void Manager::initRenderWindow()
65{
66    // Change it when the texture generation will be included...
67        /*
68        // Render system.
69        Ogre::LogManager::getSingleton().logMessage("Creating window...");
70        //mOgreRoot->showConfigDialog();
71        // Set parameters of render system (window size, etc.)
72        mOgreRoot->restoreConfig();
73       
74        mWnd = mOgreRoot->initialise(true);
75        mWnd->resize(512,512);
76
77        // Camera.
78        mScene = mOgreRoot->getSceneManager(Ogre::ST_GENERIC);
79        mRSys = mOgreRoot->getRenderSystem();
80        Ogre::LogManager::getSingleton().logMessage("Creating default camera...");
81        mCam = mScene->createCamera("SubMain Camera");
82        mCam->setPosition(-1, 22, 72);
83        mCam->lookAt(0, 22, 0);
84        mCam->setNearClipDistance(0.5);
85        // Viewports.
86        Ogre::LogManager::getSingleton().logMessage("Creating default viewort...");
87        mView = mWnd->addViewport(mCam);
88        mView->setBackgroundColour(Ogre::ColourValue(1.0f,1.0f,1.0f,0));
89        // All set up, activate.
90        Ogre::LogManager::getSingleton().logMessage("Setting up...");
91        //mWnd->setActive(true);
92        mWnd->setActive(false);
93        mFrameListener = new ExampleFrameListener(mWnd,mCam,false,false);
94        mFrameListener->showDebugOverlay(false);
95        mOgreRoot->addFrameListener(mFrameListener);
96        */
97}
98
99Manager::~Manager()
100{
101}
102
103void Manager::shutdown()
104{
105        mOgreRoot->shutdown();
106        delete mOgreRoot;
107        delete mMeshSerializer;
108        delete mXMLMeshSerializer;
109        delete mMath;
110        // Not necessary if we have a RenderWindow...
111        delete mDefaultHardwareBufferManager;   
112        // Change it when the texture generation will be included...
113        //mWnd->destroy();
114        // Only necessary if we have a RenderWindow...
115        //delete mFrameListener;
116        //delete mScene;
117        //delete mRSys;
118        //delete mCam;
119        //delete mView;
120        //delete mWnd;
121       
122       
123}
124
125void Manager::initialize()
126{
127}
128
129Ogre::Mesh* Manager::loadMesh(Ogre::String name)
130{       
131        Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().load(name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); 
132        return meshPtr.getPointer();
133}
134
135Ogre::Mesh* Manager::loadXMLMesh(Ogre::String name)
136{
137        Ogre::MeshPtr newMesh = Ogre::MeshManager::getSingleton().createManual(name.substr(0,((name.size()-1)-4)),Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
138
139        Ogre::VertexElementType colourElementType;
140        if (true)
141        {
142                // DirectX Colour Format
143                colourElementType = Ogre::VET_COLOUR_ARGB;
144        }
145        else
146        {
147                // OpenGL Colour Format
148                colourElementType = Ogre::VET_COLOUR_ABGR;
149        }
150
151    mXMLMeshSerializer->importMesh(name, colourElementType, newMesh.getPointer());
152        return newMesh.getPointer();
153}
154
155void Manager::saveMesh(Ogre::String name)
156{
157        Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().getByName(name);
158        mMeshSerializer->exportMesh(meshPtr.getPointer(),name);
159}
160
161void Manager::saveXMLMesh(Ogre::String name)
162{
163        Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().getByName(name);
164        mXMLMeshSerializer->exportMesh(meshPtr.getPointer(),name + ".xml");
165}
166
167Ogre::MeshSerializer* Manager::getMeshSerializer(void)
168{
169        return mMeshSerializer;
170}
171
172Ogre::XMLMeshSerializer* Manager::getXMLMeshSerializer(void)
173{
174        return mXMLMeshSerializer;
175}
176
177}
Note: See TracBrowser for help on using the repository browser.