📄 app.cpp
字号:
#include ".\app.h"
CTerrain* g_pTerrain=NULL;
CTree* g_pTree=NULL;
CApp::CApp(void)
{
m_bIsShowExit=false;
}
CApp::~CApp(void)
{
}
void CApp::createScene()
{
//构造对象
load();
//设置环境光
mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));
//CEGUI
setCEGUI();
//天空盒子
mSceneMgr->setSkyDome(true , "Examples/CloudySky" , 10 , 8 , 10000 , true);
//摄像机结点
SceneNode* snCamera=mSceneMgr->getRootSceneNode()->createChildSceneNode("playerCamera");
snCamera->attachObject(mCamera);
snCamera->translate(100,100,-100);
}
void CApp::createFrameListener(void)
{
m_pListener= new CListener(mSceneMgr ,mWindow, mCamera , mGUIRenderer);
m_pListener->showDebugOverlay(true);
mRoot->addFrameListener(m_pListener);
}
void CApp::chooseSceneManager(void)
{
mSceneMgr=mRoot->createSceneManager("TerrainSceneManager");
}
void CApp::load()
{
g_pTerrain=new CTerrain(mSceneMgr);
g_pTree=new CTree(mSceneMgr, g_pTerrain);
}
void CApp::setCEGUI(void)
{
mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr);
mGUISystem = new CEGUI::System(mGUIRenderer);
CEGUI::Logger::getSingleton().setLoggingLevel(CEGUI::Informative);
CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)"TaharezLookSkin.scheme");
mGUISystem->setDefaultMouseCursor((CEGUI::utf8*)"TaharezLook", (CEGUI::utf8*)"MouseArrow");
mGUISystem->setDefaultFont((CEGUI::utf8*)"SimHei-12");
CEGUI::Window* sheet = CEGUI::WindowManager::getSingleton().loadWindowLayout((CEGUI::utf8*)"mapedtior.layout");
mGUISystem->setGUISheet(sheet);
CEGUI::Combobox* objectComboBox = (CEGUI::Combobox*)CEGUI::WindowManager::getSingleton().getWindow("OgreGuiDemo/TabCtrl/Page2/ObjectTypeList");
CEGUI::ListboxTextItem* item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Grass", 0);
objectComboBox->addItem(item);
item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Tree", 1);
objectComboBox->addItem(item);
item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Flower", 2);
objectComboBox->addItem(item);
item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Rock", 3);
objectComboBox->addItem(item);
item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"Object", 4);
objectComboBox->addItem(item);
item = new CEGUI::ListboxTextItem((CEGUI::utf8*)"House", 5);
objectComboBox->addItem(item);
setupButtonEvent();
if(m_bIsShowExit==false)
{
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->hide();
}
}
void CApp::setupButtonEvent()
{
CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();
wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/Object1Button")
->subscribeEvent(CEGUI::PushButton::EventClicked,
CEGUI::Event::Subscriber(&CApp::buttonEditor, this));
wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/File1Button")
->subscribeEvent(CEGUI::PushButton::EventClicked,
CEGUI::Event::Subscriber(&CApp::buttonMenu, this));
wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")
->subscribeEvent(
CEGUI::Combobox::EventListSelectionAccepted,
CEGUI::Event::Subscriber(&CApp::buttonSelect, this));
wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/NEWButton")
->subscribeEvent(
CEGUI::PushButton::EventClicked,
CEGUI::Event::Subscriber(&CApp::buttonSave, this));
wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/LoadButton")
->subscribeEvent(
CEGUI::PushButton::EventClicked,
CEGUI::Event::Subscriber(&CApp::buttonLoad, this));
wmgr.getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/QiectButton")
->subscribeEvent(
CEGUI::PushButton::EventClicked,
CEGUI::Event::Subscriber(&CApp::buttonExit2, this));
}
bool CApp::buttonStart(const CEGUI::EventArgs& e)
{
return true;
}
bool CApp::buttonExit(const CEGUI::EventArgs& e)
{
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/YESButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/NOButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/STARTButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/HIGHSCOREButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/OPTONSButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/CREDITSButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/ExitButton")->hide();
return true;
}
bool CApp::buttonExit2(const CEGUI::EventArgs& e)
{
m_pListener->exit();
return true;
}
bool CApp::buttonYesExit(const CEGUI::EventArgs& e)
{
m_pListener->m_bShutDown=true;
return true;
}
bool CApp::buttonNOExit(const CEGUI::EventArgs& e)
{
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/YESButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/NOButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/STARTButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/HIGHSCOREButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/OPTONSButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/CREDITSButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page1/ExitButton")->show();
return true;
}
bool CApp::buttonEditor(const CEGUI::EventArgs& e)
{
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/NEWButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/LoadButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/QiectButton")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->setAlwaysOnTop(true);
return true;
}
bool CApp::buttonMenu(const CEGUI::EventArgs& e)
{
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")->hide();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/NEWButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/LoadButton")->show();
CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"OgreGuiDemo1/TabCtrl/Page1/QiectButton")->show();
return true;
}
bool CApp::buttonSave(const CEGUI::EventArgs& e)
{
m_pListener->saveMap();
return true;
}
bool CApp::buttonLoad(const CEGUI::EventArgs& e)
{
m_pListener->loadMap();
return true;
}
bool CApp::buttonSelect(const CEGUI::EventArgs& e)
{
/*CEGUI::Window* window = 0;*/
const CEGUI::WindowEventArgs& windowEventArgs = static_cast<const CEGUI::WindowEventArgs&>(e);
CEGUI::ListboxItem* item = static_cast<CEGUI::Combobox*>(windowEventArgs.window)->getSelectedItem();
//选择序号判断
switch(item->getID())
{
case 0: //草
m_pListener->selectGrass();
break;
case 1: //树
m_pListener->selectTree();
break;
case 2: //花
m_pListener->selectFlower();
break;
case 3: //石头
m_pListener->selectRock();
break;
case 4: //房子
m_pListener->selectHouse();
break;
case 5: //摄像机
m_pListener->selectCamera();
break;
};
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -