VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfGuiJoystickControlManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 
12 #pragma once
13 
14 #include <vrfGuiCore/vrfGuiCore.h>
21 #include <vrvUtil/DtUnicode.h>
23 #include <vlpi/entityType.h>
24 
25 #include <string>
26 #include <map>
27 
28 
29 #include <boost/function.hpp>
30 #include <boost/unordered_set.hpp>
31 #include <boost/unordered_map.hpp>
32 
33 namespace makVrv
34 {
35  class DtDe;
36  class DtRecordSettingsBackupInterface;
37 }
38 
39 struct _SDL_Joystick;
40 union SDL_Event;
41 
42 class DtUUID;
43 class DtSimMessage;
44 
45 namespace makVrf
46 {
47  class DtGuiThreadVrfRemoteController;
48  class DtVrfGuiJoystickControlHandler;
49 
53  {
54  public:
55 
56  typedef std::map<DtString, std::map<DtString, DtRwJoystickControl> > JoystickControls;
57  typedef std::map<DtString, JoystickControls> JoystickControlsMap;
58 
61 
63  virtual ~DtVrfGuiJoystickControlManager() override;
64 
66  static DtVrfGuiJoystickControlManager& instance(makVrv::DtDe& de);
67 
69  static void registerInstance(makVrv::DtDe& de, DtVrfGuiJoystickControlManager*);
70 
73  virtual void requestJoystickControlInformation(const DtUUID&);
74 
76  virtual JoystickControls joystickControlInformation(makVrv::DtUniqueID) const;
77  virtual JoystickControls joystickControlInformation(const DtUUID&) const;
78  virtual JoystickControls joystickControlInformation(const DtEntityType&) const;
79  virtual bool hasJoystickControlInformation(makVrv::DtUniqueID) const;
80  virtual bool hasJoystickControlInformation(const DtUUID&) const;
81  virtual bool hasJoystickControlInformation(const DtEntityType&) const;
82 
88  virtual void takeControlOf(makVrv::DtUniqueID, const std::string& configuration, const std::set<std::string>& functionalGroups);
89  virtual void takeControlOf(const DtUUID&, const std::string& configuration, const std::set<std::string>& functionalGroups);
90 
92  virtual bool inControlOf(makVrv::DtUniqueID) const;
93  virtual bool inControlOf(const DtUUID&) const;
94 
96  virtual bool inControlOf(const DtUUID&, const std::string&) const;
97 
99  virtual bool canAnyFunctionGroupBeAssigned(makVrv::DtUniqueID, const std::string& configuration) const;
100  virtual bool canAnyFunctionGroupBeAssigned(const DtUUID&, const std::string& configuration) const;
101 
104  virtual void releaseControlOf(makVrv::DtUniqueID, const std::set<std::string>& functionalGroups = std::set<std::string>(),
105  bool objectRemoved = false);
106  virtual void releaseControlOf(const DtUUID&, const std::set<std::string>& functionalGroups = std::set<std::string>(),
107  bool objectRemoved = false);
108 
110  virtual void releaseControlOfAll();
111 
112  const JoystickControlsMap& joystickControlsMap() const { return myJoystickControlsMap; };
113 
115  virtual std::set<std::string> uncontrolledFunctionGroups(makVrv::DtUniqueID) const;
116  virtual std::set<std::string> uncontrolledFunctionGroups(const DtUUID&) const;
117 
119  virtual std::set<std::string> functionGroupsDefinedFor(makVrv::DtUniqueID) const;
120  virtual std::set<std::string> functionGroupsDefinedFor(const DtUUID&) const;
121 
123  virtual bool canFunctionGroupBeAssigned(const DtUUID& uuid,
124  const std::string& configuration, const std::string& functionGroup) const;
125 
127  virtual bool canHaveJoystickControls(makVrv::DtUniqueID id) const;
128  virtual bool canHaveJoystickControls(const DtUUID&) const;
129 
131  boost::signals2::signal<void (const DtUUID&, const std::string& configuration, const std::set<std::string>&)> signal_hasTakenControl;
132 
134  boost::signals2::signal<void (const DtUUID&, const std::set<std::string>&)> signal_hasReleasedControl;
135 
137  boost::signals2::signal<void (const DtEntityType&, const JoystickControls&)> signal_joystickControlsAdded;
138 
139  protected:
140  virtual void initialize();
141  virtual void slot_stateAdded(DtSimObjectReference sv);
142  virtual void slot_stateRemoved(DtSimObjectReference sv);
143 
145  virtual void processJoystickControlsResponse(DtSimMessage*);
146 
147  virtual void cleanupHandlers();
148 
149  protected:
151 
154 
155  boost::unordered_set<DtUUID> myAwaitingResponses;
156 
158 
159  typedef boost::unordered_map<DtUUID, DtVrfGuiJoystickControlHandler*> InControlOf;
161 
162  std::vector<DtVrfGuiJoystickControlHandler*> myCleanupQueue;
163  };
164 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
JoystickControlsMap myJoystickControlsMap
Definition: vrfGuiJoystickControlManager.h:153
std::map< DtString, std::map< DtString, DtRwJoystickControl > > JoystickControls
Definition: vrfGuiJoystickControlManager.h:56
boost::unordered_set< DtUUID > myAwaitingResponses
Definition: vrfGuiJoystickControlManager.h:155
boost::unordered_map< DtUUID, DtVrfGuiJoystickControlHandler * > InControlOf
Definition: vrfGuiJoystickControlManager.h:159
std::map< DtString, JoystickControls > JoystickControlsMap
Definition: vrfGuiJoystickControlManager.h:57
This class is a thread-safe API to the DtVrfRemoteController. Since DtVrfRemoteController is instanti...
Definition: guiThreadVrfRemoteController.h:97
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
This class will be used to query about current joysticks and the capabilities they might have...
Definition: vrfGuiJoystickControlManager.h:52
boost::signals2::signal< void(const DtEntityType &, const JoystickControls &)> signal_joystickControlsAdded
Signal sent when a new entity type has been added with joystick information.
Definition: vrfGuiJoystickControlManager.h:137
InControlOf myInControlOf
Definition: vrfGuiJoystickControlManager.h:160
makVrv::DtSignalConnectionManager myConnections
Definition: vrfGuiJoystickControlManager.h:152
makVrv::DtDe & myDe
Definition: vrfGuiJoystickControlManager.h:150
Contains makVrv::DtVirtualBaseClass class.
DtGuiThreadVrfRemoteController & myRemoteController
Definition: vrfGuiJoystickControlManager.h:157
File: simMsg.h.
Definition: simMessage.h:35
const JoystickControlsMap & joystickControlsMap() const
Definition: vrfGuiJoystickControlManager.h:112
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::vector< DtVrfGuiJoystickControlHandler * > myCleanupQueue
Definition: vrfGuiJoystickControlManager.h:162
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Base class to provide boost signal/slot management.
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

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)