Historique des modifications - Message

Message #3650

Sujet: Problème avec un tuto sur les events


Type Date Auteur Contenu
Création du message 08-03-2008 21:13:21 quarty
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'aider smile, si vous avez un autre tuto sur les events avec irrlicht je prend aussi smile

Merci

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
132 invités en ligne
membre en ligne: -
RSS Feed