Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members

ILevelManager.hpp

Go to the documentation of this file.
00001 // Copyright (c) 2007-2008 Tomer Nosrati
00002 // This file is part of the "NUSoftware Game Engine".
00003 // For conditions of distribution and use, see copyright notice in nge.hpp
00004 
00005 #pragma once
00006 #ifndef __I_LEVEL_MANAGER_H__
00007 #define __I_LEVEL_MANAGER_H__
00008 
00009 #include "IAudioDevice.hpp"
00010 #include "ISoundListenerSceneNode.hpp"
00011 #include "NGEReceiver.hpp"
00012 #include "ISceneNodeControllerAnimator.hpp"
00013 #include "ELevelNodeTypes.hpp"
00014 #include "Irrlicht/irrlicht.h"
00015 
00016 using namespace nge::audio;
00017 using namespace nge::core;
00018 using namespace nge::game;
00019 using namespace irr::core;
00020 using namespace irr::gui;
00021 using namespace irr::scene;
00022 using namespace irr::video;
00023 
00024 namespace nge
00025 {
00026 
00027         namespace game
00028         {
00029                 class IPlayer;
00030         }
00031 
00032         namespace engine
00033         {
00034 
00035                 enum E_LEVEL_NODE_PROCESS_PASS
00036                 {
00038                         ELNPP_PRE_PROCESS,
00039 
00041                         ELNPP_POST_PROCESS,
00042 
00044                         ELNPP_GAME_ENTITY,
00045 
00047                         ELNPP_WORLD,
00048 
00050                         ELNPP_ZONE_GROUP,
00051 
00053                         ELNPP_ZONE,
00054 
00056                         ELNPP_REGION,
00057 
00059                         ELNPP_COUNT
00060                 };
00061 
00062                 class ILevelNode;
00063                 class IRegionLevelNode;
00064                 class IWorldLevelNode;
00065                 class IZoneGroupLevelNode;
00066                 class IZoneLevelNode;
00067 
00069                 class ILevelManager : public virtual IReferenceCounted
00070                 {
00071                 public:
00073                         virtual ~ILevelManager() {}
00074 
00076 
00079                         virtual ILevelNode* addEmptyLevelNode(ILevelNode* parent=0, s32 id=-1) = 0;
00080 
00081                         virtual IRegionLevelNode* addRegionLevelNode(IRegionLevelNode* parent=0, s32 id=-1) = 0;
00082 
00084 
00086                         virtual IWorldLevelNode* addWorldLevelNode(s32 id=-1) = 0;
00087 
00089 
00091                         virtual IZoneGroupLevelNode* addZoneGroupLevelNode(IWorldLevelNode* parent, s32 id=-1) = 0;
00092 
00094 
00096                         virtual IZoneLevelNode* addZoneLevelNode(IZoneGroupLevelNode* parent, s32 id=-1) = 0;
00097 
00099 
00104                         virtual ILevelNode* getRootLevelNode() = 0;
00105 
00107 
00113                         virtual ILevelNode* getLevelNodeFromId(s32 id, ILevelNode* start=0) = 0;
00114 
00116                         template <class T>
00117                         T* getLevelNodeFromId(s32 id, ILevelNode* start=0)
00118                         {
00119                                 return dynamic_cast<T*>(getLevelNodeFromId(id, start));
00120                         }
00121 
00123 
00129                         virtual ILevelNode* getLevelNodeFromName(const c8* name, ILevelNode* start) = 0;
00130 
00132                         template <class T>
00133                         T* getLevelNodeFromName(const c8* name, ILevelNode* start=0)
00134                         {
00135                                 return dynamic_cast<T*>(getLevelNodeFromName(name, start));
00136                         }
00137 
00139 
00145                         virtual ILevelNode* getLevelNodeFromType(E_LEVEL_NODE_TYPE type, ILevelNode* start) = 0;
00146 
00148                         template <class T>
00149                         T* getLevelNodeFromType(E_LEVEL_NODE_TYPE type, ILevelNode* start=0)
00150                         {
00151                                 return dynamic_cast<T*>(getLevelNodeFromType(type, start));
00152                         }
00153 
00155 
00160                         virtual void getLevelNodesFromType(E_LEVEL_NODE_TYPE type, array<ILevelNode*>& outNodes, ILevelNode* start=0) = 0;
00161 
00163 
00169                         virtual void registerNodeForProcessing(ILevelNode* node, E_LEVEL_NODE_PROCESS_PASS pass) = 0;
00170 
00172 
00173                         virtual void processAll() = 0;
00174 
00176 
00181                         virtual void addToDeletionQueue(ILevelNode* node) = 0;
00182 
00184 
00186                         virtual void postEventFromUser(const NGEReceiver* event) = 0;
00187 
00189 
00190                         virtual void clear() = 0;
00191 
00193 
00199                         virtual E_LEVEL_NODE_PROCESS_PASS getLevelNodeProcessPass() const = 0;
00200 
00202                         virtual IGUIFont* getGUIFont() const = 0;
00203 
00204                         virtual ISceneManager* getSceneManager() const = 0;
00205 
00206                         virtual IAudioDevice* getAudioDevice() const = 0;
00207 
00208                         virtual ICursorControl* getCursorControl() const = 0;
00209 
00210                         virtual ITimer* getTimer() const = 0;
00211 
00212                         virtual ISoundListenerSceneNode* getSoundListener() const = 0;
00213 
00214                         virtual IPlayer* getPlayer() const = 0;
00215 
00216                         virtual void setPlayer(IPlayer* Player) = 0;
00217 
00218                         virtual void gatherLevelNodeStates(ILevelNode* node = 0) = 0;
00219 
00220                         virtual void restoreLevelNodeStates(ILevelNode* node = 0) = 0;
00221 
00222                         virtual ISceneNodeControllerAnimator* createSceneNodeControllerAnimator(
00223                                 ISceneManager* smgr, ICursorControl* cur, 
00224                                 f32 rotateSpeed = 150.f, f32 MoveSpeed = 100, SOpKeyMap* keyMapArray = 0, s32 keyMapSize = 0, 
00225                                 bool verticalMovement = true) = 0;
00226 
00227                         virtual bool primitiveCollisionCheckBasedOnPosition(ISceneNode* n1, ISceneNode* n2, s32 CollisionDistance) = 0;
00228 
00229                         virtual IMetaTriangleSelector* getGlobalMetaSelector() const = 0;
00230                 };
00231 
00232         } // namespace engine
00233 } // namespace nge
00234 
00235 #endif // __I_LEVEL_MANAGER_H__

The NUSoftware Game Engine
The NUSoftware Game Engine Documentation © 2007-2008 by Tomer Nosrati. Generated on Sat Apr 26 16:52:34 2008 by Doxygen (1.5.5)