#1 

26-06-2012 07:23:08

Corvet
Membres
Avatar de Corvet
Date d'inscription:
Messages: 7
IP: 82.246.195.189
Courriel

Bonjour,

J'ai besoin d'aide pour mettre la gestion des événements de la demo d'Irrlicht dans un fichier avec une classe spécial.
Je n'y arrive pas. J'ai des problèmes de compilation du fait que la classe onevent est virtuel au départ.

Pourriez-vous m'aider s'il vous plaît ?

Merci d'avance pour votre aide.


Hors ligne


#2 

26-06-2012 11:32:13

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.216.249
Courriel

Le principe c'est de dérivé IEventReceiver puis d'implémenter OnEvent().

Dans MyEventReceiver.h :

class MyEventReceiver : public IEventReceiver
{
    public:
        MyEventReceiver();
        ~MyEventReceiver();

        virtual bool OnEvent(const SEvent&);
};

Dans MyEventReceiver.cpp
#include "MyEventReceiver.h"

MyEventReceiver::MyEventReceiver()
{
// constructeur
}

MyEventReceiver::~MyEventReceiver()
{
// destructeur
}

bool MyEventReceiver::OnEvent(const SEvent&);
{
    if (event.EventType == EET_KEY_INPUT_EVENT)
    {
        if(event.KeyInput.PressedDown)
        {
            if(event.KeyInput.Key == KEY_F4 )  // appui sur la touche "F4"
            {
                return true;                                // l'événement a été traité
            }
        }
    }
    return false; // aucun événement à été traité
}

Attention : OnEvent doit toujours renvoyer true lorsque tu as utilisé l'event, ainsi il retire l'event et passe au suivant.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#3 

26-06-2012 12:04:25

Corvet
Membres
Avatar de Corvet
Date d'inscription:
Messages: 7
IP: 82.246.195.189
Courriel

Merci beaucoup johnplayer d'avoir répondu.

Le problème c'est que je n'arrive pas à remplacer l'event receiver de la demo par le tien que je préfère nettement.

Quand je supprime l'event receiver de la demo, j'ai une erreur dans main.cpp qui me dit que CDemo est une classe abstraite.

Comment faire pour régler le problème s'il vous plaît ?


Hors ligne


#4 

26-06-2012 14:58:05

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.216.249
Courriel

Pour la creation d'une instance :
MyEventReceiver receiver();

Pour le transmettre au device lorsqu'il est déjà créé :
device->setEventReceiver(&receiver);

ou à la création du device, tu mets &receiver pour le dernier argument de createDevice()
createDevice( video::E_DRIVER_TYPE deviceType = video::EDT_SOFTWARE,
const core::dimension2d< u32 > & windowSize = (core::dimension2d< u32 >(640, 480)),
u32 bits = 16,
bool fullscreen = false,
bool stencilbuffer = false,
bool vsync = false,
IEventReceiver * receiver = 0)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#5 

26-06-2012 15:15:25

Corvet
Membres
Avatar de Corvet
Date d'inscription:
Messages: 7
IP: 82.246.195.189
Courriel

Merci beaucoup johnplayer, je vais essayer.


Hors ligne


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
165 invités en ligne
membre en ligne: -
RSS Feed