historical/toontown-classic.git/panda/include/xInputDevice.h
2024-01-16 11:20:27 -06:00

62 lines
1.5 KiB
C++

/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file xInputDevice.h
* @author rdb
* @date 2015-07-15
*/
#ifndef XINPUTDEVICE_H
#define XINPUTDEVICE_H
#include "pandabase.h"
#include "inputDevice.h"
#if defined(_WIN32) && !defined(CPPPARSER)
#include <CfgMgr32.h>
class InputDeviceManager;
typedef struct _XINPUT_CAPABILITIES_EX XINPUT_CAPABILITIES_EX;
typedef struct _XINPUT_STATE XINPUT_STATE;
typedef struct tagRID_DEVICE_INFO RID_DEVICE_INFO;
/**
* This implementation of InputDevice uses Microsoft's XInput library to
* interface with an Xbox 360 game controller.
*
* @since 1.10.0
*/
class EXPCL_PANDA_DEVICE XInputDevice final : public InputDevice {
public:
XInputDevice(DWORD user_index);
~XInputDevice();
bool check_arrival(const RID_DEVICE_INFO &info, DEVINST inst,
const std::string &name, const std::string &manufacturer);
void detect(InputDeviceManager *mgr);
static bool init_xinput();
private:
void init_device(const XINPUT_CAPABILITIES_EX &caps, const XINPUT_STATE &state);
virtual void do_set_vibration(double strong, double weak);
virtual void do_poll();
private:
const DWORD _index;
DWORD _last_packet;
WORD _last_buttons;
static bool _initialized;
};
#endif // _WIN32
#endif