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;
103 virtual void setRequestUpdates(
bool shouldRequestUpdates);
105 virtual void beginFrame();
113 virtual void finishFrame();
116 virtual bool stateDataAboutToBeRemoved(
const DtStateData* sd);
121 virtual bool hasDiscoveredObjects()
const;
124 virtual void setDefaultObjectTimeout(
int);
127 return myDefaultObjectTimeout;
133 virtual bool acceptRemoteEnvironmental(
const DtEntityType& et)
const;
135 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
138 virtual void setEnabled(
bool);
146 return myStateDataManager;
151 return myRemoteEntitiesList;
156 return myRemoteAggregateEntitiesList;
161 return myRemoteEnvironmentalsList;
166 return myRemoteDesignatorsList;
171 return myRemoteActiveSonarList;
176 return myRemotePropulsionNoiseList;
181 return myRemoteTransmitterList;
186 return myRemoteNavAidTransmitterList;
191 return myRemoteReceiverList;
196 return myReflectedDynamicTerrainList;
201 return myReflectedIffList;
204 virtual void setDynamicTerrainStateData(
DtStateData*);
205 virtual void finishDiscovery();
206 virtual void setNumCallbackThreads(
int);
208 virtual bool hasDiscoveryJobs()
const;
211 virtual bool isLocal(
const DtBaseEntityStateRepository& stateRep);
218 virtual bool selfReflecting()
const;
223 virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
229 friend class RemoteEntityCreator;
233 friend class RemoteAggregateCreator;
242 virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
243 virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
244 virtual DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
246 virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
247 virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
248 virtual DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
250 virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
251 virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
252 virtual DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
254 virtual void processRadioTransmitterAddedCallback(DtReflectedRadioTransmitter* tran);
255 virtual void processRadioTransmitterRemovedCallback(DtReflectedRadioTransmitter* tran);
256 virtual DtBoolean processRadioTransmitterDiscoveryCriteria(DtReflectedRadioTransmitter*);
260 virtual DtBoolean processNavAidRadioTransmitterDiscoveryCriteria(
DtReflectedNavAid*);
262 virtual void processRadioReceiverAddedCallback(DtReflectedRadioReceiver* tran);
263 virtual void processRadioReceiverRemovedCallback(DtReflectedRadioReceiver* tran);
265 virtual void processIffAddedCallback(DtReflectedIff* des);
266 virtual void processIffRemovedCallback(DtReflectedIff* des);
267 virtual DtBoolean processIffDiscoveryCriteria(DtReflectedIff*);
269 virtual void processEmitterSystemAddedCallback(DtReflectedEmitterSystem* des);
270 virtual void processEmitterSystemRemovedCallback(DtReflectedEmitterSystem* des);
271 virtual DtBoolean processEmitterSystemDiscoveryCriteria(DtReflectedEmitterSystem*);
273 friend class RemoteEnvironmentalCreator;
276 virtual void startingJob();
277 virtual void stoppingJob();
285 virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
286 virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
334 virtual bool processEntityDiscoveryCriteria(
342 virtual bool processAggregateDiscoveryCriteria(
343 DtReflectedAggregate* aggregate);
348 virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
350 virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
351 virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
352 virtual void createRemoteRadioTransmitterList(DtExerciseConn* exConn);
353 virtual void createRemoteNavAidTransmitterList(DtExerciseConn* exConn);
354 virtual void createRemoteRadioReceiverList(DtExerciseConn* exConn);
355 virtual void createRemoteEmitterSystemList(DtExerciseConn* exConn);
356 virtual void createRemoteIffList(DtExerciseConn* exConn);
357 virtual void createReflectedDynamicTerrainList(DtExerciseConn* exConn);
360 virtual void createRemoteExtendedAttributesList(DtExerciseConn* exConn);
364 static void designatorAddedCallback(DtReflectedDesignator * des,
375 static void designatorRemovedCallback(DtReflectedDesignator * des,
385 static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
387 static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
389 static DtBoolean activeSonarDiscoveryCriteriaCallback(
392 static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
394 static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
396 static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
398 static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
401 static void radioTransmitterAddedCallback(DtReflectedRadioTransmitter* transmitter,
403 static void radioTransmitterRemovedCallback(DtReflectedRadioTransmitter* transmitter,
405 static DtBoolean radioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
411 static DtBoolean navAidRadioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
413 static void radioReceiverAddedCallback(DtReflectedRadioReceiver* transmitter,
415 static void radioReceiverRemovedCallback(DtReflectedRadioReceiver* transmitter,
418 static void iffAddedCallback(DtReflectedIff* propNoise,
420 static void iffRemovedCallback(DtReflectedIff* propNoise,
422 static DtBoolean iffDiscoveryCriteriaCallback(
425 static void emitterSystemAddedCallback(DtReflectedEmitterSystem* propNoise,
427 static void emitterSystemRemovedCallback(DtReflectedEmitterSystem* propNoise,
429 static DtBoolean emitterSystemDiscoveryCriteriaCallback(
432 static void envProcessAddedCallback(
434 static void envProcessRemovedCallback(
436 static bool envProcessDiscoveryCriteria(
439 virtual void cleanup();
452 static DtBoolean reflectedDynamicTerrainDiscoveryCriteriaCallback(
462 virtual bool createUnhostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
468 virtual DtEntityType standardAggregateTypeToVrfAggregateType(
const DtEntityType& aggType)
const;
511 typedef std::map<makVrf::SimStateID, std::pair<DtReflectedObject*, DtSimObjectNetInterface*> >
RemoteInterfacesById;
543 void clear() { fcn =
nullptr; userData =
nullptr; };
544 DtDiscoveryCondition fcn;
std::map< uintptr_t, ReflectedObjectInformation > ReflectedObjectToComponentMap
Definition: remoteObjectManager.h:521
DtReflectedPropulsionNoiseList * reflectedPropulsionNoiseList() const
Definition: remoteObjectManager.h:174
DtExerciseConn * myExerciseConnection
Definition: remoteObjectManager.h:501
bool enabled() const
Definition: remoteObjectManager.h:139
bool myOwnsRemoteEnvironmentalsList
Definition: remoteObjectManager.h:480
DtPublisherContainer< DtSimObjectNetInterface > PublisherContainer
Definition: remoteObjectManager.h:508
Definition: reflectedExtEntity.h:31
std::map< uintptr_t, DtSimObjectNetInterface * > RemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:524
UnhostedStateData myUnhostedStateData
Definition: remoteObjectManager.h:553
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:483
AwaitingReflectedTransmitters myReflectedRadioTransmitters
Definition: remoteObjectManager.h:537
AwaitingReflectedTransmitters myNavAidReflectedRadioTransmitters
Definition: remoteObjectManager.h:538
DtVrfCallbackQueue myJobProcessor
Definition: remoteObjectManager.h:555
DtReflectedExtEntityList * reflectedEntityList() const
Definition: remoteObjectManager.h:149
std::vector< DtStateComponent * > StateComponentVector
Definition: remoteObjectManager.h:529
bool myOwnsRemoteExtendedAttributesObjectsList
Definition: remoteObjectManager.h:498
DtReflectedNavAidList * myRemoteNavAidTransmitterList
Definition: remoteObjectManager.h:488
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:542
Definition: reflectedVrfExtEntityList.h:23
DtReflectedRadioTransmitterList * reflectedRadioTransmitterList() const
Definition: remoteObjectManager.h:179
int myDefaultObjectTimeout
Definition: remoteObjectManager.h:559
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
DiscoveryCondition myAdditionalRemoteAggregateDiscoveryCondition
Definition: remoteObjectManager.h:550
Definition: remoteStateComponentNetInterface.h:23
PublisherContainer myInterfaces
Definition: remoteObjectManager.h:510
DtReflectedDesignatorList * reflectedDesignatorList() const
Definition: remoteObjectManager.h:164
std::map< makVrf::SimStateID, std::pair< DtReflectedObject *, DtSimObjectNetInterface * > > RemoteInterfacesById
Definition: remoteObjectManager.h:511
ReflectedObjectToComponentMap myReflectedObjectToComponentMap
Definition: remoteObjectManager.h:522
DtReflectedIffList * myReflectedIffList
Definition: remoteObjectManager.h:492
class DtReflectedControlObjectList:
Definition: reflectedControlObjectList.h:23
Definition: remoteObjectManager.h:540
DtStateDataManager * stateDataManager()
Definition: remoteObjectManager.h:144
DtReflectedIffList * reflectedIffList() const
Definition: remoteObjectManager.h:199
DtSimulationAddress mySimulationAddress
Definition: remoteObjectManager.h:506
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:62
DtReflectedRadioTransmitterList * myRemoteTransmitterList
Definition: remoteObjectManager.h:487
DtReflectedNavAidList * reflectedNavAidTransmitterList() const
Definition: remoteObjectManager.h:184
std::map< DtString, DtStateData * > UnhostedStateData
Definition: remoteObjectManager.h:552
std::set< DtGlobalObjectDesignator > myJustDeleted
Definition: remoteObjectManager.h:562
DtReflectedExtAggregateList * myRemoteAggregateEntitiesList
VR-Link reflected aggregate list.
Definition: remoteObjectManager.h:476
bool myOwnsRemoteAggregateEntitiesList
Definition: remoteObjectManager.h:477
DiscoveryCondition myAdditionalRemoteEntityDiscoveryCondition
Definition: remoteObjectManager.h:549
DtReflectedPropulsionNoiseList * myRemotePropulsionNoiseList
Definition: remoteObjectManager.h:486
tbb::atomic< int > myJobCount
Definition: remoteObjectManager.h:563
DtReflectedRadioReceiverList * reflectedRadioReceiverList() const
Definition: remoteObjectManager.h:189
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:472
std::map< DtString, StateComponentVector > UnhostedComponents
Definition: remoteObjectManager.h:530
class DtReflectedNavAidList:
Definition: reflectedNavAidListDIS.h:19
int defaultObjectTimeout() const
Definition: remoteObjectManager.h:125
DtReflectedDynamicTerrainList * myReflectedDynamicTerrainList
Definition: remoteObjectManager.h:490
UnhostedComponents myUnhostedComponents
Definition: remoteObjectManager.h:531
DtReflectedExtAggregateList * reflectedAggregateList() const
Definition: remoteObjectManager.h:154
#define DT_DLL_vrlinkNetworkInterface
This file is used to determine how to build.
Definition: vrlinkNetworkInterfaceDefines.h:24
DtReflectedActiveSonarList * reflectedActiveSonarList() const
Definition: remoteObjectManager.h:169
RemoteInterfacesById myRemoteInterfacesById
Definition: remoteObjectManager.h:512
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: remoteObjectManager.h:505
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:527
RemoteInterfacesByReflectedObject myRemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:525
DtVrfParameterDb * myParameterDatabase
Definition: remoteObjectManager.h:532
std::vector< unsigned long long > myStateDataToRemove
Definition: remoteObjectManager.h:557
The reflected object for a NavAid transmitter.
Definition: reflectedNavAidDIS.h:27
DtReflectedRadioReceiverList * myRemoteReceiverList
Definition: remoteObjectManager.h:489
DtReflectedDynamicTerrainList * reflectedDynamicTerrainList() const
Definition: remoteObjectManager.h:194
Definition: reflectedVrfExtControlObjectList.h:23
tbb::spin_mutex myInterfacesMutex
Definition: remoteObjectManager.h:509
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myEnabled
Definition: remoteObjectManager.h:504
DiscoveryCondition myAdditionalRemoteEnvironmentalDiscoveryCondition
Definition: remoteObjectManager.h:548
class DtReflectedExtAggregateList:
Definition: reflectedExtAggregateList.h:27
void * userData
Definition: remoteObjectManager.h:545
DtReflectedControlObjectList * reflectedEnvironmentProcessList() const
Definition: remoteObjectManager.h:159
bool myOwnsRemoteEntitiesList
Definition: remoteObjectManager.h:473
DtReflectedActiveSonarList * myRemoteActiveSonarList
Definition: remoteObjectManager.h:485
DtReflectedEmitterSystemList * myReflectedEmitterSystemList
Definition: remoteObjectManager.h:493
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:536
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:479
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