11 #include <vl/reflectedObjectList.h>
13 #include <boost/signals2.hpp>
14 #include <tbb/spin_mutex.h>
20 class DtReflectedAggregate;
29 class DtBaseEntityStateRepository;
34 class DtReflectedActiveSonar;
35 class DtReflectedActiveSonarList;
36 class DtReflectedPropulsionNoise;
37 class DtReflectedPropulsionNoiseList;
38 class DtReflectedEmitterSystem;
39 class DtReflectedIffList;
41 class DtReflectedDesignator;
42 class DtReflectedRadioTransmitter;
43 class DtReflectedRadioReceiver;
47 class DtReflectedRadioReceiverList;
56 #include <boost/signal.hpp>
58 #if DtHLA_1516_EVOLVED
59 #include <tbb/queuing_mutex.h>
60 #include <tbb/atomic.h>
64 namespace makVrfVrlinkExtToolkit
66 class DtReflectedExtendedAttributesObjectList;
72 class DtStateDataManager;
73 class DtRemoteStateComponentNetInterface;
74 class DtVrlinkNetworkInterface;
81 DtRemoteObjectManager(DtVrlinkNetworkInterface*);
84 virtual ~DtRemoteObjectManager();
87 virtual void printReflectedObjectCounts()
const;
95 virtual void setRequestUpdates(
bool shouldRequestUpdates);
97 virtual void beginFrame();
105 virtual void finishFrame();
108 virtual bool stateDataAboutToBeRemoved(
const DtStateData* sd);
113 virtual bool hasDiscoveredObjects()
const;
116 virtual void setDefaultObjectTimeout(
int);
119 return myDefaultObjectTimeout;
125 virtual bool acceptRemoteEnvironmental(
const DtEntityType& et)
const;
127 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
130 virtual void setEnabled(
bool);
138 return myStateDataManager;
143 return myRemoteEntitiesList;
148 return myRemoteAggregateEntitiesList;
153 return myRemoteEnvironmentalsList;
158 return myRemoteDesignatorsList;
163 return myRemoteActiveSonarList;
168 return myRemotePropulsionNoiseList;
173 return myRemoteTransmitterList;
178 return myRemoteNavAidTransmitterList;
183 return myRemoteReceiverList;
188 return myReflectedDynamicTerrainList;
193 return myReflectedIffList;
196 virtual void setDynamicTerrainStateData(
DtStateData*);
197 virtual void finishDiscovery();
198 virtual void setNumCallbackThreads(
int);
200 virtual bool hasDiscoveryJobs()
const;
203 virtual bool isLocal(
const DtBaseEntityStateRepository& stateRep);
210 virtual bool selfReflecting()
const;
215 virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
221 friend class RemoteEntityCreator;
225 friend class RemoteAggregateCreator;
234 virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
235 virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
236 virtual DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
238 virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
239 virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
240 virtual DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
242 virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
243 virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
244 virtual DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
246 virtual void processRadioTransmitterAddedCallback(DtReflectedRadioTransmitter* tran);
247 virtual void processRadioTransmitterRemovedCallback(DtReflectedRadioTransmitter* tran);
248 virtual DtBoolean processRadioTransmitterDiscoveryCriteria(DtReflectedRadioTransmitter*);
252 virtual DtBoolean processNavAidRadioTransmitterDiscoveryCriteria(
DtReflectedNavAid*);
254 virtual void processRadioReceiverAddedCallback(DtReflectedRadioReceiver* tran);
255 virtual void processRadioReceiverRemovedCallback(DtReflectedRadioReceiver* tran);
257 virtual void processIffAddedCallback(DtReflectedIff* des);
258 virtual void processIffRemovedCallback(DtReflectedIff* des);
259 virtual DtBoolean processIffDiscoveryCriteria(DtReflectedIff*);
261 virtual void processEmitterSystemAddedCallback(DtReflectedEmitterSystem* des);
262 virtual void processEmitterSystemRemovedCallback(DtReflectedEmitterSystem* des);
263 virtual DtBoolean processEmitterSystemDiscoveryCriteria(DtReflectedEmitterSystem*);
265 friend class RemoteEnvironmentalCreator;
268 virtual void startingJob();
269 virtual void stoppingJob();
277 virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
278 virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
326 virtual bool processEntityDiscoveryCriteria(
334 virtual bool processAggregateDiscoveryCriteria(
335 DtReflectedAggregate* aggregate);
340 virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
342 virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
343 virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
344 virtual void createRemoteRadioTransmitterList(DtExerciseConn* exConn);
345 virtual void createRemoteNavAidTransmitterList(DtExerciseConn* exConn);
346 virtual void createRemoteRadioReceiverList(DtExerciseConn* exConn);
347 virtual void createRemoteEmitterSystemList(DtExerciseConn* exConn);
348 virtual void createRemoteIffList(DtExerciseConn* exConn);
349 virtual void createReflectedDynamicTerrainList(DtExerciseConn* exConn);
352 virtual void createRemoteExtendedAttributesList(DtExerciseConn* exConn);
356 static void designatorAddedCallback(DtReflectedDesignator * des,
367 static void designatorRemovedCallback(DtReflectedDesignator * des,
377 static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
379 static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
381 static DtBoolean activeSonarDiscoveryCriteriaCallback(
384 static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
386 static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
388 static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
390 static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
393 static void radioTransmitterAddedCallback(DtReflectedRadioTransmitter* transmitter,
395 static void radioTransmitterRemovedCallback(DtReflectedRadioTransmitter* transmitter,
397 static DtBoolean radioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
403 static DtBoolean navAidRadioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
405 static void radioReceiverAddedCallback(DtReflectedRadioReceiver* transmitter,
407 static void radioReceiverRemovedCallback(DtReflectedRadioReceiver* transmitter,
410 static void iffAddedCallback(DtReflectedIff* propNoise,
412 static void iffRemovedCallback(DtReflectedIff* propNoise,
414 static DtBoolean iffDiscoveryCriteriaCallback(
417 static void emitterSystemAddedCallback(DtReflectedEmitterSystem* propNoise,
419 static void emitterSystemRemovedCallback(DtReflectedEmitterSystem* propNoise,
421 static DtBoolean emitterSystemDiscoveryCriteriaCallback(
424 static void envProcessAddedCallback(
426 static void envProcessRemovedCallback(
428 static bool envProcessDiscoveryCriteria(
431 virtual void cleanup();
444 static DtBoolean reflectedDynamicTerrainDiscoveryCriteriaCallback(
454 virtual bool createUnhostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
499 typedef std::map<makVrf::SimStateID, std::pair<DtReflectedObject*, DtSimObjectNetInterface*> >
RemoteInterfacesById;
531 void clear() { fcn =
nullptr; userData =
nullptr; };
532 DtDiscoveryCondition fcn;
std::map< uintptr_t, ReflectedObjectInformation > ReflectedObjectToComponentMap
Definition: remoteObjectManager.h:509
DtReflectedPropulsionNoiseList * reflectedPropulsionNoiseList() const
Definition: remoteObjectManager.h:166
DtExerciseConn * myExerciseConnection
Definition: remoteObjectManager.h:489
bool enabled() const
Definition: remoteObjectManager.h:131
bool myOwnsRemoteEnvironmentalsList
Definition: remoteObjectManager.h:469
DtPublisherContainer< DtSimObjectNetInterface > PublisherContainer
Definition: remoteObjectManager.h:496
Definition: reflectedExtEntity.h:31
std::map< uintptr_t, DtSimObjectNetInterface * > RemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:512
UnhostedStateData myUnhostedStateData
Definition: remoteObjectManager.h:541
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:38
Definition: reflectedExtAggregate.h:35
DtReflectedDesignatorList * myRemoteDesignatorsList
VR-Link reflected designator list.
Definition: remoteObjectManager.h:472
AwaitingReflectedTransmitters myReflectedRadioTransmitters
Definition: remoteObjectManager.h:525
AwaitingReflectedTransmitters myNavAidReflectedRadioTransmitters
Definition: remoteObjectManager.h:526
DtVrfCallbackQueue myJobProcessor
Definition: remoteObjectManager.h:543
DtReflectedExtEntityList * reflectedEntityList() const
Definition: remoteObjectManager.h:141
std::vector< DtStateComponent * > StateComponentVector
Definition: remoteObjectManager.h:517
DtReflectedNavAidList * myRemoteNavAidTransmitterList
Definition: remoteObjectManager.h:477
Instances of this class provide a protocol independent interface to a list of DynamicTerrain in a DIS...
Definition: reflectedDynamicTerrainListDIS.h:24
DiscoveryCondition()
Definition: remoteObjectManager.h:530
Definition: reflectedVrfExtEntityList.h:23
DtReflectedRadioTransmitterList * reflectedRadioTransmitterList() const
Definition: remoteObjectManager.h:171
int myDefaultObjectTimeout
Definition: remoteObjectManager.h:547
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
DiscoveryCondition myAdditionalRemoteAggregateDiscoveryCondition
Definition: remoteObjectManager.h:538
Definition: remoteStateComponentNetInterface.h:23
PublisherContainer myInterfaces
Definition: remoteObjectManager.h:498
DtReflectedDesignatorList * reflectedDesignatorList() const
Definition: remoteObjectManager.h:156
std::map< makVrf::SimStateID, std::pair< DtReflectedObject *, DtSimObjectNetInterface * > > RemoteInterfacesById
Definition: remoteObjectManager.h:499
ReflectedObjectToComponentMap myReflectedObjectToComponentMap
Definition: remoteObjectManager.h:510
DtReflectedIffList * myReflectedIffList
Definition: remoteObjectManager.h:481
class DtReflectedControlObjectList:
Definition: reflectedControlObjectList.h:23
Definition: remoteObjectManager.h:528
DtStateDataManager * stateDataManager()
Definition: remoteObjectManager.h:136
DtReflectedIffList * reflectedIffList() const
Definition: remoteObjectManager.h:191
DtSimulationAddress mySimulationAddress
Definition: remoteObjectManager.h:494
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:55
DtReflectedRadioTransmitterList * myRemoteTransmitterList
Definition: remoteObjectManager.h:476
DtReflectedNavAidList * reflectedNavAidTransmitterList() const
Definition: remoteObjectManager.h:176
std::map< DtString, DtStateData * > UnhostedStateData
Definition: remoteObjectManager.h:540
std::set< DtGlobalObjectDesignator > myJustDeleted
Definition: remoteObjectManager.h:550
DtReflectedExtAggregateList * myRemoteAggregateEntitiesList
VR-Link reflected aggregate list.
Definition: remoteObjectManager.h:465
bool myOwnsRemoteAggregateEntitiesList
Definition: remoteObjectManager.h:466
DiscoveryCondition myAdditionalRemoteEntityDiscoveryCondition
Definition: remoteObjectManager.h:537
DtReflectedPropulsionNoiseList * myRemotePropulsionNoiseList
Definition: remoteObjectManager.h:475
tbb::atomic< int > myJobCount
Definition: remoteObjectManager.h:551
DtReflectedRadioReceiverList * reflectedRadioReceiverList() const
Definition: remoteObjectManager.h:181
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
DtReflectedExtEntityList * myRemoteEntitiesList
VR-Link reflected entity list.
Definition: remoteObjectManager.h:461
std::map< DtString, StateComponentVector > UnhostedComponents
Definition: remoteObjectManager.h:518
class DtReflectedNavAidList:
Definition: reflectedNavAidListDIS.h:19
int defaultObjectTimeout() const
Definition: remoteObjectManager.h:117
DtReflectedDynamicTerrainList * myReflectedDynamicTerrainList
Definition: remoteObjectManager.h:479
UnhostedComponents myUnhostedComponents
Definition: remoteObjectManager.h:519
DtReflectedExtAggregateList * reflectedAggregateList() const
Definition: remoteObjectManager.h:146
#define DT_DLL_vrlinkNetworkInterface
This file is used to determine how to build.
Definition: vrlinkNetworkInterfaceDefines.h:24
DtReflectedActiveSonarList * reflectedActiveSonarList() const
Definition: remoteObjectManager.h:161
RemoteInterfacesById myRemoteInterfacesById
Definition: remoteObjectManager.h:500
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: remoteObjectManager.h:493
Instances of DtReflectedDynamicTerrain are used to represent a simulated HLAobjectRoot.DynamicTerrain object reflected across a network.
Definition: reflectedDynamicTerrainDIS.h:32
DtStateData * myDynamicTerrainStateData
Definition: remoteObjectManager.h:515
RemoteInterfacesByReflectedObject myRemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:513
DtVrfParameterDb * myParameterDatabase
Definition: remoteObjectManager.h:520
std::vector< unsigned long long > myStateDataToRemove
Definition: remoteObjectManager.h:545
The reflected object for a NavAid transmitter.
Definition: reflectedNavAidDIS.h:27
DtReflectedRadioReceiverList * myRemoteReceiverList
Definition: remoteObjectManager.h:478
DtReflectedDynamicTerrainList * reflectedDynamicTerrainList() const
Definition: remoteObjectManager.h:186
Definition: reflectedVrfExtControlObjectList.h:23
tbb::spin_mutex myInterfacesMutex
Definition: remoteObjectManager.h:497
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myEnabled
Definition: remoteObjectManager.h:492
DiscoveryCondition myAdditionalRemoteEnvironmentalDiscoveryCondition
Definition: remoteObjectManager.h:536
class DtReflectedExtAggregateList:
Definition: reflectedExtAggregateList.h:27
void * userData
Definition: remoteObjectManager.h:533
DtReflectedControlObjectList * reflectedEnvironmentProcessList() const
Definition: remoteObjectManager.h:151
bool myOwnsRemoteEntitiesList
Definition: remoteObjectManager.h:462
DtReflectedActiveSonarList * myRemoteActiveSonarList
Definition: remoteObjectManager.h:474
DtReflectedEmitterSystemList * myReflectedEmitterSystemList
Definition: remoteObjectManager.h:482
std::map< DtString, std::vector< DtReflectedObject * > > AwaitingReflectedTransmitters
Because radios and nav aid are both discovered in their own lists, have a pending list for each to ch...
Definition: remoteObjectManager.h:524
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
DtReflectedControlObjectList * myRemoteEnvironmentalsList
Definition: remoteObjectManager.h:468
class DtReflectedExtAggregateList:
Definition: reflectedExtEntityList.h:27
Definition: reflectedVrfExtAggregateList.h:23
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71