BGE joystick sensor py api function 'getConnected()', returns true if the joystick is connected and working.

SCA_Joystick.h seemed to have twice as many newlines as needed.
This commit is contained in:
Campbell Barton
2008-09-01 06:25:13 +00:00
parent 6f3a8519da
commit 7b9ee57c0b
4 changed files with 28 additions and 143 deletions

View File

@@ -367,6 +367,16 @@ void SCA_Joystick::DestroyJoystickDevice(void)
} }
} }
int SCA_Joystick::Connected(void)
{
if (m_isinit){
if(SDL_JoystickOpened(m_joyindex)){
return 1;
}
}
return 0;
}
void SCA_Joystick::pFillAxes() void SCA_Joystick::pFillAxes()
{ {

View File

@@ -1,72 +1,36 @@
/** /**
* ***** BEGIN GPL LICENSE BLOCK ***** * ***** BEGIN GPL LICENSE BLOCK *****
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 * as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version. * of the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation, * along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* *
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved. * All rights reserved.
* *
* The Original Code is: all of this file. * The Original Code is: all of this file.
* *
* Contributor(s): snailrose. * Contributor(s): snailrose.
* *
* ***** END GPL LICENSE BLOCK ***** * ***** END GPL LICENSE BLOCK *****
*/ */
#ifndef _SCA_JOYSTICK_H_ #ifndef _SCA_JOYSTICK_H_
#define _SCA_JOYSTICK_H_ #define _SCA_JOYSTICK_H_
#include "SCA_JoystickDefines.h" #include "SCA_JoystickDefines.h"
/* /*
* Basic Joystick class * Basic Joystick class
* I will make this class a singleton because there should be only one joystick * I will make this class a singleton because there should be only one joystick
* even if there are more than one scene using it and count how many scene are using it. * even if there are more than one scene using it and count how many scene are using it.
@@ -86,169 +50,105 @@ class SCA_Joystick
int m_joyindex; int m_joyindex;
/* /*
*support for 2 axes *support for 2 axes
*/ */
int m_axis10,m_axis11; int m_axis10,m_axis11;
int m_axis20,m_axis21; int m_axis20,m_axis21;
/* /*
* Precision or range of the axes * Precision or range of the axes
*/ */
int m_prec; int m_prec;
/* /*
* multiple axis values stored here * multiple axis values stored here
*/ */
int m_axisnum; int m_axisnum;
int m_axisvalue; int m_axisvalue;
/* /*
* max # of axes avail * max # of axes avail
*/ */
/*disabled /*disabled
int m_axismax; int m_axismax;
*/ */
/* /*
* button values stored here * button values stored here
*/ */
int m_buttonnum; int m_buttonnum;
/* /*
* max # of buttons avail * max # of buttons avail
*/ */
int m_buttonmax; int m_buttonmax;
/* /*
* hat values stored here * hat values stored here
*/ */
int m_hatnum; int m_hatnum;
int m_hatdir; int m_hatdir;
/* /*
* max # of hats avail * max # of hats avail
disabled disabled
int m_hatmax; int m_hatmax;
*/ */
/* is the joystick initialized ?*/ /* is the joystick initialized ?*/
bool m_isinit; bool m_isinit;
/* is triggered */ /* is triggered */
bool m_istrig; bool m_istrig;
/* /*
* Open the joystick * Open the joystick
*/ */
bool CreateJoystickDevice(void); bool CreateJoystickDevice(void);
/* /*
* Close the joystick * Close the joystick
*/ */
void DestroyJoystickDevice(void); void DestroyJoystickDevice(void);
/* /*
* event callbacks * event callbacks
*/ */
void OnAxisMotion(void); void OnAxisMotion(void);
void OnHatMotion(void); void OnHatMotion(void);
void OnButtonUp(void); void OnButtonUp(void);
void OnButtonDown(void); void OnButtonDown(void);
void OnNothing(void); void OnNothing(void);
void OnBallMotion(void){} void OnBallMotion(void){}
/* /*
* fills the axis mnember values * fills the axis mnember values
*/ */
void pFillAxes(void); void pFillAxes(void);
void pFillButtons(void); void pFillButtons(void);
/* /*
* returns m_axis10,m_axis11... * returns m_axis10,m_axis11...
*/ */
int pGetAxis(int axisnum, int udlr); int pGetAxis(int axisnum, int udlr);
/* /*
* gets the current button * gets the current button
*/ */
int pGetButtonPress(int button); int pGetButtonPress(int button);
/* /*
* returns if no button is pressed * returns if no button is pressed
*/ */
int pGetButtonRelease(int button); int pGetButtonRelease(int button);
/* /*
* gets the current hat direction * gets the current hat direction
*/ */
int pGetHat(int direction); int pGetHat(int direction);
SCA_Joystick(short int index); SCA_Joystick(short int index);
@@ -258,40 +158,27 @@ class SCA_Joystick
public: public:
static SCA_Joystick *GetInstance( short int joyindex ); static SCA_Joystick *GetInstance( short int joyindex );
void ReleaseInstance(); void ReleaseInstance();
void HandleEvents(); void HandleEvents();
/* /*
*/ */
bool aUpAxisIsPositive(int axis); bool aUpAxisIsPositive(int axis);
bool aDownAxisIsPositive(int axis); bool aDownAxisIsPositive(int axis);
bool aLeftAxisIsPositive(int axis); bool aLeftAxisIsPositive(int axis);
bool aRightAxisIsPositive(int axis); bool aRightAxisIsPositive(int axis);
bool aButtonPressIsPositive(int button); bool aButtonPressIsPositive(int button);
bool aButtonReleaseIsPositive(int button); bool aButtonReleaseIsPositive(int button);
bool aHatIsPositive(int dir); bool aHatIsPositive(int dir);
/* /*
* precision is default '3200' which is overridden by input * precision is default '3200' which is overridden by input
*/ */
void cSetPrecision(int val); void cSetPrecision(int val);
int GetAxis10(void){ int GetAxis10(void){
return m_axis10; return m_axis10;
@@ -299,77 +186,55 @@ public:
} }
int GetAxis11(void){ int GetAxis11(void){
return m_axis11; return m_axis11;
} }
int GetAxis20(void){ int GetAxis20(void){
return m_axis20; return m_axis20;
} }
int GetAxis21(void){ int GetAxis21(void){
return m_axis21; return m_axis21;
} }
int GetButton(void){ int GetButton(void){
return m_buttonnum; return m_buttonnum;
} }
int GetHat(void){ int GetHat(void){
return m_hatdir; return m_hatdir;
} }
int GetThreshold(void){ int GetThreshold(void){
return m_prec; return m_prec;
} }
bool IsTrig(void){ bool IsTrig(void){
return m_istrig; return m_istrig;
} }
/* /*
* returns true if an event is being processed * returns true if an event is being processed
*/ */
bool GetJoyAxisMotion(void); bool GetJoyAxisMotion(void);
bool GetJoyButtonPress(void); bool GetJoyButtonPress(void);
bool GetJoyButtonRelease(void); bool GetJoyButtonRelease(void);
bool GetJoyHatMotion(void); bool GetJoyHatMotion(void);
/* /*
* returns the # of... * returns the # of...
*/ */
int GetNumberOfAxes(void); int GetNumberOfAxes(void);
int GetNumberOfButtons(void); int GetNumberOfButtons(void);
int GetNumberOfHats(void); int GetNumberOfHats(void);
/*
* Test if the joystick is connected
*/
int Connected(void);
}; };

