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>
20 #include <vrvUtil/DtUnicode.h>
21 #include <vrvCore/DtStateView.h>
22 #include <vrvCore/DtEntityState.h>
24 #include <vlpi/entityType.h>
25 
26 #include <string>
27 #include <map>
28 
29 
30 #include <boost/function.hpp>
31 #include <boost/unordered_set.hpp>
32 #include <boost/unordered_map.hpp>
33 
34 namespace makVrv
35 {
36  class DtDe;
37  class DtRecordSettingsBackupInterface;
38 }
39 
40 struct _SDL_Joystick;
41 union SDL_Event;
42 
43 class DtUUID;
44 class DtSimMessage;
45 
46 namespace makVrf
47 {
48  class DtGuiThreadVrfRemoteController;
49  class DtVrfGuiJoystickControlHandler;
50 
54  {
55  public:
56 
57  typedef std::map<DtString, std::map<DtString, DtRwJoystickControl> > JoystickControls;
58  typedef std::map<DtString, JoystickControls> JoystickControlsMap;
59 
62 
65 
67  static DtVrfGuiJoystickControlManager& instance(makVrv::DtDe& de);
68 
70  static void registerInstance(makVrv::DtDe& de, DtVrfGuiJoystickControlManager*);
71 
74  virtual void requestJoystickControlInformation(const DtUUID&);
75 
77  virtual JoystickControls joystickControlInformation(makVrv::DtUniqueID) const;
78  virtual JoystickControls joystickControlInformation(const DtUUID&) const;
79  virtual JoystickControls joystickControlInformation(const DtEntityType&) const;
80  virtual bool hasJoystickControlInformation(makVrv::DtUniqueID) const;
81  virtual bool hasJoystickControlInformation(const DtUUID&) const;
82  virtual bool hasJoystickControlInformation(const DtEntityType&) const;
83 
89  virtual void takeControlOf(makVrv::DtUniqueID, const std::string& configuration, const std::set<std::string>& functionalGroups);
90  virtual void takeControlOf(const DtUUID&, const std::string& configuration, const std::set<std::string>& functionalGroups);
91 
93  virtual bool inControlOf(makVrv::DtUniqueID) const;
94  virtual bool inControlOf(const DtUUID&) const;
95 
97  virtual bool inControlOf(const DtUUID&, const std::string&) const;
98 
100  virtual bool canAnyFunctionGroupBeAssigned(makVrv::DtUniqueID, const std::string& configuration) const;
101  virtual bool canAnyFunctionGroupBeAssigned(const DtUUID&, const std::string& configuration) const;
102 
105  virtual void releaseControlOf(makVrv::DtUniqueID, const std::set<std::string>& functionalGroups = std::set<std::string>(),
106  bool objectRemoved = false);
107  virtual void releaseControlOf(const DtUUID&, const std::set<std::string>& functionalGroups = std::set<std::string>(),
108  bool objectRemoved = false);
109 
111  virtual void releaseControlOfAll();
112 
113  const JoystickControlsMap& joystickControlsMap() const { return myJoystickControlsMap; };
114 
116  virtual std::set<std::string> uncontrolledFunctionGroups(makVrv::DtUniqueID) const;
117  virtual std::set<std::string> uncontrolledFunctionGroups(const DtUUID&) const;
118 
120  virtual std::set<std::string> functionGroupsDefinedFor(makVrv::DtUniqueID) const;
121  virtual std::set<std::string> functionGroupsDefinedFor(const DtUUID&) const;
122 
124  virtual bool canFunctionGroupBeAssigned(const DtUUID& uuid,
125  const std::string& configuration, const std::string& functionGroup) const;
126 
128  virtual bool canHaveJoystickControls(makVrv::DtUniqueID id) const;
129  virtual bool canHaveJoystickControls(const DtUUID&) const;
130 
132  boost::signals2::signal<void (const DtUUID&, const std::string& configuration, const std::set<std::string>&)> signal_hasTakenControl;
133 
135  boost::signals2::signal<void (const DtUUID&, const std::set<std::string>&)> signal_hasReleasedControl;
136 
138  boost::signals2::signal<void (const DtEntityType&, const JoystickControls&)> signal_joystickControlsAdded;
139 
140  protected:
141  virtual void initialize();
142 
144  virtual void slot_stateAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
145 
147  virtual void processJoystickControlsResponse(DtSimMessage*);
148 
149  virtual void slot_stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* sv);
150 
151  virtual void cleanupHandlers();
152 
153  protected:
155 
158 
159  boost::unordered_set<DtUUID> myAwaitingResponses;
160 
162 
163  typedef boost::unordered_map<DtUUID, DtVrfGuiJoystickControlHandler*> InControlOf;
165 
166  std::vector<DtVrfGuiJoystickControlHandler*> myCleanupQueue;
167  };
168 }
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:157
std::map< DtString, std::map< DtString, DtRwJoystickControl > > JoystickControls
Definition: vrfGuiJoystickControlManager.h:57
boost::unordered_set< DtUUID > myAwaitingResponses
Definition: vrfGuiJoystickControlManager.h:159
boost::unordered_map< DtUUID, DtVrfGuiJoystickControlHandler * > InControlOf
Definition: vrfGuiJoystickControlManager.h:163
std::map< DtString, JoystickControls > JoystickControlsMap
Definition: vrfGuiJoystickControlManager.h:58
Contains makVrv::DtStateView class.
This class is a thread-safe API to the DtVrfRemoteController. Since DtVrfRemoteController is instanti...
Definition: guiThreadVrfRemoteController.h:99
#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:53
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:138
InControlOf myInControlOf
Definition: vrfGuiJoystickControlManager.h:164
makVrv::DtSignalConnectionManager myConnections
Definition: vrfGuiJoystickControlManager.h:156
makVrv::DtDe & myDe
Definition: vrfGuiJoystickControlManager.h:154
Contains makVrv::DtVirtualBaseClass class.
DtGuiThreadVrfRemoteController & myRemoteController
Definition: vrfGuiJoystickControlManager.h:161
File: simMsg.h.
Definition: simMessage.h:35
const JoystickControlsMap & joystickControlsMap() const
Definition: vrfGuiJoystickControlManager.h:113
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtVrlinkSimulatedEntityState class.
std::vector< DtVrfGuiJoystickControlHandler * > myCleanupQueue
Definition: vrfGuiJoystickControlManager.h:166
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:72

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)