1 | |
---|
2 | #include "BBCManager.h" |
---|
3 | |
---|
4 | namespace BBC { |
---|
5 | |
---|
6 | template <> Manager* CSingleton<Manager>::ms_Singleton = NULL; |
---|
7 | |
---|
8 | Manager* Manager::getSingletonPtr(void) |
---|
9 | { |
---|
10 | return ms_Singleton; |
---|
11 | } |
---|
12 | |
---|
13 | Manager& Manager::getSingleton(void) |
---|
14 | { |
---|
15 | assert( ms_Singleton ); return ( *ms_Singleton ); |
---|
16 | } |
---|
17 | |
---|
18 | Manager::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 | |
---|
40 | void 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 | |
---|
64 | void 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 | |
---|
99 | Manager::~Manager() |
---|
100 | { |
---|
101 | } |
---|
102 | |
---|
103 | void 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 | |
---|
125 | void Manager::initialize() |
---|
126 | { |
---|
127 | } |
---|
128 | |
---|
129 | Ogre::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 | |
---|
135 | Ogre::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 | |
---|
155 | void Manager::saveMesh(Ogre::String name) |
---|
156 | { |
---|
157 | Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().getByName(name); |
---|
158 | mMeshSerializer->exportMesh(meshPtr.getPointer(),name); |
---|
159 | } |
---|
160 | |
---|
161 | void Manager::saveXMLMesh(Ogre::String name) |
---|
162 | { |
---|
163 | Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().getByName(name); |
---|
164 | mXMLMeshSerializer->exportMesh(meshPtr.getPointer(),name + ".xml"); |
---|
165 | } |
---|
166 | |
---|
167 | Ogre::MeshSerializer* Manager::getMeshSerializer(void) |
---|
168 | { |
---|
169 | return mMeshSerializer; |
---|
170 | } |
---|
171 | |
---|
172 | Ogre::XMLMeshSerializer* Manager::getXMLMeshSerializer(void) |
---|
173 | { |
---|
174 | return mXMLMeshSerializer; |
---|
175 | } |
---|
176 | |
---|
177 | } |
---|