00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "ArExport.h"
00027 #include "ariaOSDef.h"
00028 #include "ArJoyHandler.h"
00029
00030 AREXPORT bool ArJoyHandler::init(void)
00031 {
00032
00033 myPhysMax = 1;
00034 myLastZ = 0;
00035
00036
00037 if (joyGetDevCaps(JOYSTICKID1,&myJoyCaps,sizeof(myJoyCaps)) ==
00038 JOYERR_NOERROR &&
00039 joyGetPos(JOYSTICKID1,&myJoyInfo) != JOYERR_UNPLUGGED)
00040 {
00041 myJoyID = JOYSTICKID1;
00042
00043
00044
00045 myPhysMax = myJoyCaps.wXmax - myJoyCaps.wXmin;
00046
00047 myInitialized = true;
00048 startCal();
00049 endCal();
00050 return true;
00051 }
00052
00053 else if (joyGetDevCaps(JOYSTICKID2,&myJoyCaps,sizeof(myJoyCaps)) ==
00054 JOYERR_NOERROR &&
00055 joyGetPos(JOYSTICKID2,&myJoyInfo) != JOYERR_UNPLUGGED)
00056 {
00057 myJoyID = JOYSTICKID2;
00058
00059
00060
00061 myPhysMax = myJoyCaps.wXmax - myJoyCaps.wXmin;
00062
00063 myInitialized = true;
00064 startCal();
00065 endCal();
00066 return true;
00067 }
00068
00069 else
00070 {
00071 myInitialized = false;
00072 return false;
00073 }
00074
00075
00076 if (myPhysMax == 0) {
00077 myPhysMax = 1;
00078 }
00079
00080 getData();
00081 }
00082
00083 void ArJoyHandler::getData(void)
00084 {
00085 int x, y, z;
00086 if (!myFirstData && myLastDataGathered.mSecSince() < 5)
00087 return;
00088
00089 myFirstData = false;
00090 myLastDataGathered.setToNow();
00091 MMRESULT joyResult = joyGetPos(myJoyID,&myJoyInfo);
00092
00093 if (joyResult == JOYERR_NOERROR)
00094 {
00095
00096
00097
00098
00099
00100 x = (int)(myJoyInfo.wXpos*256.0/myPhysMax)-128;
00101 y = (int)-((myJoyInfo.wYpos*256.0/myPhysMax)-128);
00102 z = (int)-((myJoyInfo.wZpos*256.0/myPhysMax)-128);
00103
00104
00105
00106
00107
00108
00109
00110
00111 if (myLastZ != z)
00112 myHaveZ = true;
00113 if (x > myMaxX)
00114 myMaxX = x;
00115 if (x < myMinX)
00116 myMinX = x;
00117 if (y > myMaxY)
00118 myMaxY = y;
00119 if (y < myMinY)
00120 myMinY = y;
00121
00122 myAxes[1] = x;
00123 myAxes[2] = y;
00124 myAxes[3] = z;
00125
00126 myLastZ = z;
00127
00128 myButtons[1] = (myJoyInfo.wButtons & 1);
00129 myButtons[2] = (myJoyInfo.wButtons & 2);
00130 myButtons[3] = (myJoyInfo.wButtons & 4);
00131 myButtons[4] = (myJoyInfo.wButtons & 8);
00132 }
00133 else
00134 {
00135 myAxes[1] = 0;
00136 myAxes[2] = 0;
00137 myAxes[3] = 0;
00138 myButtons[1] = 0;
00139 myButtons[2] = 0;
00140 myButtons[3] = 0;
00141 myButtons[4] = 0;
00142
00143
00144
00145 myInitialized = false;
00146 }
00147 }
00148
00149