#ifndef WIIMOTE_UTILS_H #define WIIMOTE_UTILS_H #include "message_input.h" #include "typedefs.h" #include "C_Smoother.h" #define _USE_MATH_DEFINES #include static double g_dWiimoteXCamResolution = 1016.0; static double g_dWiimoteYCamResolution = 760.0; static double g_dWiimoteRadPerPixel = (41.0 * (M_PI/180.0))/g_dWiimoteXCamResolution; //abstract wiimote needs to be inherited and the virtual functions implemented to communicate //with a wiimote lib class AbstractWiimote { public: AbstractWiimote(); ~AbstractWiimote(); virtual bool Connect() = 0; virtual void StartRumble() = 0; virtual void StopRumble() = 0; virtual void SetLeds(unsigned char bitmask) = 0; virtual bool IsConnected() = 0; void FillWiimoteMsgPayload(input_payload_wiimote &f_payload, double f_dSensBarLedDist); protected: virtual void ParseWiimote(input_payload_wiimote &f_payload) = 0; bool FindSensorBarDots(rawdot *f_rd, int f_iNumdots, Vect3D_t f_Dots[2]); bool CalcWiimoteRelativeCursorPos(input_payload_wiimote &f_pWiimoteMsg, double f_dSensBarLedDist); double CalcZDistInMM(Vect3D_t f_Dots[2], double f_dSensBarLedDist); C_Smoother *m_pSensBarDotSmoother[2]; }; #ifdef USE_WIIYOURSELF #include //implementation of an abstract wiimote using the wiiyourself! lib class WiiYourselfWiimote : public AbstractWiimote { public: WiiYourselfWiimote(); ~WiiYourselfWiimote(); bool Connect(); void StartRumble(); void StopRumble(); void SetLeds(unsigned char bitmask); bool IsConnected(); void ParseWiimote(input_payload_wiimote &f_payload); private: wiimote *m_pWm; }; #endif //USE_WIIYOURSELF #endif //WIIMOTE_UTILS_H