View File

@@ -296,7 +296,7 @@ PyParentObject SCA_JoystickSensor::Parents[] = {
PyMethodDef SCA_JoystickSensor::Methods[] = { PyMethodDef SCA_JoystickSensor::Methods[] = {
{"getIndex", (PyCFunction) SCA_JoystickSensor::sPyGetIndex, METH_NOARGS, GetIndex_doc}, {"getIndex", (PyCFunction) SCA_JoystickSensor::sPyGetIndex, METH_NOARGS, GetIndex_doc},
{"setIndex", (PyCFunction) SCA_JoystickSensor::sPySetIndex, METH_O, SetIndex_doc}, {"setIndex", (PyCFunction) SCA_JoystickSensor::sPySetIndex, METH_O, SetIndex_doc},
{"getAxis", (PyCFunction) SCA_JoystickSensor::sPyGetAxis, METH_NOARGS, GetAxis_doc}, {"getAxis", (PyCFunction) SCA_JoystickSensor::sPyGetAxis, METH_NOARGS, GetAxis_doc},
{"setAxis", (PyCFunction) SCA_JoystickSensor::sPySetAxis, METH_VARARGS, SetAxis_doc}, {"setAxis", (PyCFunction) SCA_JoystickSensor::sPySetAxis, METH_VARARGS, SetAxis_doc},
{"getAxisValue", (PyCFunction) SCA_JoystickSensor::sPyGetRealAxis, METH_NOARGS, GetRealAxis_doc}, {"getAxisValue", (PyCFunction) SCA_JoystickSensor::sPyGetRealAxis, METH_NOARGS, GetRealAxis_doc},
@@ -309,6 +309,7 @@ PyMethodDef SCA_JoystickSensor::Methods[] = {
{"getNumAxes", (PyCFunction) SCA_JoystickSensor::sPyNumberOfAxes, METH_NOARGS, NumberOfAxes_doc}, {"getNumAxes", (PyCFunction) SCA_JoystickSensor::sPyNumberOfAxes, METH_NOARGS, NumberOfAxes_doc},
{"getNumButtons",(PyCFunction) SCA_JoystickSensor::sPyNumberOfButtons,METH_NOARGS, NumberOfButtons_doc}, {"getNumButtons",(PyCFunction) SCA_JoystickSensor::sPyNumberOfButtons,METH_NOARGS, NumberOfButtons_doc},
{"getNumHats", (PyCFunction) SCA_JoystickSensor::sPyNumberOfHats, METH_NOARGS, NumberOfHats_doc}, {"getNumHats", (PyCFunction) SCA_JoystickSensor::sPyNumberOfHats, METH_NOARGS, NumberOfHats_doc},
{"getConnected", (PyCFunction) SCA_JoystickSensor::sPyConnected, METH_NOARGS, Connected_doc},
{NULL,NULL} //Sentinel {NULL,NULL} //Sentinel
}; };
@@ -333,7 +334,7 @@ char SCA_JoystickSensor::SetIndex_doc[] =
"\tSets the joystick index to use.\n"; "\tSets the joystick index to use.\n";
PyObject* SCA_JoystickSensor::PySetIndex( PyObject* self, PyObject* value ) { PyObject* SCA_JoystickSensor::PySetIndex( PyObject* self, PyObject* value ) {
int index = PyInt_AsLong( value ); /* -1 on error, will raise an error in this case */ int index = PyInt_AsLong( value ); /* -1 on error, will raise an error in this case */
if (index < 0 or index >= JOYINDEX_MAX) { if (index < 0 || index >= JOYINDEX_MAX) {
PyErr_SetString(PyExc_ValueError, "joystick index out of range or not an int"); PyErr_SetString(PyExc_ValueError, "joystick index out of range or not an int");
return NULL; return NULL;
} }
@@ -474,3 +475,11 @@ PyObject* SCA_JoystickSensor::PyNumberOfHats( PyObject* self ) {
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex); SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
return PyInt_FromLong( joy->GetNumberOfHats() ); return PyInt_FromLong( joy->GetNumberOfHats() );
} }
char SCA_JoystickSensor::Connected_doc[] =
"getConnected\n"
"\tReturns True if a joystick is connected at this joysticks index.\n";
PyObject* SCA_JoystickSensor::PyConnected( PyObject* self ) {
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
return PyBool_FromLong( joy->Connected() );
}

View File

@@ -131,6 +131,7 @@ public:
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfAxes); KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfAxes);
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfButtons); KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfButtons);
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfHats); KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfHats);
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,Connected);
}; };