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;
206 return myReflectedEmitterSystemList;
209 virtual void setDynamicTerrainStateData(
DtStateData*);
210 virtual void finishDiscovery();
211 virtual void setNumCallbackThreads(
int);
213 virtual bool hasDiscoveryJobs()
const;
216 virtual DtGlobalObjectDesignator entityThatHostsRadio(
const DtGlobalObjectDesignator&,
int radioIndex)
const;
219 virtual bool isLocal(
const DtBaseEntityStateRepository& stateRep);
226 virtual bool selfReflecting()
const;
231 virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
237 friend class RemoteEntityCreator;
241 friend class RemoteAggregateCreator;
250 virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
251 virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
252 virtual DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
254 virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
255 virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
256 virtual DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
258 virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
259 virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
260 virtual DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
262 virtual void processRadioTransmitterAddedCallback(DtReflectedRadioTransmitter* tran);
263 virtual void processRadioTransmitterRemovedCallback(DtReflectedRadioTransmitter* tran);
264 virtual DtBoolean processRadioTransmitterDiscoveryCriteria(DtReflectedRadioTransmitter*);
268 virtual DtBoolean processNavAidRadioTransmitterDiscoveryCriteria(
DtReflectedNavAid*);
270 virtual void processRadioReceiverAddedCallback(DtReflectedRadioReceiver* tran);
271 virtual void processRadioReceiverRemovedCallback(DtReflectedRadioReceiver* tran);
273 virtual void processIffAddedCallback(DtReflectedIff* des);
274 virtual void processIffRemovedCallback(DtReflectedIff* des);
275 virtual DtBoolean processIffDiscoveryCriteria(DtReflectedIff*);
277 virtual void processEmitterSystemAddedCallback(DtReflectedEmitterSystem* des);
278 virtual void processEmitterSystemRemovedCallback(DtReflectedEmitterSystem* des);
279 virtual DtBoolean processEmitterSystemDiscoveryCriteria(DtReflectedEmitterSystem*);
281 friend class RemoteEnvironmentalCreator;
284 virtual void startingJob();
285 virtual void stoppingJob();
293 virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
294 virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
342 virtual bool processEntityDiscoveryCriteria(
350 virtual bool processAggregateDiscoveryCriteria(
351 DtReflectedAggregate* aggregate);
356 virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
358 virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
359 virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
360 virtual void createRemoteRadioTransmitterList(DtExerciseConn* exConn);
361 virtual void createRemoteNavAidTransmitterList(DtExerciseConn* exConn);
362 virtual void createRemoteRadioReceiverList(DtExerciseConn* exConn);
363 virtual void createRemoteEmitterSystemList(DtExerciseConn* exConn);
364 virtual void createRemoteIffList(DtExerciseConn* exConn);
365 virtual void createReflectedDynamicTerrainList(DtExerciseConn* exConn);
368 virtual void createRemoteExtendedAttributesList(DtExerciseConn* exConn);
372 static void designatorAddedCallback(DtReflectedDesignator * des,
383 static void designatorRemovedCallback(DtReflectedDesignator * des,
393 static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
395 static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
397 static DtBoolean activeSonarDiscoveryCriteriaCallback(
400 static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
402 static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
404 static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
406 static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
409 static void radioTransmitterAddedCallback(DtReflectedRadioTransmitter* transmitter,
411 static void radioTransmitterRemovedCallback(DtReflectedRadioTransmitter* transmitter,
413 static DtBoolean radioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
419 static DtBoolean navAidRadioTransmitterDiscoveryCriteriaCallback(
DtReflectedObject* des,
void*);
421 static void radioReceiverAddedCallback(DtReflectedRadioReceiver* transmitter,
423 static void radioReceiverRemovedCallback(DtReflectedRadioReceiver* transmitter,
426 static void iffAddedCallback(DtReflectedIff* propNoise,
428 static void iffRemovedCallback(DtReflectedIff* propNoise,
430 static DtBoolean iffDiscoveryCriteriaCallback(
433 static void emitterSystemAddedCallback(DtReflectedEmitterSystem* propNoise,
435 static void emitterSystemRemovedCallback(DtReflectedEmitterSystem* propNoise,
437 static DtBoolean emitterSystemDiscoveryCriteriaCallback(
440 static void envProcessAddedCallback(
442 static void envProcessRemovedCallback(
444 static bool envProcessDiscoveryCriteria(
447 virtual void cleanup();
460 static DtBoolean reflectedDynamicTerrainDiscoveryCriteriaCallback(
470 virtual bool createUnhostedComponent(
DtReflectedObject* obj,
const DtString& hostId,
int componentType,
const char* componentInterfaceType);
476 virtual DtEntityType standardAggregateTypeToVrfAggregateType(
const DtEntityType& aggType)
const;
519 typedef std::map<makVrf::SimStateID, std::pair<DtReflectedObject*, DtSimObjectNetInterface*> >
RemoteInterfacesById;
551 void clear() { fcn =
nullptr; userData =
nullptr; };
552 DtDiscoveryCondition fcn;
std::map< uintptr_t, ReflectedObjectInformation > ReflectedObjectToComponentMap
Definition: remoteObjectManager.h:529
DtReflectedPropulsionNoiseList * reflectedPropulsionNoiseList() const
Definition: remoteObjectManager.h:174
DtExerciseConn * myExerciseConnection
Definition: remoteObjectManager.h:509
bool enabled() const
Definition: remoteObjectManager.h:139
bool myOwnsRemoteEnvironmentalsList
Definition: remoteObjectManager.h:488
DtPublisherContainer< DtSimObjectNetInterface > PublisherContainer
Definition: remoteObjectManager.h:516
Definition: reflectedExtEntity.h:31
std::map< uintptr_t, DtSimObjectNetInterface * > RemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:532
UnhostedStateData myUnhostedStateData
Definition: remoteObjectManager.h:561
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:491
AwaitingReflectedTransmitters myReflectedRadioTransmitters
Definition: remoteObjectManager.h:545
AwaitingReflectedTransmitters myNavAidReflectedRadioTransmitters
Definition: remoteObjectManager.h:546
DtVrfCallbackQueue myJobProcessor
Definition: remoteObjectManager.h:563
DtReflectedExtEntityList * reflectedEntityList() const
Definition: remoteObjectManager.h:149
std::vector< DtStateComponent * > StateComponentVector
Definition: remoteObjectManager.h:537
bool myOwnsRemoteExtendedAttributesObjectsList
Definition: remoteObjectManager.h:506
DtReflectedNavAidList * myRemoteNavAidTransmitterList
Definition: remoteObjectManager.h:496
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:550
Definition: reflectedVrfExtEntityList.h:23
DtReflectedRadioTransmitterList * reflectedRadioTransmitterList() const
Definition: remoteObjectManager.h:179
int myDefaultObjectTimeout
Definition: remoteObjectManager.h:567
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
DiscoveryCondition myAdditionalRemoteAggregateDiscoveryCondition
Definition: remoteObjectManager.h:558
Definition: remoteStateComponentNetInterface.h:23
PublisherContainer myInterfaces
Definition: remoteObjectManager.h:518
DtReflectedDesignatorList * reflectedDesignatorList() const
Definition: remoteObjectManager.h:164
std::map< makVrf::SimStateID, std::pair< DtReflectedObject *, DtSimObjectNetInterface * > > RemoteInterfacesById
Definition: remoteObjectManager.h:519
ReflectedObjectToComponentMap myReflectedObjectToComponentMap
Definition: remoteObjectManager.h:530
DtReflectedIffList * myReflectedIffList
Definition: remoteObjectManager.h:500
class DtReflectedControlObjectList:
Definition: reflectedControlObjectList.h:23
Definition: remoteObjectManager.h:548
DtStateDataManager * stateDataManager()
Definition: remoteObjectManager.h:144
DtReflectedIffList * reflectedIffList() const
Definition: remoteObjectManager.h:199
DtSimulationAddress mySimulationAddress
Definition: remoteObjectManager.h:514
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:62
DtReflectedRadioTransmitterList * myRemoteTransmitterList
Definition: remoteObjectManager.h:495
DtReflectedNavAidList * reflectedNavAidTransmitterList() const
Definition: remoteObjectManager.h:184
std::map< DtString, DtStateData * > UnhostedStateData
Definition: remoteObjectManager.h:560
std::set< DtGlobalObjectDesignator > myJustDeleted
Definition: remoteObjectManager.h:570
DtReflectedExtAggregateList * myRemoteAggregateEntitiesList
VR-Link reflected aggregate list.
Definition: remoteObjectManager.h:484
bool myOwnsRemoteAggregateEntitiesList
Definition: remoteObjectManager.h:485
DiscoveryCondition myAdditionalRemoteEntityDiscoveryCondition
Definition: remoteObjectManager.h:557
DtReflectedPropulsionNoiseList * myRemotePropulsionNoiseList
Definition: remoteObjectManager.h:494
tbb::atomic< int > myJobCount
Definition: remoteObjectManager.h:571
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:480
std::map< DtString, StateComponentVector > UnhostedComponents
Definition: remoteObjectManager.h:538
class DtReflectedNavAidList:
Definition: reflectedNavAidListDIS.h:19
int defaultObjectTimeout() const
Definition: remoteObjectManager.h:125
DtReflectedDynamicTerrainList * myReflectedDynamicTerrainList
Definition: remoteObjectManager.h:498
UnhostedComponents myUnhostedComponents
Definition: remoteObjectManager.h:539
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:520
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: remoteObjectManager.h:513
Instances of DtReflectedDynamicTerrain are used to represent a simulated HLAobjectRoot.DynamicTerrain object reflected across a network.
Definition: reflectedDynamicTerrainDIS.h:32
DtReflectedEmitterSystemList * reflectedEmitterSystemList() const
Definition: remoteObjectManager.h:204
DtStateData * myDynamicTerrainStateData
Definition: remoteObjectManager.h:535
RemoteInterfacesByReflectedObject myRemoteInterfacesByReflectedObject
Definition: remoteObjectManager.h:533
DtVrfParameterDb * myParameterDatabase
Definition: remoteObjectManager.h:540
std::vector< unsigned long long > myStateDataToRemove
Definition: remoteObjectManager.h:565
The reflected object for a NavAid transmitter.
Definition: reflectedNavAidDIS.h:27
DtReflectedRadioReceiverList * myRemoteReceiverList
Definition: remoteObjectManager.h:497
DtReflectedDynamicTerrainList * reflectedDynamicTerrainList() const
Definition: remoteObjectManager.h:194
Definition: reflectedVrfExtControlObjectList.h:23
tbb::spin_mutex myInterfacesMutex
Definition: remoteObjectManager.h:517
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myEnabled
Definition: remoteObjectManager.h:512
DiscoveryCondition myAdditionalRemoteEnvironmentalDiscoveryCondition
Definition: remoteObjectManager.h:556
class DtReflectedExtAggregateList:
Definition: reflectedExtAggregateList.h:27
void * userData
Definition: remoteObjectManager.h:553
DtReflectedControlObjectList * reflectedEnvironmentProcessList() const
Definition: remoteObjectManager.h:159
bool myOwnsRemoteEntitiesList
Definition: remoteObjectManager.h:481
DtReflectedActiveSonarList * myRemoteActiveSonarList
Definition: remoteObjectManager.h:493
DtReflectedEmitterSystemList * myReflectedEmitterSystemList
Definition: remoteObjectManager.h:501
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:544
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:487
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