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
Hors ligne
23-05-2015 17:15:25
- Magun
- Administrateurs

- 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
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
23-05-2015 19:29:17
- Magun
- Administrateurs

- 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
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 ![]()
Hors ligne



