ПрограммированиеСтатьиГрафика

OGRE 3D: Создание игры на OGRЕ. Часть 1.

Внимание! Этот документ ещё не опубликован.

Автор:

      Оригинал: Мэтью Касперсен( http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/… -ogre-3d.aspx )
      OGRE 3D - один из лучших бесплатных движков. На его основе было создано множество успешных коммерческих игр, у этого движка есть огромное активное сообщество, к тому же это действительно мощный графический движок. В этих обучающих статьях будет рассмотрено создание простого Shoot'em'up с использованием OGRE. Но сначала нужно создать базовую основу программы.
EngineManager.h

/*
 *   OgreEngineManager.h
 *
 *   Created on: 18/12/2009
 *      Author: Matthew Casperson
 */

#ifndef OGREENGINEMANAGER_H_
#define OGREENGINEMANAGER_H_

#include "memory"
#include "string"
#include "map"

#include "OGRE/Ogre.h"
#include "OIS/OIS.h"

#include "ResourceLocationDefinition.h"

//делает жизнь немного легче ;)
#define ENGINEMANAGER OgreEngineManager::Instance()

// определяет пространство имен для огра.
using namespace Ogre;

/**
 Контролирует движок
*/
class OgreEngineManager :
 public WindowEventListener,
 public FrameListener
{
public:
 /**
  Деструктор
 */
 ~OgreEngineManager();
 /**
  Singelton access
  @return The single instance of this class
 */
 static OgreEngineManager & Instance()
 {
  static OgreEngineManager instance;
  return instance;
 }
 /**
  Инициализация движка.
  @param pluginFileName Файл с плагинами
  @param configFileName Настройки
  @param logFileName Лог
 */
 bool Startup(const std::string pluginFileName, 
 const std::string configFileName, const std::string logFileName);
 /**
  дык же
 */
 void Shutdown();
 /**
  Выгрузка OIS
 */
 void ShutdownInput();
 /**
  Получение окна программы
  @return The render window
 */
 RenderWindow * GetRenderWindow() const
 {
  return window;
 }
 /**
  Получение корневого класса
  @return The Ogre root
 */
 Root * GetRoot() const
 {
  return root.get();
 }
 /**
  Получение OIS
  @return The OIS inoput manager
 */
 OIS::InputManager* GetInputManager() const
 {
  return mInputManager;
 }
 /**
  Клава
  @return The OIS keyboard
 */
 OIS::Keyboard* GetKeyboard() const
 {
  return mKeyboard;
 }
 /**
  Грызун
  @return The OIS mouse
 */
 OIS::Mouse* GetMouse() const
 {
  return mMouse;
 }
 /**
  Запуск программы
 */
 void StartRenderLoop();
 /**
  Остановка
 */
 void StopRenderLoop() {engineManagerRunning = false;}
 /**
  Получение пути к ресурсам
 */
 void AddNewResourceLocation(const ResourceLocationDefinition& definition) 
 {resourceLocationDefinitionVector.push_back(definition);}
 /**
  Вызывается при закрытии окна
 */
 void windowClosed(RenderWindow* rw);
 /**
  Запуск рендера одного кадра
 */
 bool frameStarted(const FrameEvent& evt);

protected:
 /**
  Инициализация переменных
 */
 OgreEngineManager();
 /**
  Загрузка ресурсов из файла
 */
 void SetupResources();
 /**
  Выводит диалоговое окно с настройками
 */
 bool Configure();
 /**
  Настройка ввода
 */
 void SetupInputDevices();
 /// OGRE Root
 std::auto_ptr     root;
 /// Default OGRE Camera
 Camera*        genericCamera;
 /// OGRE RenderWIndow
 RenderWindow*       window;
 /// запустился ли движок
 bool         engineManagerRunning;
 /// ресуры
 ResourceLocationDefinitionVector  resourceLocationDefinitionVector;
 //OIS 
 OIS::InputManager*      mInputManager;
 OIS::Mouse*          mMouse;
 OIS::Keyboard*       mKeyboard;
};

#endif /* OGREENGINEMANAGER_H_ */

EngineManager.cpp
Конструктор используется для установки нулевого значения для переменных

/*
 *   OgreEngineManager.cpp
 *
 *   Created on: 18/12/2009
 *      Author: Matthew Casperson
 */

#include "iostream"
#include "sstream" 
#include "OgreEngineManager.h"

OgreEngineManager::OgreEngineManager() :
 root(NULL),
 genericCamera(NULL),
 window(NULL),
 engineManagerRunning(true)
{

}
// деструктор оставляем пустым

OgreEngineManager::~OgreEngineManager()
{

}

#Ogre3D

2 декабря 2010