- #include "ApplicationManager.h"
- #include "IrrlichtEngineManager.h"
-
- static const char TERRAIN_HEIGHTMAP[] = "../../media/heightmap.bmp";
- static const char TERRAIN_MATERIAL[] = "../../media/terrain.bmp";
- static const char TERRAIN_DETAIL[] = "../../media/detail.jpg";
- static const float TERRAIN_DETAIL_SCALE = 20.0f;
- static const vector3df TERRAIN_SCALE = vector3df(40.0f, 4.0f, 40.0f);
- static const float CAMERA_FAR_DISTANCE = 50000.0f;
- static const vector3df CAMERA_START_POS = vector3df(0, 10, 0);
-
- ApplicationManager::ApplicationManager()
- {
- InitialiseVariables();
- }
-
- ApplicationManager::~ApplicationManager()
- {
-
- }
-
- void ApplicationManager::InitialiseVariables()
- {
- terrain = NULL;
- }
-
- void ApplicationManager::Startup()
- {
- ICameraSceneNode* camera = ENGINEMANAGER.GetSceneManager()->addCameraSceneNodeFPS();
- camera->setFarValue(CAMERA_FAR_DISTANCE);
- camera->setPosition(CAMERA_START_POS);
-
- ENGINEMANAGER.GetIrrlichtDevice()->getCursorControl()->setVisible(false);
-
- terrain = ENGINEMANAGER.GetSceneManager()->addTerrainSceneNode(TERRAIN_HEIGHTMAP);
-
- terrain->setScale(TERRAIN_SCALE);
- terrain->setMaterialFlag(EMF_LIGHTING, false);
-
- terrain->setMaterialTexture(
- 0,
- ENGINEMANAGER.GetVideoDriver()->getTexture(TERRAIN_MATERIAL));
- terrain->setMaterialTexture(
- 1,
- ENGINEMANAGER.GetVideoDriver()->getTexture(TERRAIN_DETAIL));
-
- terrain->setMaterialType(EMT_DETAIL_MAP);
- terrain->scaleTexture(1.0f, TERRAIN_DETAIL_SCALE);
-
- ITriangleSelector* selector = ENGINEMANAGER.GetSceneManager()->
- createTerrainTriangleSelector(terrain, 0);
- terrain->setTriangleSelector(selector);
-
- scene::ISceneNodeAnimator* anim = ENGINEMANAGER.GetSceneManager()->
- createCollisionResponseAnimator(
- selector,
- camera);
- camera->addAnimator(anim);
-
- anim->drop();
- selector->drop();
- }
-
- void ApplicationManager::Shutdown()
- {
- if (terrain != NULL) terrain->remove();
-
- InitialiseVariables();
- }