#0 

23-05-2015 02:16:23

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#1 

23-05-2015 19:15:25

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
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/st … event.html

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

Hors ligne


#2 

23-05-2015 20:34:29

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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


#3 

23-05-2015 21:29:17

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
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


#4 

23-05-2015 22:40:02

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
56 invités en ligne
Aucun membre connecté
RSS Feed