28 #include <boost/function.hpp>
33 #include <unordered_map>
42 class DtRecordSettingsBackupInterface;
43 class DtGenericControllerEvent;
65 virtual void tick(
bool sentEvents)
110 : controllerName(orig.controllerName)
111 , deviceNumber(orig.deviceNumber)
133 typedef std::unordered_map<int, ControllerInformation>
Controllers;
145 virtual void flushAllEvents();
158 virtual bool switchControlActive(
const std::string& configuration,
const std::string& switchGroup)
const;
173 virtual void addJoystickControlFunction(
const std::string& functionGroup,
const std::string&
function,
175 virtual void addJoystickControlFunction(
const std::string& functionGroup,
const std::string&
function,
176 double minimumValue,
double maximumValue,
bool cycle =
false,
const std::string& description =
"");
180 virtual std::set<std::string> functionGroupsSimilarTo(
const std::string& functionGroup)
const;
189 virtual DtUnicode gameControllerName(
const std::string& configuration,
190 const std::string& functionGroup,
const std::string& functionCode)
const;
191 virtual DtUnicode gameControllerFunction(
const std::string& configuration,
192 const std::string& functionGroup,
const std::string& functionCode)
const;
196 virtual int deviceIndexFromGuid(
const std::string&)
const;
197 virtual int deviceIndexFromDeviceName(
const std::string&)
const;
198 virtual int firstDeviceIndexOfConrollerType(
int)
const;
201 std::vector<std::string> functionsForFunctionGroup(
const std::string&)
const;
204 virtual void setFavoriteConfiguration(
const std::string&);
205 virtual const std::string& favoriteConfiguration()
const;
209 virtual void increaseLockCount();
210 virtual void decreaseLockCount();
211 virtual bool locked()
const;
213 virtual double joystickDeadzonePercentage(
int)
const;
214 virtual void setJoystickDeadzonePercentage(
int,
double);
239 boost::signals2::signal<void (
const std::string& functionGroup,
const std::string&
function,
261 virtual std::vector<std::string> configurations()
const;
267 virtual int numJoystickAxis(
int deviceIndex)
const;
270 virtual int numJoystickButtons(
int deviceIndex)
const;
273 virtual int numJoystickHats(
int deviceIndex)
const;
277 virtual bool needsTransition(
const std::string& functionalGroup,
const std::string&
function)
const;
280 virtual bool toggle(
const std::string& functionalGroup,
const std::string&
function)
const;
283 virtual bool cycle(
const std::string& functionGroup,
const std::string&
function)
const;
286 virtual void getFunctionMinMaxValues(
const std::string& functionalGroup,
const std::string&
function,
287 double& min,
double& max)
const;
290 virtual void loadDefaults(
bool fromFactory =
false);
294 return mySettingsBackup;
299 return mySettingsBackup;
303 virtual Controllers controllers()
const;
306 void exportSettings(
const std::string& fileName);
309 void importSettings(
const std::string& fileName);
313 const std::string& configuration,
const std::string& functionGroup,
const std::string&
function)
const;
316 virtual std::string descriptionFor(
const std::string& functionGroup,
const std::string&
function)
const;
319 virtual void removeAllGameControllers();
322 virtual void removeGameControlInformationFor(
323 const std::string& configuration,
const std::string& functionGroup,
const std::string&
function);
326 virtual void addGameControlInformationFor(
327 const std::string& configuration,
const std::string& functionGroup,
const std::string&
function,
330 virtual void setAutoSave(
bool);
331 virtual bool autoSave()
const;
334 virtual bool hasConfigurationName(
const std::string&)
const;
337 virtual void addConfiguration(
const std::string&);
340 virtual void removeConfiguration(
const std::string&);
343 virtual bool functionGroupSpecified(
const std::string& configuration,
const std::string& functionGroup,
344 bool all =
false)
const;
347 virtual bool canFunctionGroupBeAssigned(
const std::string& configuration,
const std::string& functionGroup,
348 bool all =
false)
const;
351 virtual void renameConfiguration(
const std::string& old,
const std::string& renamed);
353 virtual void saveAsDefaults();
357 const std::string& configuration,
const std::set<std::string>&)
const;
363 const std::string& configuration,
const std::string&)
const;
368 std::vector<std::string>& fileNames) {};
377 static int sdlEventFilterCallback(
void *userdata, SDL_Event * event);
378 virtual int sdlEventFilter(SDL_Event * event);
379 virtual const std::string& className()
override;
385 virtual void sendNoQueuedEvents();
391 virtual void initializeJoysticks();
394 virtual void initializeGameControllers();
397 virtual void initializeKeyboard();
400 virtual void addJoystickDevice(
int deviceId);
403 virtual void removeJoystickDevice(
int deviceId);
boost::signals2::signal< void(int, int)> signal_joystickError
Signal sent when there is an error with a particular joystick.
Definition: joystickManager.h:220
boost::signals2::signal< void(const std::string &)> signal_configurationRemoved
Signal sent when a configuration is removed.
Definition: joystickManager.h:246
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtRecordSettingsBackupInterface * settingsBackup()
Definition: joystickManager.h:297
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
const DtJoystickConfigurations & joystickConfigurations()
Definition: joystickManager.h:260
boost::signals2::signal< void(const DtJoystickConfigurationSetting &)> signal_controllerInformationAdded
Signal sent when controller information is added.
Definition: joystickManager.h:236
virtual void noQueuedEvents()
Called when there were events but now there are no longer queued events.
Definition: joystickManager.h:86
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
boost::signals2::signal< void(const std::string &, const std::string &)> signal_controllerInformationRemoved
Signal sent when controller information is removed for the function group and function.
Definition: joystickManager.h:233
virtual void gameControlInformationAdded(const std::string &configuration, const std::string &functionGroup, const std::string &function, const DtGameControlInformation &i)
Called when game controller information is added or updated for the given configuration, function group and function.
Definition: joystickManager.h:92
Handler that you insert into the manager to be made aware of game controller events. A subclass of this handler can be added to the joystick manager to be made aware of any joystick/keyboard event.
Definition: joystickManager.h:47
boost::signals2::signal< void(const std::string &)> signal_configurationAdded
Signal sent when a new configuration is added.
Definition: joystickManager.h:243
std::vector< GameControl > GameControlInformation
Definition: joystickConfigurations.h:105
This class will be used to query about current joysticks and the capabilities they might have...
Definition: joystickManager.h:101
const DtRecordSettingsBackupInterface * settingsBackup() const
Definition: joystickManager.h:292
virtual bool filterGameControllerEvent(DtGenericControllerEvent *)
Return true to filter this Game controller Event.
Definition: joystickManager.h:80
A set of settings that will encompass all function groups and functions currently known...
Definition: joystickConfigurations.h:92
boost::signals2::signal< void(const DtJoystickConfigurations &)> signal_configurationsChanged
Signal send when joystick settings have changed.
Definition: joystickManager.h:229
virtual void gameControllerDeviceRemoved(int)
Called when a game controller device is removed.
Definition: joystickManager.h:70
DtSignalConnectionManager myConnections
Definition: joystickManager.h:418
std::map< std::string, std::set< int > > JoysticksByGuid
Definition: joystickManager.h:415
boost::signals2::signal< void(const std::string &functionGroup, const std::string &function, const DtFunctionGroupInformation &)> signal_addedJoystickControlFunction
Signal sent when a joystick control function is added.
Definition: joystickManager.h:240
std::vector< DtGameControllerEventHandler * > GameControllerEventHandlers
Returns the game controller event handlers.
Definition: joystickManager.h:186
Definition: gameControllerEvents.h:33
DtGameControllerEventHandler()
Definition: joystickManager.h:50
int myLockCount
Definition: joystickManager.h:425
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:19
boost::signals2::signal< void(const std::string &, const std::string &)> signal_favoriteConfigurationChanged
Signal sent when the favorite configuration has changed. Will send old/new favorite.
Definition: joystickManager.h:255
boost::signals2::signal< void(bool)> signal_joystickManagerLockedForUpdates
Signal sent when lock state changes.
Definition: joystickManager.h:252
#define DT_DLL_JOYSTICKCORE
Contains DLL export macros.
Definition: joystickCore.h:25
bool myAmEventProcessor
Definition: joystickManager.h:431
The abstract Channel Class.
Definition: DtChannel.h:35
boost::signals2::signal< void(const std::string &old, const std::string &renamed)> signal_configurationRenamed
Signal sent when a configuration is renamed.
Definition: joystickManager.h:249
boost::signals2::signal< void(int)> signal_controllerRemoved
Signal sent when a joystick is removed (by device index.
Definition: joystickManager.h:226
boost::signals2::signal< void()> signal_clear
Signal sent when joystick information is cleared.
Definition: joystickManager.h:217
Contains makVrv::DtVirtualBaseClass class.
DtGameControllerKeyboardEvent class wraps a keyboard event.
Definition: gameControllerEvents.h:60
Interface for an event processor for a channel.
JoystickEventQueue myJoystickEventQueue
Definition: joystickManager.h:441
ControllerInformation myKeyboardInformation
Definition: joystickManager.h:438
DtGameControllerKeyboardEvent * myKeyboardControllerEvent
Definition: joystickManager.h:429
GameControllerEventHandlers myGameControllerEventHandlers
Definition: joystickManager.h:423
DtJoystickConfigurations is a collection of joystick settings, each contained within a configuration...
Definition: joystickConfigurations.h:229
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::map< int, double > JoystickDeadzonePercent
Default deadzone percent by joystick device. Default is 2%.
Definition: joystickManager.h:435
DtGameControllerJoystickEvent wraps a joystick event.
Definition: gameControllerEvents.h:91
Joysticks myJoysticks
Definition: joystickManager.h:413
const GameControllerEventHandlers & gameControllerEventHandlers() const
Definition: joystickManager.h:187
GameControllerEventType
Definition: gameControllerEvents.h:26
std::map< int, DtJoystickDevice > Joysticks
Definition: joystickManager.h:412
DtDe & myDe
Definition: joystickManager.h:410
Definition: gameControllerEvents.h:28
std::vector< DtGenericControllerEvent * > JoystickEventQueue
Definition: joystickManager.h:440
Base class to provide boost signal/slot management.
JoystickDeadzonePercent myJoystickDeadzonePercent
Definition: joystickManager.h:436
boost::signals2::signal< void(const ControllerInformation &)> signal_controllerAdded
Signal sent when a joystick is added.
Definition: joystickManager.h:223
JoysticksByGuid myJoysticksByGuid
Definition: joystickManager.h:416
virtual void gameControllerDeviceAdded(int)
Called when a game controller device is added.
Definition: joystickManager.h:75
boost::signals2::signal< void(const std::string &, const DtJoystickConfigurationSettings &)> signal_settingsChanged
Definition: joystickManager.h:230
virtual void getSplitRecord(std::vector< DtJoystickConfigurations > &rec, std::vector< std::string > &fileNames)
To support writing element definitions in folders as multiple files not implemented.
Definition: joystickManager.h:367
virtual bool canProcessEvent(DtGenericControllerEvent *) const
Return true if this event can be processed by this handler. Return of false will filter the event for...
Definition: joystickManager.h:58
DtGameControllerJoystickEvent * myJoystickControllerEvent
Used for event filtering so do not have to create on stack every time.
Definition: joystickManager.h:428
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
virtual ~DtGameControllerEventHandler()
Definition: joystickManager.h:51
virtual void tick(bool sentEvents)
Called after game controller events are processed in any given tick. If sentEvents is true some game ...
Definition: joystickManager.h:65
bool mySentEvent
Definition: joystickManager.h:432
The makVrv::DtRecordSettingsBackupInterface provides an interface to record-based backups...
Definition: DtRecordSettingsBackup.h:23
DtRecordSettingsBackupInterface * mySettingsBackup
Definition: joystickManager.h:421
The DtEventProcessorInterface defines the generic interface for classes which handle input events...
Definition: DtEventProcessorInterface.h:34
DtJoystickConfigurations myJoystickConfigurations
Definition: joystickManager.h:420
std::unordered_map< int, ControllerInformation > Controllers
Definition: joystickManager.h:133
virtual void addRecords(DtJoystickConfigurations &recs, DtJoystickConfigurations &combinedRec)
To support writing element definitions in folders as multiple files not implemented.
Definition: joystickManager.h:372