Neo  0.5.0
Developer Documentation
Level.h
Go to the documentation of this file.
1 //========================================================================
2 // Copyright (c) 2003-2011 Anael Seghezzi <www.maratis3d.com>
3 // Copyright (c) 2015 Yannick Pflanzer <www.neo-engine.de>
4 //
5 // This software is provided 'as-is', without any express or implied
6 // warranty. In no event will the authors be held liable for any damages
7 // arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it
11 // freely, subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented; you must not
14 // claim that you wrote the original software. If you use this software
15 // in a product, an acknowledgment in the product documentation would
16 // be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such, and must not
19 // be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source
22 // distribution.
23 //
24 //========================================================================
25 
26 
27 #ifndef __LEVEL_H
28 #define __LEVEL_H
29 
30 
31 // level
32 namespace Neo
33 {
42 class NEO_ENGINE_EXPORT Level
43 {
44 private:
45 
46  // FX manager
47  FXManager m_FXManager;
48 
49  // data managers
50  DataManager m_fontManager;
51  DataManager m_textureManager;
52  DataManager m_shaderManager;
53  DataManager m_soundManager;
54  DataManager m_meshManager;
55  DataManager m_armatureAnimManager;
56  DataManager m_texturesAnimManager;
57  DataManager m_materialsAnimManager;
58 
59  // data queues
60  vector <DataRef *> m_updateQueue;
61  vector <DataRef *> m_clearQueue;
62 
63  // scenes
64  unsigned int m_currentSceneId;
65  unsigned int m_requestedSceneId;
66  vector <Scene *> m_scenes;
67 
68 public:
69 
70  // constructors / destructors
71  Level(void);
72  ~Level(void);
73 
74 private:
75 
76  friend class NeoEngine;
77 
78  void incrDataRefScore(DataRef * ref);
79  void decrDataRefScore(DataRef * ref);
80  void changeCurrentSceneIfRequested();
81 
82 public:
83 
84  // clear
85  void clear(void);
86  void clearScenes(void);
87 
88  // FX manager
89  inline FXManager * getFXManager(void){ return &m_FXManager; }
90  FXRef * createFX(ShaderRef * vertexShaderRef, ShaderRef * pixelShaderRef);
91 
92  // data managers
93  inline DataManager * getFontManager(void){ return &m_fontManager; }
94  inline DataManager * getTextureManager(void){ return &m_textureManager; }
95  inline DataManager * getShaderManager(void){ return &m_shaderManager; }
96  inline DataManager * getSoundManager(void){ return &m_soundManager; }
97  inline DataManager * getMeshManager(void){ return &m_meshManager; }
98  inline DataManager * getArmatureAnimManager(void){ return &m_armatureAnimManager; }
99  inline DataManager * getTexturesAnimManager(void){ return &m_texturesAnimManager; }
100  inline DataManager * getMaterialsAnimManager(void){ return &m_materialsAnimManager; }
101 
114  FontRef * loadFont(const char * filename, unsigned int fontsize = 128);
115 
127  MeshRef * loadMesh(const char * filename, const bool preload = true);
128  ArmatureAnimRef * loadArmatureAnim(const char * filename, const bool preload = true);
129  TexturesAnimRef * loadTexturesAnim(const char * filename, const bool preload = true);
130  MaterialsAnimRef * loadMaterialsAnim(const char * filename, const bool preload = true);
131 
144  TextureRef * loadTexture(const char * filename, const bool mipmap = true, const bool preload = true);
145 
157  SoundRef * loadSound(const char * filename, const bool preload = true);
158  ShaderRef * loadShader(const char * filename, M_SHADER_TYPES type);
159 
160  // queue data updates
166  void sendToUpdateQueue(DataRef * ref);
167 
173  void sendToClearQueue(DataRef * ref);
174 
182  void updateQueueDatas(void);
183 
191  void clearQueueDatas(void);
192 
193  // scenes
202  void changeCurrentScene(unsigned int id); // does not change scene straight away, instead it requests to do it
203 
209  void deleteScene(unsigned int id);
210 
220  bool getSceneIndexByName(const char * name, unsigned int * index);
221 
226  Scene * addNewScene(void);
227 
233  Scene * getSceneByName(const char * name);
234 
239  Scene * getCurrentScene(void);
240 
245  void setCurrentSceneId(unsigned int id);
247  {
248  int oldId = m_currentSceneId;
249  if(!getSceneIndexByName(s->getName(), &m_currentSceneId))
250  m_currentSceneId = oldId;
251  }
252 
257  inline unsigned int getCurrentSceneId(void){ return m_currentSceneId; }
258 
263  inline unsigned int getScenesNumber(void){ return m_scenes.size(); }
264 
269  inline Scene * getSceneByIndex(unsigned int id){ return m_scenes[id]; }
270 };
271 }
272 #endif
Definition: NeoEngine.h:151
Definition: DataManager.h:72
The Scene class represents a scene in a Maratis level.
Definition: Scene.h:48
Definition: SoundRef.h:32
DataManager * getArmatureAnimManager(void)
Definition: Level.h:98
DataManager * getMeshManager(void)
Definition: Level.h:97
Definition: MeshRef.h:32
Definition: FXManager.h:64
DataManager * getMaterialsAnimManager(void)
Definition: Level.h:100
FXManager * getFXManager(void)
Definition: Level.h:89
Definition: FontRef.h:32
DataManager * getTextureManager(void)
Definition: Level.h:94
Definition: MaterialsAnimRef.h:32
Definition: ArmatureAnimRef.h:32
Definition: DataManager.h:32
DataManager * getTexturesAnimManager(void)
Definition: Level.h:99
unsigned int getCurrentSceneId(void)
Returns the current scene ID.
Definition: Level.h:257
Definition: FXManager.h:32
DataManager * getSoundManager(void)
Definition: Level.h:96
Scene * getSceneByIndex(unsigned int id)
Searches the scene with the given ID.
Definition: Level.h:269
void setCurrentScene(Scene *s)
Definition: Level.h:246
M_SHADER_TYPES
Definition: ShaderRef.h:33
unsigned int getScenesNumber(void)
Returns the number of scenes.
Definition: Level.h:263
The Level class contains all scenes and assets that are loaded.
Definition: Level.h:42
Definition: ShaderRef.h:41
DataManager * getFontManager(void)
Definition: Level.h:93
Definition: TextureRef.h:32
const char * getName(void)
Returns the name of the scene.
Definition: Scene.h:118
Definition: Color.h:29
DataManager * getShaderManager(void)
Definition: Level.h:95
Definition: TexturesAnimRef.h:32