Historique des modifications - Message

Message #11187

Sujet: Classe Événement Manette X360 pc ne fonctionne pas


Type Date Auteur Contenu
Création du message 10-04-2013 20:57:37 jonath313
Bin enfait j'ai appris à programmé tout seul , alors je ne sais pas me servir d'une doc, si j'ai pas un tuto clair j'avance pas.
Alors vue que je connais un peut la SDL je me suis lancé sur ce qu'il me paraissait le plus simple, même si c'est pas le plus logique niveau code.
Du coup j'ai résolu mon problème, j'avais juste à recréer une fonction adapté :

CLEventReceiver .cpp

Code c++ :

bool CLEventReceiver::process_events() //En cas d'événnement MANETTE X360
{
SDL_Event m_evenements;
SDL_PollEvent(&m_evenements);

        switch(m_evenements.type)
        {
///////////////////////////////////////////////////LES BOUTONS////////////////////////////////////////////////////////
        case SDL_JOYBUTTONDOWN: //Cas appuie sur le bouton
            if (m_evenements.jbutton.button == 0) { //appuie sur le bouton 0 : A sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 1) { //appuie sur le bouton 1 : B sur la manette
                m_isRecule = true;
            }
            if (m_evenements.jbutton.button == 2) { //appuie sur le bouton 2 : X sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 3) { //appuie sur le bouton 3 : Y sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 4) { //appuie sur le bouton 4 : LB sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 5) { //appuie sur le bouton 5 : RB sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 6) { //appuie sur le bouton 6 : BACK sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 7) { //appuie sur le bouton 7 : START sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 8) { //appuie sur le bouton 8 : STICK GAUCHE sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            if (m_evenements.jbutton.button == 9) { //appuie sur le bouton 9 : STICK DROITE sur la manette
                m_isAvance = true;
                m_isMarcher = true;
            }
            break;

        case SDL_JOYBUTTONUP: //Cas RELACHE du bouton
            if (m_evenements.jbutton.button == 0) { //RELACHE sur le bouton 0 : A sur la manette
                m_isAvance = false;
                m_isMarcher = false;
            }
            if (m_evenements.jbutton.button == 1) { //RELACHE sur le bouton 1 : B sur la manette
                m_isRecule = false;
               // m_isMarcher = false;
            }
            if (m_evenements.jbutton.button == 2) { //RELACHE sur le bouton 2 : X sur la manette
            }
            if (m_evenements.jbutton.button == 3) { //RELACHE sur le bouton 3 : Y sur la manette
                m_isAvance = false;
                m_isMarcher = false;
            }
            if (m_evenements.jbutton.button == 4) { //RELACHE sur le bouton 4 : LB sur la manette
            }
            if (m_evenements.jbutton.button == 5) { //RELACHE sur le bouton 5 : RB sur la manette
                m_isAvance = false;
                m_isMarcher = false;
            }
            if (m_evenements.jbutton.button == 6) { //RELACHE sur le bouton 6 : BACK sur la manette
            }
            if (m_evenements.jbutton.button == 7) { //RELACHE sur le bouton 7 : START sur la manette
           }
            if (m_evenements.jbutton.button == 8) { //RELACHE sur le bouton 8 : STICK GAUCHE sur la manette
                m_isAvance = false;
                m_isMarcher = false;
            }
            if (m_evenements.jbutton.button == 9) { //RELACHE sur le bouton 9 : STICK DROITE sur la manette
            }
            break;
///////////////////////////////////////////////////////LES AXES/////////////////////////////////////////////////////////////////////
        case SDL_JOYAXISMOTION : //Cas mouvement des axes
                if(m_evenements.jaxis.axis == 0 && m_evenements.jaxis.value < - 5000) //Mouvement vers la gauche NUMERO 0 = STICK GAUCHE
                {
                m_isAvance = true;
                m_isMarcher = true;
                }
                else {
                        m_isAvance = false;
                        m_isMarcher = false;
                }
                if(m_evenements.jaxis.axis == 0 && m_evenements.jaxis.value >  5000) //Mouvement vers la DROITE NUMERO 0 = STICK GAUCHE
                {
                }
                if(m_evenements.jaxis.axis == 1 && m_evenements.jaxis.value <  -5000) //Mouvement vers la HAUT NUMERO 1 = STICK GAUCHE
                {
                }

                if(m_evenements.jaxis.axis == 1 && m_evenements.jaxis.value >  5000) //Mouvement vers la BAS NUMERO 1 = STICK GAUCHE
                {
                }

                if(m_evenements.jaxis.axis == 2 && m_evenements.jaxis.value < -5000) //BOUTON AXE RT NUMERO 2
                {
                }
                if(m_evenements.jaxis.axis == 2 && m_evenements.jaxis.value > 5000) //BOUTON AXE LT NUMERO 2
                {
                }

                if(m_evenements.jaxis.axis == 3 && m_evenements.jaxis.value < - 5000) //Mouvement vers la HAUT NUMERO 3 = STICK DROIT
                {
                }
                if(m_evenements.jaxis.axis == 3 && m_evenements.jaxis.value >  5000) //Mouvement vers la BAS NUMERO 3 = STICK DROIT
                {
                }
                if(m_evenements.jaxis.axis == 4 && m_evenements.jaxis.value < - 5000) //Mouvement vers la GAUCHE NUMERO 3 = STICK DROIT
                {
                }
                if(m_evenements.jaxis.axis == 4 && m_evenements.jaxis.value >  5000) //Mouvement vers la DROITE NUMERO 3 = STICK DROIT
                {
                }
                 break;
/////////////////////////////////////////////////LES CHAPEAUX//////////////////////////////////////////////////////////////////////
        case SDL_JOYHATMOTION:
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_UP) //SI CHAPEAU HAUT
                {
                m_isAvance = true;
                m_isMarcher = true;
                //break;
                }
                else {
                        m_isAvance = false;
                        m_isMarcher = false;
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_DOWN) //SI CHAPEAU BAS
                {
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_RIGHT) //SI CHAPEAU DROITE
                {
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_RIGHTDOWN) //SI CHAPEAU BAS DROITE
                {
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_RIGHTUP) //SI CHAPEAU HAUT DROITE
                {
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_LEFT) //SI CHAPEAU GAUCHE
                {
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_LEFTDOWN) //SI CHAPEAU BAS GAUCHE
                {
                }
                if(m_evenements.jhat.hat == 0 && m_evenements.jhat.value == SDL_HAT_LEFTUP) //SI CHAPEAU HAUT GAUCHE
                {
                }
                break;
        }

}

Dans le . h on déclare:

Code c++ :

     virtual bool process_events();

main.cpp

Code c++ :

...
while (device->run()) {

        driver->beginScene(true, true, irr::video::SColor(0,255,255,255));


        SDL_JoystickUpdate();

    receiver.majPosMesh();//a chaque frame , on appelle la fonction qui met à jour la position du Mesh
    receiver.majAnimMesh();//a chaque frame , on appelle la fonction qui , si besoin est  , modifie l'animation du mesh
    receiver.process_events();
   
    sceneManager->drawAll ();
    driver->endScene ();
    }
    device->drop ();
    SDL_JoystickClose(manette1);
    SDL_Quit();
    return EXIT_SUCCESS;
}

Et voila au cas où il y est d'autres personnes qui aiment se compliquer la vie , le code fonctionne wink

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