#1 

23-05-2015 00:16:23

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 176.144.142.30
Courriel

Bonjour,

J'ai fais ce code pour avoir une impulsion sur la manette xbox pc :

Code c++ :

bool oldstate=false;

BOOL CApplication::getJoystickButtonPressedDown(bool button_event){
    ///bool button_event = event.JoystickEvent.IsButtonPressed(0);
    bool newstate;
    bool result;
    int i;
    if(button_event == true && oldstate == false){
        for(i=0;i<2;i++){
            result = true;
        }
        if(i>1){
          oldstate = true;
        }
    }
    else{
            result = false;
    }
    if(result == false && button_event == false){
        oldstate = false;
    }
    return result;
    ///cout<<result<<endl;
}

çà fonctionne mais je trouve que c'est vraiment du bricolage et je ne vois pas comment faire autrement, si quelqu'un a une petite idée ...

Merci smile


Hors ligne


#2 

23-05-2015 17:15:25

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 109.190.12.31
Courriel  Site web

euh ... je voie pas trop où tu veut en venir
tu veut juste savoir si le boutton est down ? ou tu veut faire un "clic" ?

par ce qu'en regardant l'api tu as simplement event.JoystickEvent.IsButtonPressed(u32)
http://irrlicht.sourceforge.net/docu/structirr_1_1_s_event_1_1_s_joystick_event.html

qui ne fait que event.JoystickEvent.ButtonStates & (1 << button_number)

Hors ligne


#3 

23-05-2015 18:34:29

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 176.144.142.30
Courriel

En fait quand tu appui sur un bouton son état passe de 0 a 1 et reste à 1. Moi je veux détecter seulement un front montant c'est à dire passage de 0 à 1 puis à 0 si on reste appuyé.


Hors ligne


#4 

23-05-2015 19:29:17

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 109.190.12.31
Courriel  Site web

ok ok
perso je pensse que je ferais une sauvegarde de ButtonStates
il ne suffie que de faire un xor entre l'ancien et le nouveaux pour savoir ce qui a changer



tout ce qui est a 1 a changer d'état
au final ta un truc du genre

Code c++ :

irr::u32 oldState = 0;
bool CApplication::OnEvent(const irr::SEvent &event)
{
    ... bla bla
    if(event. ... == ...JOYSTIC_EVENT)
    {
        irr::u32 tmp = oldState ^ event. ... .ButtonStates;
        
        if((tmp & 0b00001) & event. ... .ButtonStates)
            ... bla bla du bouton 1
            
        oldState = event. ... .ButtonStates;
        
    }
    ... bla bla
}


l'idée reste la même ....

Hors ligne


#5 

23-05-2015 20:40:02

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 176.144.142.30
Courriel

Oui effectivement utiliser de la bonne vieille logique combinatoire est une bonne idée.

Merci wink


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