VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
eventManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
9 #include <tbb/spin_mutex.h>
10 #include <map>
11 #include <boost/signals2.hpp>
12 
17 
18 class DtEvent;
19 class DtEventManager;
20 
21 typedef DtEventManager* (*DtEventManagerCreatorFcn)();
22 
24 {
25 private:
29  DtEventManager& operator=(const DtEventManager&);
30 
31 public:
33  virtual ~DtEventManager();
34 
35  virtual void tick();
36 
38  virtual void addEvent(const DtEvent&);
39 
43  static void setEventManagerCreatorFcn(DtEventManagerCreatorFcn fcn);
44  static DtEventManager* createEventManager();
46 
49  virtual void setProcessEventsImmediately(bool b);
51  {
52  return myProcessEventsImmediately;
53  }
54 
56  virtual void selfReflect(unsigned int i);
57  virtual void doNotSelfReflect(unsigned int i);
58 
60  virtual bool selfReflecting() const;
61 
62 public:
63 
64  typedef boost::signals2::signal<void (const DtEvent&)> EventSignal;
65 
68 
69  virtual EventSignal& signalForEvent(DtEvent::EventType type);
71 
73  EventSignal& signalForFireEvent();
74  EventSignal& signalForDetonationEvent();
75  EventSignal& signalForSimInterfaceContentMessage();
76  EventSignal& signalForDataInteraction();
77  EventSignal& signalForSignalInteraction();
78  EventSignal& signalForCommentInteraction();
79  EventSignal& signalForSensorFieldOfViewControlEvent();
80  EventSignal& signalForStartResumeInteraction();
81  EventSignal& signalForStopFreezeInteraction();
82  EventSignal& signalDiGuyActionEvent();
83 
84 #if DtHLA
85  EventSignal& signalForInfluenceInteraction();
86  EventSignal& signalDiGuyEndActionEvent();
87 #endif
88 
89  EventSignal& signalForServiceRequestEvent();
90  EventSignal& signalForResupplyOfferEvent();
91  EventSignal& signalForResupplyReceivedEvent();
92  EventSignal& signalForResupplyCancelEvent();
93 
94 public:
96  virtual void addEvent(const DtDetonationInteraction&);
97  virtual void addEvent(const DtFireInteraction&);
98  virtual void addEvent(const DtAcknowledgeInteraction&);
99  virtual void addEvent(const DtStopFreezeInteraction&);
100  virtual void addEvent(const DtStartResumeInteraction&);
101  virtual void addEvent(const DtDataInteraction&);
102  virtual void addEvent(const DtSignalInteraction&);
103  virtual void addEvent(const DtCommentInteraction&);
104  virtual void addEvent(const DtSensorFieldOfViewControlInter&);
105  virtual void addevent(const DtSimInterfaceContent&);
106 
107 #if DtHLA
108  virtual void addEvent(const DtDataInteractionWithTransportType&);
109  virtual void addEvent(const DtInfluenceInteraction&);
110  virtual void addEvent(const DtEndGestureInter&);
111  virtual void addEvent(const DtExecuteGestureInter&);
112 #else
113  virtual void addEvent(const DtDIGuyCustomPdu&);
114 #endif
115  virtual void addEvent(const DtServiceRequestInteraction&);
116  virtual void addEvent(const DtResupplyOfferInteraction&);
117  virtual void addEvent(const DtResupplyRecInteraction&);
118  virtual void addEvent(const DtResupplyCancelInteraction&);
119 
120 protected:
122  virtual void postEvent(const DtEvent&);
123 
124  virtual void processEvent(const DtEvent&);
125 
127  virtual bool wantsToProcessEvent(const DtEvent&) const;
128 
129 protected:
130  tbb::spin_mutex myMutex;
131  std::vector<DtEvent*> myEvents;
132 
133  tbb::spin_mutex myCallbackMutex;
134  typedef std::map<DtEvent::EventType, EventSignal*> EventCallbackMap;
136 
138 
140 
141  std::set<unsigned int> myDoNotSelfReflect;
142 };
Definition: events.h:35
Instances of DtEndGestureInter are used to store state data for DIGuyInteraction.EndGesture interacti...
Definition: endGestureInterHLA.h:27
boost::signals2::signal< void(const DtEvent &)> EventSignal
Definition: eventManager.h:64
std::map< DtEvent::EventType, EventSignal * > EventCallbackMap
Definition: eventManager.h:134
Definition: events.h:49
Definition: eventManager.h:23
EventCallbackMap myEventCallbackMap
Definition: eventManager.h:135
EventType
Definition: events.h:52
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
std::set< unsigned int > myDoNotSelfReflect
Definition: eventManager.h:141
bool processEventsImmediately() const
Definition: eventManager.h:50
Instances of DtSensorFieldOfViewControlInter are used to store state data for SensorFieldOfViewContro...
Definition: sensorFieldOfViewControlInterDIS.h:51
Instances of DtExecuteGestureInter are used to store state data for DIGuyInteraction.ExecuteGesture interactions.
Definition: executeGestureInterHLA.h:27
Instances of DtInfluenceInter are used to store state data for Influence interactions.
Definition: influenceInteractionHLA.h:27
#define DT_DLL_vrfMsgTransport
This file is used to determine how to build.
Definition: vrfMsgTransportDefines.h:28
tbb::spin_mutex myCallbackMutex
Definition: eventManager.h:133
DtEventManager *(* DtEventManagerCreatorFcn)()
Definition: eventManager.h:21
Definition: simInterfaceContent.h:45
static DtEventManagerCreatorFcn theEventManagerCreatorFcn
Definition: eventManager.h:137
std::vector< DtEvent * > myEvents
Definition: eventManager.h:131
bool myProcessEventsImmediately
Definition: eventManager.h:139
tbb::spin_mutex myMutex
Definition: eventManager.h:130

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)