VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfFogOfWarHandler.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
11 
12 #pragma once
13 
14 #if DtDIS
15 #include <vrfDis/vrfDis.h>
16 #elif DtHLA
17 #ifndef DtHLA_1516
18 #include <vrfHla13/vrfHla13.h>
19 #else
20 #ifdef DtHLA_1516_EVOLVED
21 #include <vrfHla1516e/vrfHla1516e.h>
22 #else
23 #include <vrfHla1516/vrfHla1516.h>
24 #endif
25 #endif
26 #endif
27 
29 
36 #include <vrfStateData/stateData.h>
37 #include <tbb/spin_mutex.h>
38 
39 namespace makVrv
40 {
41  class DtEntityElement;
42  class DtTacticalGraphicElement;
43  class DtAggregateElement;
44 }
45 
46 namespace makVrf
47 {
48  class DtVrfSelectionFilter;
49 
50  namespace VRF_PROTOCOL_NAMESPACE
51  {
54  {
55  public:
57 
58  virtual void setState(const DtStateData*, makVrv::DtSimState& state);
59  };
60 
63  {
64  public:
66 
67  virtual void setState(const DtStateData*, makVrv::DtSimState& state);
68  };
69 
72  {
73  public:
75  };
76 
78  {
79  public:
81  virtual ~DtVrfFogOfWarHandler();
82 
85  virtual void slot_addFogOfWarFilter(const DtVrfSelectionFilter*);
86 
88  virtual void slot_removeFogOfWarFilter(const std::string&);
89 
90  protected:
91 
92  virtual void executeFiltersForEntities();
93 
95  virtual void executeFiltersForEntity(const DtStateData*);
96 
97  virtual void onEntityDiscovered(DtStateData*);
98  virtual void onEntityToBeDestroyed(const DtStateData*);
99 
101  virtual void entityForceIdChanged(int old, int newVal, makVrf::SimStateID);
102  virtual void entityDamageStateChanged(int old, int newVal, makVrf::SimStateID);
103  virtual void checkEntitiesForFOWChange();
104 
105  protected:
108  virtual void executeFilters();
109 
112  virtual bool executeFilters(const makVrv::DtVrlinkSimulatedBaseState*, const makVrf::DtVrfObjectDataState*);
113 
114 
115  protected:
116  virtual void executeFiltersForTacticalGraphics(bool force = false);
117 
119  virtual void executeFiltersForEnvironmental(const DtStateData*);
120 
121  virtual void onEnvironmentalDiscovered(DtStateData*);
122  virtual void onEnvironmentalToBeDestroyed(const DtStateData*);
123  virtual void slot_onFirstTickDriverInitialization();
124  virtual void initializeFilters();
125 
127  virtual void environmentalForceIdChanged(int old, int newVal, makVrf::SimStateID);
128  virtual void environmentalExtendedDataChanged(const DtStateData*);
129  virtual void checkEnvironmentalsForFOWChange();
130 
131  protected:
132  virtual void executeFiltersForAggregates();
133 
135  virtual void executeFiltersForAggregate(const DtStateData*);
136 
137  virtual void onAggregateDiscovered(DtStateData*);
138  virtual void onAggregateToBeDestroyed(const DtStateData*);
139 
141  virtual void aggregateForceIdChanged(int old, int newVal, makVrf::SimStateID);
142  virtual void aggregateDamageStateChanged(int old, int newVal, makVrf::SimStateID);
143  virtual void checkAggregatesForFOWChange();
144  virtual void processNewFogOfWarItems();
145 
146  virtual void entityElementCreated(makVrv::DtEntityElement*);
147  virtual void aggregateElementCreated(makVrv::DtAggregateElement*);
148  virtual void tacticalGraphicElementCreated(makVrv::DtTacticalGraphicElement*);
149 
150  protected:
151  struct Connection
152  {
154  {
155  }
156 
157  virtual ~Connection()
158  {
159  }
160 
161  boost::signals2::connection myToBeDestroyedConnection;
162  boost::signals2::connection myForceIdChangedConnection;
163  boost::signals2::connection myDamageStateChangedConnection;
164  boost::signals2::connection myExtendedDataChangedConnection;
165  };
166 
167  struct EntityConnection : public Connection
168  {
170  EntityConnection(const EntityConnection& orig);
171  virtual ~EntityConnection();
172  };
173 
175  {
178  virtual ~EnvironmentalConnection();
179  };
180 
181  typedef boost::unordered_map<Legion::UInt64, boost::shared_ptr<Connection> > Connections;
183 
184  protected:
187 
188  typedef std::map<std::string, const DtVrfSelectionFilter*> FogOfWarFilters;
190 
193 
198 
202 
203  std::set<makVrf::SimStateID> myEntitiesToCheckForFOW;
205 
206  std::set<makVrf::SimStateID> myEnvironmentalsToCheckForFOW;
208 
209  std::set<makVrf::SimStateID> myAggregatesToCheckForFOW;
211 
212  tbb::spin_mutex myFOWConnectionsMutex;
213 
214  bool myQueuedExecuteFunction = false;
215  typedef std::vector<DtStateData*> StateDataVector;
216 
220 
221  tbb::spin_mutex myDiscoveryMutex;
222  };
223  }
224 }
Class to transfer DtStateData for entities into entity sim data.
Definition: vrfEntitySimDataProcessor.h:29
Class to transfer DtStateData for entities into entity sim data.
Definition: aggregateSimDataProcessor.h:20
unsigned long long SimStateID
Definition: stateDataTypes.h:16
class DtVrfSelectionFilter
Definition: vrfSelectionFilters.h:32
boost::unordered_map< Legion::UInt64, boost::shared_ptr< Connection > > Connections
Definition: vrfFogOfWarHandler.h:181
#define VRF_PROTOCOL_EXPORT
Definition: vrfProtocol.h:24
StateDataVector myNewEnvironmentals
Definition: vrfFogOfWarHandler.h:217
A single Aggregate element. An Aggregate element may be visualized using multiple visualizer sets one...
Definition: DtAggregateElement.h:32
tbb::spin_mutex myAggregatesToCheckForFOWMutex
Definition: vrfFogOfWarHandler.h:210
std::vector< DtStateData * > StateDataVector
Definition: vrfFogOfWarHandler.h:215
Class to transfer DtStateData for entities into entity sim data.
Definition: environmentSimDataProcessor.h:24
DtVrfDriver * myVrfDriver
Definition: vrfFogOfWarHandler.h:185
StateDataVector myNewEntities
Definition: vrfFogOfWarHandler.h:219
Contains integers that determine the context with which to show/hide a visualizer.
DtVrfDataProcessorInterface * myEntityObjectDataProcessor
Definition: vrfFogOfWarHandler.h:197
std::map< std::string, const DtVrfSelectionFilter * > FogOfWarFilters
Definition: vrfFogOfWarHandler.h:188
makVrv::DtSignalConnectionManager myConnections
Definition: vrfFogOfWarHandler.h:191
tbb::spin_mutex myFOWConnectionsMutex
Definition: vrfFogOfWarHandler.h:212
DtVrfFogOfWarEntityDataProcessor myEntityDataProcessor
Definition: vrfFogOfWarHandler.h:194
Connections myFOWConnections
Definition: vrfFogOfWarHandler.h:182
tbb::spin_mutex myEntitiesToCheckForFOWMutex
Definition: vrfFogOfWarHandler.h:204
makVrv::DtSignalConnectionManager myEnvironmentalConnections
Definition: vrfFogOfWarHandler.h:192
Contains makVrv::DtEnvironmentSimDataProcessor class.
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
std::set< makVrf::SimStateID > myAggregatesToCheckForFOW
Definition: vrfFogOfWarHandler.h:209
FogOfWarFilters myFogOfWarFilters
Definition: vrfFogOfWarHandler.h:189
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
#define VRF_PROTOCOL_NAMESPACE
Definition: vrfDis.h:18
boost::signals2::connection myExtendedDataChangedConnection
Definition: vrfFogOfWarHandler.h:164
DtVrfFogOfWarAggregateDataProcessor myAggregateDataProcessor
Definition: vrfFogOfWarHandler.h:196
virtual ~Connection()
Definition: vrfFogOfWarHandler.h:157
tbb::spin_mutex myDiscoveryMutex
Definition: vrfFogOfWarHandler.h:221
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Override class to simply get vrlink entity state filled in correctly.
Definition: vrfFogOfWarHandler.h:62
Override class to simply get vrlink entity state filled in correctly.
Definition: vrfFogOfWarHandler.h:71
Definition: vrfFogOfWarHandler.h:77
boost::signals2::connection myToBeDestroyedConnection
Definition: vrfFogOfWarHandler.h:161
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:31
Override class to simply get vrlink entity state filled in correctly.
Definition: vrfFogOfWarHandler.h:53
A single tactical graphic element. A tactical graphic element may be visualized using multiple visual...
Definition: DtTacticalGraphicElement.h:33
std::set< makVrf::SimStateID > myEntitiesToCheckForFOW
Definition: vrfFogOfWarHandler.h:203
Base class to provide boost signal/slot management.
std::set< makVrf::SimStateID > myEnvironmentalsToCheckForFOW
Definition: vrfFogOfWarHandler.h:206
boost::signals2::connection myDamageStateChangedConnection
Definition: vrfFogOfWarHandler.h:163
DtVrfFogOfWarEnvironmentalDataProcessor myEnvironmentalDataProcessor
Definition: vrfFogOfWarHandler.h:195
makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection * myConnection
Definition: vrfFogOfWarHandler.h:186
A DtSimState is the base class for all state objects. Derived instances of DtSimState will be created...
Definition: DtSimState.h:19
boost::signals2::connection myForceIdChangedConnection
Definition: vrfFogOfWarHandler.h:162
StateDataVector myNewAggregates
Definition: vrfFogOfWarHandler.h:218
tbb::spin_mutex myEnvironmentalsToCheckForFOWMutex
Definition: vrfFogOfWarHandler.h:207
Definition: vrfDataProcessorInterface.h:56
bool myEnabledForTacticalGraphicFiltering
Will only be set to true if receive a fog of war filter that says to enable for tactical graphic filt...
Definition: vrfFogOfWarHandler.h:201
The Driver for DIS.
Definition: vrfDriver.h:88
Definition: vrfObjectDataState.h:87
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73

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)