Historique des modifications - Message

Message #3650

Sujet: Problème avec un tuto sur les events


TypeDateAuteurContenu
Création du message08-03-2008 21:13:21quarty
Salut

J'ai trouvé un super tuto sur Le site du zéro, pour le moment j'en suis à la partie qui traite des events, j'ai donc suivis le tuto mais j'arrive à une erreur lors de la compilation:


main.cpp(32) : error C2259: 'CEventReceiver' : impossible d'instancier une classe abstraite
à cause des membres suivants :
'bool irr::IEventReceiver::OnEvent(const irr::SEvent &)' : est abstrait
c:\\program files\\microsoft visual studio 9.0\\vc\\include\\irrlich\\ieventreceiver.h(256) : voir la déclaration de 'irr::IEventReceiver::OnEvent'

voila le code (copié directement depuis le site du zéro:

Main.cpp:

#include "CEventReceiver.h"


int main(void)
{

//Device, driver et graphe de scene.
irr::IrrlichtDevice* device = irr::createDevice(irr::video::EDT_OPENGL,
irr::core::dimension2d<irr::s32>(800,800),32,false,false,false);
irr::video::IVideoDriver* driver = device->getVideoDriver ();
irr::scene::ISceneManager *sceneManager = device->getSceneManager ();

//On rend invisible le curseur.
device->getCursorControl ()-> setVisible (false);

//Sydney
irr::scene::IAnimatedMeshMD2* modele;
modele = (irr::scene::IAnimatedMeshMD2*)sceneManager->getMesh("sydney.md2");
irr::scene::IAnimatedMeshSceneNode* Nmodele =
sceneManager->addAnimatedMeshSceneNode(modele);

//On modifie les proprietes de Sydney
Nmodele->setMaterialFlag(irr::video::EMF_LIGHTING, false);
Nmodele->setFrameLoop(0, 0);
Nmodele->setMaterialTexture( 0, driver->getTexture("sydney.bmp") );

//La camera
irr::scene::ICameraSceneNode *camera;
camera = sceneManager->addCameraSceneNodeFPS (0,100.0f,300.0f);

//On cree le capteur d'event et on l'associe au device.
CEventReceiver receiver(Nmodele);
device->setEventReceiver(&receiver);

//La boucle de rendu
while (device->run())
{
driver->beginScene(true, true, irr::video::SColor(0,200,200,200));
//Met a jour la position du mesh
receiver.majPosMesh();
sceneManager->drawAll ();
driver->endScene ();
}

device->drop ();
return 0;
}

CEventReceiver.h:
#include <irr/irrlicht.h>

class CEventReceiver : public irr::IEventReceiver
{

public :

//Le constructeur.
CEventReceiver(irr::scene::IAnimatedMeshSceneNode* Nmodele);
//Capte automatiquement les events.
bool OnEvent(const irr::SEvent event);
//Met a jour la position du mesh.
void majPosMesh();


private :

//Le modele qu'on va controler.
irr::scene::IAnimatedMeshSceneNode* m_Nmodele;
//Indique si on est deja en mouvement ou pas.
bool m_isMoving;
};

CEventReceiver.pp:
#include "CEventReceiver.h"

CEventReceiver::CEventReceiver(irr::scene::IAnimatedMeshSceneNode* Nmodele)
{
//On pointe le mesh passe en parametre.
m_Nmodele = Nmodele;
//Par defaut on ne bouge pas
m_isMoving = false;
}


bool CEventReceiver::OnEvent(const irr::SEvent event)
{
//On verifie que le pointeur est ok
if(m_Nmodele != 0
//Qu'il s'agit d'un event concernant un appui/relachement de touche
&& event.EventType == irr::EET_KEY_INPUT_EVENT
//Qu'il s'agit de la touche z
&& event.KeyInput.Key == irr::KEY_KEY_Z)
{
//Si il s'agit d'un appui
if(event.KeyInput.PressedDown == true)
m_isMoving = true;
//Sinon c'est un relachement
else
m_isMoving = false;
//L'event est traite, on retourne true
return true;
}
//Si on arrive la, c'est qu'on a pas traite l'event
return false;
}


void CEventReceiver::majPosMesh()
{
//On verifie que le pointeur vers le mesh est
//ok et que la touche est enfoncee
if(m_Nmodele != 0 && m_isMoving == true)
{
//On commence par recuperer la position actuelle
irr::core::vector3df v = m_Nmodele->getPosition();
//On y ajoute la valeur de deplacement
v.X += 1.0f;
//On renvoie la nouvelle position
m_Nmodele->setPosition(v);
}
}

J'espere que quelqu'un pourras m'aidersmile, si vous avez un autre tuto sur les events avec irrlicht je prend aussismile

Merci

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
296 invités en ligne
membre en ligne: -
RSS Feed