Ma classe Window (Instanciée dans le main)
Window.cpp
#include <IRR/irrlicht.h>
#include "Window.h"
#include "AnimatedMesh.h"
#include "StaticMesh.h"
#include "CameraFPS.h"
#include "Spot.h"
#include "Gui.h"
#include "Light.h"
#include "ImprEcran.h"
#include "Skybox.h"
using namespace irr;
Window::Window(){}
Window::Window(int x1, int y1, int color1, bool fullscreen1){
x = x1;
y = y1;
color = color1;
fullscreen = fullscreen1;
//On crée la fenetre, le driver, le scene manager et le GUI
device = createDevice(video::EDT_OPENGL, core::dimension2d<irr::s32>(x,y),color,fullscreen,true,false,0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
GUI = device->getGUIEnvironment();
//Ensuite, on crée le Heros, le soleil, puis la camera
AnimatedMesh heros("sydney.md2", "sydney.bmp", smgr, driver, true);
Light soleil(1.0, 1.0, 1.0, 0, smgr);
CameraFPS camera(true, smgr);
//Le mesh suit la camera
//heros.Nmodele->setParent(camera.camera);
camera.camera->setFOV(70);
/*//On crée la map
device->getFileSystem()->addZipFileArchive("map-20kdm2.pk3");
irr::scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
irr::scene::ISceneNode* node = 0;
if (mesh)
node = smgr->addOctTreeSceneNode(mesh->getMesh(0));
if (node)
node->setPosition(irr::core::vector3df(-1300,-144,-1249));
Gui::setCursorLook(device, false);
*camera.camera->setFarValue(camera.camera->getFarValue() + 4000);
anim->drop();
*/
scene::IAnimatedMesh * mesh = smgr->addTerrainMesh("MeshTerrain.obj", driver->createImageFromFile("rockwall.bmp"), driver->createImageFromFile("HeightmapTerrain.png"));
smgr->addAnimatedMeshSceneNode(mesh);
//Ajoute un Nom au dessus de Sydney
gui::IGUIFont* font = GUI->getFont("fontlucida.png");
smgr->addBillboardTextSceneNode(font, L"Sydney", heros.Nmodele, core::dimension2d< f32 >(15.0f, 5.0f), heros.Nmodele->getPosition()+ core::vector3df(0, 40, 0));
smgr->addSkyDomeSceneNode(driver->getTexture("sky.jpg"), 50, 2, 2, 100);
//On fait les captures
ImprEcran receiver(driver);
device->setEventReceiver(&receiver);
//Boucle de rendu
while(device->run())
{
core::vector3df posCam = camera.getCamLocate();
core::stringw titre = driver->getFPS();
titre += " FPS - X = ";
titre += posCam.X;
titre += " Y = ";
titre += posCam.Y;
titre += " Z = ";
titre += posCam.Z;
Gui::setWindowCaption(titre.c_str(), device);
driver->beginScene(true, true, video::SColor(255,0,163,255));
smgr->drawAll();
GUI->drawAll();
driver->endScene();
}
device->drop ();
exit(0);
}
Window::~Window(){
delete device;
delete driver;
delete smgr;
}
Window.h
#ifndef DEF_WINDOW
#define DEF_WINDOW
#include <IRR/irrlicht.h>
#include "Event.h"
class Window{
//Attributs
private:
int x;
int y;
int color;
bool fullscreen;
irr::f32 fovy;
irr::IrrlichtDevice *device;
irr::video::IVideoDriver* driver;
irr::scene::ISceneManager *smgr;
irr::gui::IGUIEnvironment *GUI;
irr::scene::ITriangleSelector *selector;
//Constructeurs & Destructeur
public:
Window();
Window(int x1, int y1, int color1, bool fullscreen1);
~Window();
};
#endif
Ma classe camera (Peut etre tu en as besoin)
CameraFPS.h
#ifndef DEF_CAMERAFPS
#define DEF_CAMERAFPS
#include <IRR/irrlicht.h>
class CameraFPS{
//Attributs
private:
bool canFly;
public:
irr::scene::ICameraSceneNode *camera;
//Constructeur
public:
CameraFPS();
CameraFPS(bool canFly1, irr::scene::ISceneManager * smgr);
~CameraFPS();
//Methodes
public:
void cameraCanFly(bool canFly1 = false);
irr::core::vector3df getCamLocate();
};
#endif
CameraFPS.cpp
#include <IRR/irrlicht.h>
#include "CameraFPS.h"
using namespace irr;
CameraFPS::CameraFPS(){}
CameraFPS::CameraFPS(bool canFly1, irr::scene::ISceneManager * smgr){
canFly = canFly1;
irr::SKeyMap keyMap[5];
//avancer
keyMap[0].Action = irr::EKA_MOVE_FORWARD;
keyMap[0].KeyCode = irr::KEY_KEY_Z;
//reculer
keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
keyMap[1].KeyCode = irr::KEY_KEY_S;
//a gauche
keyMap[2].Action = irr::EKA_STRAFE_LEFT;
keyMap[2].KeyCode = irr::KEY_KEY_Q;
//a droite
keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
keyMap[3].KeyCode = irr::KEY_KEY_D;
//saut
keyMap[4].Action = irr::EKA_JUMP_UP;
keyMap[4].KeyCode = irr::KEY_SPACE;
camera = smgr->addCameraSceneNodeFPS (0, 100.0f, 300.0f, 0, keyMap, 5, canFly1, 0.4);
camera->setPosition(core::vector3df(-95.560890, 99.983185, 66.212875));
}
CameraFPS::~CameraFPS(){
delete camera;
}
core::vector3df CameraFPS::getCamLocate(){
return camera->getPosition();
}
Bon, enfait il y a d'autres classes, mais je te les passe quand tu les veux