载入中...
搜索中...
未找到
Pad.h
浏览该文件的文档.
1#pragma once
2
3#include <string>
4#include <vector>
5
6namespace eve::joystick {
7
13class Pad {
14public:
16 virtual ~Pad() = default;
17
19 virtual bool open(int deviceindex) = 0;
21 virtual void close() = 0;
23 virtual bool isConnected() const = 0;
24
26 virtual std::string getName() const = 0;
27
29 virtual int getAxisCount() const = 0;
31 virtual int getButtonCount() const = 0;
33 virtual int getHatCount() const = 0;
34
36 virtual float getAxis(int axisindex) const = 0;
38 virtual std::vector<float> getAxes() const = 0;
40 virtual std::string getHat(int hatindex) const = 0;
41
43 virtual bool isDown(int button) const = 0;
45 virtual bool isDown(const std::vector<int>& buttons) const = 0;
46
48 virtual bool openGamepad(int deviceindex) = 0;
50 virtual bool isGamepad() const = 0;
51
53 virtual float getGamepadAxis(const std::string& axis) const = 0;
55 virtual bool isGamepadDown(const std::string& button) const = 0;
57 virtual bool isGamepadDown(const std::vector<std::string>& buttons) const = 0;
58
60 virtual std::string getGamepadMappingString() const = 0;
61
63 virtual void* getHandle() const = 0;
65 virtual std::string getGUID() const = 0;
67 virtual int getInstanceID() const = 0;
69 virtual int getID() const = 0;
70
72 virtual void getDeviceInfo(int& vendorID, int& productID, int& productVersion) const = 0;
73
75 virtual bool isVibrationSupported() = 0;
77 virtual bool setVibration(float left, float right, float duration = -1.0f) = 0;
79 virtual bool setVibration() = 0;
81 virtual void getVibration(float& left, float& right) = 0;
82};
83
85float clampAxis(float x);
86
87} // namespace eve::joystick
float x
Definition AnimClip.cpp:738
float duration
HexVec3 left
HexVec3 right
One connected (or previously connected) joystick / gamepad device. Gamepad axis/button names follow S...
Definition Pad.h:13
virtual bool isGamepadDown(const std::vector< std::string > &buttons) const =0
True if any of the named gamepad buttons is pressed.
virtual bool isDown(int button) const =0
True if the raw button index is currently pressed.
virtual std::string getGamepadMappingString() const =0
Current SDL GameController mapping string for this device.
virtual bool isGamepadDown(const std::string &button) const =0
True if the named gamepad button is pressed.
virtual bool isVibrationSupported()=0
True when haptic/rumble output is available.
virtual float getAxis(int axisindex) const =0
Normalized axis value in [-1, 1] for a raw axis index.
virtual int getButtonCount() const =0
Number of raw joystick buttons.
virtual int getAxisCount() const =0
Number of raw joystick axes.
virtual bool setVibration(float left, float right, float duration=-1.0f)=0
Starts rumble; duration < 0 means until stopped.
virtual void * getHandle() const =0
Native handle (SDL_Joystick* / implementation-defined).
virtual float getGamepadAxis(const std::string &axis) const =0
Named gamepad axis value (SDL GameController axis string).
virtual std::string getHat(int hatindex) const =0
Hat direction string for a hat index (see class brief).
virtual std::string getGUID() const =0
Stable GUID string for mapping lookup.
virtual bool setVibration()=0
Stops active rumble.
virtual bool open(int deviceindex)=0
Opens the device by SDL joystick device index.
virtual bool isDown(const std::vector< int > &buttons) const =0
True if any of the raw button indices is currently pressed.
virtual bool openGamepad(int deviceindex)=0
Opens the device as an SDL GameController.
virtual int getID() const =0
Engine-side stable pad id assigned at construction.
virtual int getHatCount() const =0
Number of hat (D-pad) controls.
virtual std::vector< float > getAxes() const =0
Snapshot of all raw axis values.
virtual void getDeviceInfo(int &vendorID, int &productID, int &productVersion) const =0
USB/HID vendor, product, and version ids when available.
virtual void close()=0
Closes joystick and gamecontroller handles.
virtual std::string getName() const =0
Human-readable device name from the OS/driver.
virtual ~Pad()=default
Releases device handles; safe to call when already closed.
virtual void getVibration(float &left, float &right)=0
Reads the last requested left/right rumble strengths.
virtual bool isGamepad() const =0
True when a GameController mapping is active for this pad.
virtual bool isConnected() const =0
True while the underlying device is still connected.
virtual int getInstanceID() const =0
SDL instance id that stays unique while the device is open.
float clampAxis(float x)
Clamps a raw axis sample into [-1, 1].
Definition Joystick.cpp:14