VR-Forces 4.7 Class Documentation
 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 
25 #include <string>
26 #include <map>
27 
28 #include <boost/signals.hpp>
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 
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  boost::signal<void (const DtUUID&, const std::string& configuration, const std::set<std::string>&)> signal_hasTakenControl;
128 
130  boost::signal<void (const DtUUID&, const std::set<std::string>&)> signal_hasReleasedControl;
131 
133  boost::signal<void (const DtEntityType&, const JoystickControls&)> signal_joystickControlsAdded;
134 
135  protected:
136  virtual void initialize();
137 
139  virtual void slot_stateAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
140 
142  virtual void processJoystickControlsResponse(DtSimMessage*);
143 
144  virtual void slot_stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* sv);
145 
146  virtual void cleanupHandlers();
147 
148  protected:
150 
153 
154  boost::unordered_set<DtUUID> myAwaitingResponses;
155 
157 
158  typedef boost::unordered_map<DtUUID, DtVrfGuiJoystickControlHandler*> InControlOf;
160 
161  std::vector<DtVrfGuiJoystickControlHandler*> myCleanupQueue;
162  };
163 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)