|
Gin
|
Cross-platform game controller manager. More...
#include <gin_gamecontrollermanager.h>
Inherits juce::Timer.
Classes | |
| class | Backend |
| Platform extension point. More... | |
| class | Listener |
| struct | PollState |
| Snapshot of a single controller's state, written by a Backend. More... | |
Public Member Functions | |
| GameControllerManager () | |
| ~GameControllerManager () override | |
| GameController * | getController (int index) noexcept |
| Returns the controller at the given port, or nullptr if out of range. | |
| int | getNumConnectedControllers () const noexcept |
| Returns the number of currently-connected controllers. | |
| void | setTriggerThreshold (float threshold) noexcept |
| Trigger axis threshold above which the trigger is reported as a digital button press (Button::leftTrigger / Button::rightTrigger). | |
| void | setPollIntervalHz (int hz) |
| Sets the poll rate. | |
| void | addListener (Listener *l) |
| void | removeListener (Listener *l) |
Static Public Attributes | |
| static constexpr int | maxControllers = 8 |
| Maximum number of simultaneously-tracked controllers. | |
Cross-platform game controller manager.
Create one instance — typically as a long-lived member of your application or game state — and register Listeners to receive connect/disconnect, button, and axis events on the JUCE message thread.
class Game : private gin::GameControllerManager::Listener
{
public:
Game() { controllers.addListener (this); }
void controllerConnected (gin::GameController& c) override
{
DBG ("Connected: " << c.getName() << " on port " << c.getIndex());
}
void controllerButtonPressed (gin::GameController& c,
gin::GameController::Button b) override
{
if (b == gin::GameController::Button::faceDown)
jump();
}
private:
gin::GameControllerManager controllers;
};
The manager polls platform backends on a timer (default 60 Hz) and diffs state against the previous frame to emit listener callbacks. Polling rate can be changed with setPollIntervalHz().
| GameControllerManager::GameControllerManager | ( | ) |
|
override |
|
noexcept |
Returns the controller at the given port, or nullptr if out of range.
The returned pointer is stable for the lifetime of the manager. Use GameController::isConnected() to check whether anything is plugged in.
|
noexcept |
Returns the number of currently-connected controllers.
Trigger axis threshold above which the trigger is reported as a digital button press (Button::leftTrigger / Button::rightTrigger).
Default 0.5.
Sets the poll rate.
Range is clamped to 10..240 Hz. Default 60.
Maximum number of simultaneously-tracked controllers.