1. #include "ApplicationManager.h"
  2. #include "IrrlichtEngineManager.h"
  3.  
  4. static const char TERRAIN_HEIGHTMAP[] = "../../media/heightmap.bmp";
  5. static const char TERRAIN_MATERIAL[] = "../../media/terrain.bmp";
  6. static const char TERRAIN_DETAIL[] = "../../media/detail.jpg";
  7. static const float TERRAIN_DETAIL_SCALE = 20.0f;
  8. static const vector3df TERRAIN_SCALE = vector3df(40.0f, 4.0f, 40.0f);
  9. static const float CAMERA_FAR_DISTANCE = 50000.0f;
  10. static const vector3df CAMERA_START_POS = vector3df(0, 10, 0);
  11.  
  12. ApplicationManager::ApplicationManager()
  13. {
  14. InitialiseVariables();
  15. }
  16.  
  17. ApplicationManager::~ApplicationManager()
  18. {
  19.  
  20. }
  21.  
  22. void ApplicationManager::InitialiseVariables()
  23. {
  24. terrain = NULL;
  25. }
  26.  
  27. void ApplicationManager::Startup()
  28. {
  29. ICameraSceneNode* camera = ENGINEMANAGER.GetSceneManager()->addCameraSceneNodeFPS();
  30. camera->setFarValue(CAMERA_FAR_DISTANCE);
  31. camera->setPosition(CAMERA_START_POS);
  32.  
  33. ENGINEMANAGER.GetIrrlichtDevice()->getCursorControl()->setVisible(false);
  34.  
  35. terrain = ENGINEMANAGER.GetSceneManager()->addTerrainSceneNode(TERRAIN_HEIGHTMAP);
  36.  
  37. terrain->setScale(TERRAIN_SCALE);
  38. terrain->setMaterialFlag(EMF_LIGHTING, false);
  39.  
  40. terrain->setMaterialTexture(
  41. 0,
  42. ENGINEMANAGER.GetVideoDriver()->getTexture(TERRAIN_MATERIAL));
  43. terrain->setMaterialTexture(
  44. 1,
  45. ENGINEMANAGER.GetVideoDriver()->getTexture(TERRAIN_DETAIL));
  46.  
  47. terrain->setMaterialType(EMT_DETAIL_MAP);
  48. terrain->scaleTexture(1.0f, TERRAIN_DETAIL_SCALE);
  49.  
  50. ITriangleSelector* selector = ENGINEMANAGER.GetSceneManager()->
  51. createTerrainTriangleSelector(terrain, 0);
  52. terrain->setTriangleSelector(selector);
  53.  
  54. scene::ISceneNodeAnimator* anim = ENGINEMANAGER.GetSceneManager()->
  55. createCollisionResponseAnimator(
  56. selector,
  57. camera);
  58. camera->addAnimator(anim);
  59.  
  60. anim->drop();
  61. selector->drop();
  62. }
  63.  
  64. void ApplicationManager::Shutdown()
  65. {
  66. if (terrain != NULL) terrain->remove();
  67.  
  68. InitialiseVariables();
  69. }