Blender V2.61 - r43446
|
00001 /* 00002 * ***** BEGIN GPL LICENSE BLOCK ***** 00003 * 00004 * This program is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU General Public License 00006 * as published by the Free Software Foundation; either version 2 00007 * of the License, or (at your option) any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program; if not, write to the Free Software Foundation, 00016 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00017 * 00018 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 00019 * All rights reserved. 00020 * 00021 * The Original Code is: all of this file. 00022 * 00023 * Contributor(s): none yet. 00024 * 00025 * ***** END GPL LICENSE BLOCK ***** 00026 */ 00027 00033 #ifndef __JOYSENSOR_H_ 00034 #define __JOYSENSOR_H 00035 00036 #include "SCA_ISensor.h" 00037 #include "./Joystick/SCA_JoystickDefines.h" 00038 00039 class SCA_JoystickSensor :public SCA_ISensor 00040 { 00041 Py_Header 00042 00046 int m_axis; 00050 int m_axisf; 00054 int m_button; 00058 int m_buttonf; 00062 int m_hat; 00066 int m_hatf; 00070 int m_precision; 00074 bool m_istrig; 00080 bool m_istrig_prev; 00084 short int m_joymode; 00088 short int m_joyindex; 00089 00093 bool m_bAllEvents; 00094 00095 enum KX_JOYSENSORMODE { 00096 KX_JOYSENSORMODE_NODEF = 0, 00097 KX_JOYSENSORMODE_AXIS, 00098 KX_JOYSENSORMODE_BUTTON, 00099 KX_JOYSENSORMODE_HAT, 00100 KX_JOYSENSORMODE_AXIS_SINGLE, 00101 KX_JOYSENSORMODE_MAX 00102 }; 00103 bool isValid(KX_JOYSENSORMODE); 00104 00105 public: 00106 SCA_JoystickSensor(class SCA_JoystickManager* eventmgr, 00107 SCA_IObject* gameobj, 00108 short int joyindex, 00109 short int joymode, 00110 int axis, int axisf,int prec, 00111 int button, 00112 int hat, int hatf, bool allevents); 00113 virtual ~SCA_JoystickSensor(); 00114 virtual CValue* GetReplica(); 00115 00116 virtual bool Evaluate(); 00117 virtual bool IsPositiveTrigger(); 00118 virtual void Init(); 00119 00120 short int GetJoyIndex(void){ 00121 return m_joyindex; 00122 } 00123 00124 #ifdef WITH_PYTHON 00125 00126 /* --------------------------------------------------------------------- */ 00127 /* Python interface ---------------------------------------------------- */ 00128 /* --------------------------------------------------------------------- */ 00129 00130 /* Joystick Index */ 00131 KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,GetButtonActiveList) 00132 KX_PYMETHOD_DOC_VARARGS(SCA_JoystickSensor,GetButtonStatus) 00133 00134 static PyObject* pyattr_get_axis_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00135 static PyObject* pyattr_get_axis_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00136 static PyObject* pyattr_get_hat_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00137 static PyObject* pyattr_get_hat_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00138 static PyObject* pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00139 static PyObject* pyattr_get_num_buttons(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00140 static PyObject* pyattr_get_num_hats(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00141 static PyObject* pyattr_get_connected(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); 00142 00143 00144 /* attribute check */ 00145 static int CheckAxis(void *self, const PyAttributeDef*) 00146 { 00147 SCA_JoystickSensor* sensor = reinterpret_cast<SCA_JoystickSensor*>(self); 00148 if (sensor->m_axis < 1) 00149 sensor->m_axis = 1; 00150 else if (sensor->m_axis > JOYAXIS_MAX) 00151 sensor->m_axis = JOYAXIS_MAX; 00152 return 0; 00153 } 00154 static int CheckHat(void *self, const PyAttributeDef*) 00155 { 00156 SCA_JoystickSensor* sensor = reinterpret_cast<SCA_JoystickSensor*>(self); 00157 if (sensor->m_hat < 1) 00158 sensor->m_hat = 1; 00159 else if (sensor->m_hat > JOYHAT_MAX) 00160 sensor->m_hat = JOYHAT_MAX; 00161 return 0; 00162 } 00163 00164 #endif // WITH_PYTHON 00165 00166 }; 00167 00168 #endif