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

IRegionLevelNode.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_REGION_LEVEL_NODE_H__
00007 #define __I_REGION_LEVEL_NODE_H__
00008 
00009 #include "ILevelNode.hpp"
00010 
00011 #include "GridSceneNode.hpp"
00012 #include "NUSoftwareIntroSceneNode.hpp"
00013 #include "ISoundEmitterSceneNode.hpp"
00014 
00015 namespace nge
00016 {
00017         namespace engine
00018         {
00019 
00020                 class IRegionLevelNode : public ILevelNode
00021                 {
00022                 public:
00024                         IRegionLevelNode(IRegionLevelNode* parent, ILevelManager* lmgr, s32 id)
00025                                 : ILevelNode(parent, lmgr, id), m_pRootSceneNode(0)
00026                         {
00027                                 m_pRootSceneNode = lmgr->getSceneManager()->addEmptySceneNode();
00028                         }
00029 
00031                         virtual ~IRegionLevelNode() 
00032                         {
00033                                 if(m_pRootSceneNode && Parent)
00034                                 {
00035                                         m_pRootSceneNode->remove();
00036                                         m_pRootSceneNode = 0;
00037                                 }
00038 
00039                                 m_aSoundEmitters.clear();
00040                         }
00041 
00042                         virtual E_LEVEL_NODE_TYPE getType() const
00043                         {
00044                                 return ELNT_REGION;
00045                         }
00046 
00047                         virtual void OnRegisterLevelNode()
00048                         {
00049                                 if(m_pRootSceneNode)
00050                                         m_pRootSceneNode->setVisible(!isIdle());
00051 
00052                                 ILevelNode::OnRegisterLevelNode();
00053                         }
00054 
00055                         virtual void drawDebugData()
00056                         {
00057                                 if(DebugDataVisible & EDL_ID)
00058                                 {
00059                                         stringw DebugDataID = "";
00060                                         DebugDataID = "ID: ";
00061                                         DebugDataID+=getID();
00062                                         LevelManager->getGUIFont()->draw(
00063                                                 DebugDataID.c_str(), rect<s32>(450,0,100,100), SColor(255,0,0,0));
00064                                 }
00065 
00066                                 if(DebugDataVisible & EDL_NAME)
00067                                 {
00068                                         stringw DebugDataName = "";
00069                                         DebugDataName = "Name: ";
00070                                         DebugDataName+=getName();
00071                                         LevelManager->getGUIFont()->draw(
00072                                                 DebugDataName.c_str(), rect<s32>(450,23,100,100), SColor(255,0,0,0));
00073                                 }
00074 
00075                                 if(DebugDataVisible & EDL_IDLE)
00076                                 {
00077                                         stringw DebugDataIdle = "";
00078                                         DebugDataIdle = "IsIdle: ";
00079                                         (isIdle()) ? DebugDataIdle+="True" : DebugDataIdle+="False";
00080                                         LevelManager->getGUIFont()->draw(
00081                                                 DebugDataIdle.c_str(), rect<s32>(450,46,100,100), SColor(255,0,0,0));
00082                                 }
00083 
00084                                 ILevelNode::drawDebugData();
00085                         }
00086 
00088                         virtual ISceneNode* SceneNode()
00089                         {
00090                                 return m_pRootSceneNode;
00091                         }
00092 
00093                         virtual void setIdle(bool isIdle)
00094                         {
00095                                 ILevelNode::setIdle(isIdle);
00096 
00097                                 list<ILevelNode*>::Iterator it = getChildren().begin();
00098                                 for(; it != Children.end(); ++it)
00099                                 {
00100                                         (*it)->setIdle(isIdle);
00101                                 }
00102                         }
00103 
00105 
00107                         virtual GridSceneNode* addGridSceneNode(ISceneNode* parent = 0,
00108                                 ISceneManager* smgr = 0, s32 id = -1, s32 spacing = 8, s32 size = 1024, 
00109                                 SColor gridcolor = SColor(255,128,128,128), s32 accentlineoffset = 8, 
00110                                 SColor accentgridcolor = SColor(255,192,192,192), bool axislinestate = false)
00111                         {
00112                                 if(!parent) parent = SceneNode();
00113                                 if(!smgr) smgr = LevelManager->getSceneManager();
00114 
00115                                 GridSceneNode* grid = new GridSceneNode(parent, smgr, id, spacing, 
00116                                         size, gridcolor, accentlineoffset, accentgridcolor, axislinestate);
00117 
00118                                 grid->drop();
00119                                 return grid;
00120                         }
00121 
00122                         virtual NUSoftwareIntroSceneNode* addNUSoftwareIntroSceneNode(
00123                                 ISceneNode* parent = 0, ISceneManager* smgr = 0, s32 id = -1, 
00124                                 vector3df pos = vector3df(0.f,0.f,0.f), 
00125                                 vector3df rot = vector3df(-90.f,0.f,0.f), 
00126                                 vector3df scale = vector3df(60.f,60.f,60.f))
00127                         {
00128                                 if(!parent) parent = SceneNode();
00129                                 if(!smgr) smgr = LevelManager->getSceneManager();
00130 
00131                                 NUSoftwareIntroSceneNode* node = new NUSoftwareIntroSceneNode(LevelManager->getSceneManager()->getGUIEnvironment(),parent, smgr, id, pos, rot, scale);
00132 
00133                                 node->drop();
00134                                 return node;
00135                         }
00136 
00137                         virtual ISoundEmitterSceneNode* addSoundEmitterSceneNode(
00138                                 ISceneNode* parent = 0, 
00139                                 ISceneManager* smgr = 0, 
00140                                 s32 id = -1)
00141                         {
00142                                 if(!parent) parent = SceneNode();
00143                                 if(!smgr) smgr = LevelManager->getSceneManager();
00144 
00145                                 ISoundEmitterSceneNode* emitter = new ISoundEmitterSceneNode(parent, smgr, id);
00146                                 m_aSoundEmitters.push_back(emitter);
00147 
00148                                 emitter->drop();
00149                                 return emitter;
00150                         }
00151 
00152                 protected:
00153                         ISceneNode* m_pRootSceneNode;
00154 
00155                         array<ISoundEmitterSceneNode*> m_aSoundEmitters;
00156                 };
00157 
00158         } // namespace engine
00159 } // namespace nge
00160 
00161 #endif // __I_REGION_LEVEL_NODE_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)