14 #include <tbb/spin_rw_mutex.h>
15 #include <tbb/concurrent_queue.h>
16 #include <vlutil/vlTime.h>
17 #include "legionDataStore/view.h"
18 #include "legionDataStore/viewManager.h"
19 #include "legionDataStore/simulationDatabase.h"
20 #include "vlpi/entityIdentifier.h"
27 #include <unordered_map>
30 #include <boost/signals2.hpp>
31 #include <boost/function.hpp>
37 class SimulationDatabase;
40 struct AttributeDescriptor;
48 struct DtEmitterSystemBeamStateData;
50 class DtEmitterSystemStateComponent;
51 class DtEntityStateComponent;
52 class DtFrameStateInterface;
53 class DtSimulatedObjectStateComponent;
64 class DtFrameDataInterface;
93 DtStateDataManager(Legion::SimulationDatabase* =
nullptr,
int threadPoolSize = -1,
unsigned int clientId = 0);
101 virtual DtStateData* createStateData(
bool isLocal,
const DtEntityType&,
const DtUUID& uuid =
DtUUID(),
int publishFlag = 0,
102 PreAddCallback callback = 0,
const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
bool addToSimObjectManager =
true,
103 const DtString& globalId = DtString::nullString());
107 return myParameterDatabase;
112 return myJobProcessor;
119 virtual void removeAndDeleteAll(
const std::set<DtUUID>& except = std::set<DtUUID>());
122 virtual void removeStateData(
const DtUUID&);
124 virtual void removeStateDataByUniqueId(
unsigned long long);
128 virtual void mapStateDataByUniqueId(
unsigned long long,
DtStateData*);
129 virtual void unmapStateDataByUniqueId(
unsigned long long);
131 virtual void beginFrame(
double simTime);
132 virtual void advanceFrame();
135 virtual DtStateData* advanceFrameFor(
unsigned long long uniqueId);
137 virtual void registerLegionComponents(Legion::SimulationDatabase*);
139 Legion::EventManager* eventManager();
148 return myUnpublishedDatabase ? myUnpublishedDatabase : myDatabase;
154 static void SeedUnpublishedEntityId(
short appId,
short siteId);
155 static DtEntityIdentifier NextUnpublishedEntityId();
161 virtual void environmentalDiscovered(
DtStateData*);
167 virtual void setBlockOnAdvanceFrameJobs(
bool);
170 return myBlockOnAdvanceFrameJobs;
174 virtual bool hasOutstandingAdvanceFrameJobs()
const;
178 virtual void reserve(
unsigned int);
180 template <
typename T_Class>
181 void handleDataUpdated(
const std::vector<
typename Legion::SetView<T_Class>::InstanceUpdateData>& instanceList)
183 typename InstancesUpdatedCallbacks::iterator iter = myInstancesUpdatedCallbacks.find(T_Class::type());
185 if (iter != myInstancesUpdatedCallbacks.end())
187 typename std::vector<typename Legion::SetView<T_Class>::InstanceUpdateData>::const_iterator instIter = instanceList.begin();
188 typename std::vector<typename Legion::SetView<T_Class>::InstanceUpdateData>::const_iterator instEnd = instanceList.end();
190 while (instIter != instEnd)
192 const T_Class& ent = instIter->instance;
193 InstanceUpdatedCallbacks::iterator callIter = iter->second.find(ent.instanceHandle());
195 if (callIter != iter->second.end())
197 Callbacks::iterator cbIter = callIter->second.begin();
198 Callbacks::iterator cbEnd = callIter->second.end();
200 while (cbIter != cbEnd)
202 (cbIter->first)(instIter->attributesChanged);
212 template <
typename T_Class>
215 const typename std::vector<Legion::AttributeIndex>& attributeIndexFilter = std::vector<Legion::AttributeIndex>())
219 unsigned int newHandle = ++myCallbackHandle;
220 tbb::spin_mutex::scoped_lock lock(myUpdateCallbackMutex);
222 InstancesUpdatedCallbacks::iterator iter = myInstancesUpdatedCallbacks.find(T_Class::type());
224 if (iter == myInstancesUpdatedCallbacks.end())
227 iter = myInstancesUpdatedCallbacks.find(T_Class::type());
230 iter->second[instanceHandle].push_back(std::make_pair(callback, newHandle));
232 if (iter->second.size() == 1)
234 view<T_Class>(database)->addInstanceUpdatedCallback(
typename Legion::SetView<T_Class>::InstanceUpdateCallback(
this,
235 &DtStateDataManager::handleDataUpdated<T_Class>), attributeIndexFilter);
244 template <
typename T_Class>
247 if (isValid() && callbackHandle)
249 tbb::spin_mutex::scoped_lock lock(myUpdateCallbackMutex);
250 InstancesUpdatedCallbacks::iterator iter = myInstancesUpdatedCallbacks.find(T_Class::type());
252 if (iter != myInstancesUpdatedCallbacks.end())
254 InstanceUpdatedCallbacks::iterator callIter = iter->second.find(instanceHandle);
256 if (callIter != iter->second.end())
258 Callbacks::iterator cbIter = callIter->second.begin();
259 Callbacks::iterator cbEnd = callIter->second.end();
261 while (cbIter != cbEnd)
263 if (cbIter->second == callbackHandle)
265 callIter->second.erase(cbIter);
272 if (callIter->second.size() == 0)
274 iter->second.erase(callIter);
276 if (iter->second.size() == 0)
278 myInstancesUpdatedCallbacks.erase(iter);
279 view<T_Class>(database)->removeInstanceUpdatedCallback(
typename Legion::SetView<T_Class>::InstanceUpdateCallback(
this,
280 &DtStateDataManager::handleDataUpdated<T_Class>));
290 return (myDatabase !=
nullptr);
300 return stateDataFor(
id);
305 return stateDataFor(
id);
310 return myClock.absRealTime();
314 virtual void prepareForHandoff(
unsigned long long,
bool becomingLocal);
341 virtual void clear(
bool forReuse =
false);
343 Legion::ControlManager* controlManager();
350 virtual const DtStateData* stateDataFor(
const DtEntityIdentifier&)
const;
351 virtual DtStateData* stateDataFor(
const DtEntityIdentifier&);
354 virtual void setUpdateOnlySpecifiedStateDataMode(
bool);
357 return myUpdateOnlySpecifiedStateDataMode;
362 return myFrameStatus;
373 virtual void setRunFullyThreaded(
bool,
int theadCount = 4);
376 return myRunFullyThreaded;
380 virtual void removeStateComponent(
DtStateComponent*,
bool deleteOnRemoval =
true);
382 virtual void resizeContainer(
unsigned);
384 template <
typename T_Component>
387 resizeContainer(T_Component::ComponentType());
390 template <
typename T_Component>
393 return signalWhenStateComponentAdded(T_Component::ComponentType());
398 tbb::spin_rw_mutex::scoped_lock lock(myComponentMutex,
true);
399 resizeContainer(type);
400 return *(myCurrentFrameStates[type].signal_stateComponentAdded);
403 template <
typename T_Component>
406 return signalWhenStateComponentRemoved(T_Component::ComponentType());
411 tbb::spin_rw_mutex::scoped_lock lock(myComponentMutex,
true);
412 resizeContainer(type);
413 return *(myCurrentFrameStates[type].signal_stateComponentRemoved);
416 template <
typename T_Component>
421 tbb::spin_rw_mutex::scoped_lock lock(myComponentMutex,
false);
423 if (T_Component::ComponentType() < myCurrentFrameStates.size())
425 return myCurrentFrameStates[T_Component::ComponentType()].currentFrameStates;
433 virtual void removeAll();
436 virtual std::set<const DtStateData*> entitiesTracking(
const DtUUID&)
const;
439 virtual std::set<const DtStateData*> entitiesJamming(
const DtUUID&)
const;
451 static DtStateDataManager* createStateDataManager(Legion::SimulationDatabase* =
nullptr,
int threadPoolSize = -1,
unsigned int clientId = 0);
456 virtual void setUnpublishedDatabaseUsage(
bool);
462 return myCoordinateSystem;
479 return myAerodromeData;
484 return myEnvironmentalData;
487 virtual void setPublishingOnLegionNetwork(
bool b);
490 return myPublishingOnLegionNetwork;
494 template <
typename T_Class>
495 Legion::SetView<T_Class>*
view(Legion::SimulationDatabase* db)
497 tbb::spin_rw_mutex::scoped_lock lock(myViewCreateMutex,
true);
499 DatabaseViews::iterator iter = myDatabaseViews.find(db);
501 if (iter == myDatabaseViews.end())
503 myDatabaseViews[db] =
Views();
504 iter = myDatabaseViews.find(db);
508 Views::iterator viewIter = iter->second.find(key);
510 if (viewIter == iter->second.end())
512 iter->second[key] = db->viewManager().createSetView<
T_Class>(key, (myUnpublishedDatabase ? Legion::ViewScope::Remote : Legion::ViewScope::All));
513 viewIter = iter->second.find(key);
516 return (Legion::SetView<T_Class>*)(viewIter->second);
521 return myAdvancingFrame;
525 virtual void jobsThread();
526 virtual std::set<const DtStateData*> entitiesTracking(
int beamType,
const DtUUID&)
const;
530 virtual void subordinatesChanged(
const DtStateData*,
const std::vector<DtUUID>& oldSubordinates,
const std::vector<DtUUID>& newSubordinates);
532 virtual void completeAttachments(
const DtUUID&);
533 virtual void completeAttachments();
537 virtual void resolveHostChanged(
const DtUUID&,
const DtUUID& oldUUID,
const DtUUID& newUUID,
538 std::set<DtEntityStateComponent*>&);
571 boost::signals2::signal<void (unsigned long long, const DtUUID& oldUUID, const DtUUID& newUUID)>
signal_uuidChanged;
581 virtual bool _internalRemoveStateData(
DtStateData*sd);
583 virtual void addVrfSpecificDataElements(Legion::SimulationDatabase*);
585 virtual void resolveHostChanges();
586 virtual void removeAllStateComponents();
587 virtual void resolveSubordinateChanges();
589 virtual void removeStateDataToBeDeleted();
592 void initializeDefaultPublicData();
624 : signal_stateComponentAdded(orig.signal_stateComponentAdded)
625 , signal_stateComponentRemoved(orig.signal_stateComponentRemoved)
626 , currentFrameStates(orig.currentFrameStates)
670 typedef std::map<DtString, Legion::View*>
Views;
674 typedef std::vector<std::pair<DtInstanceUpdatedCallback, unsigned int> >
Callbacks;
699 bool deleteOnRemoval =
false;
712 bool myAdvancingFrame =
false;
713 bool myBlockOnAdvanceFrameJobs =
true;
boost::signals2::signal< void()> signal_preAdvanceFrame
Definition: stateDataManager.h:553
std::map< DtString, Legion::View * > Views
Definition: stateDataManager.h:670
UUID is a unique ID wrapper class.
Definition: uuid.h:59
std::shared_ptr< StateComponentSignal > signal_stateComponentAdded
Definition: stateDataManager.h:638
boost::signals2::signal< void(const Coordinate_System *)> signal_coordinateSystemChanged
Definition: stateDataManager.h:464
const StateDataByUniqueId & environmentalData() const
Definition: stateDataManager.h:482
boost::signals2::signal< void(Legion::SimulationDatabase *)> signal_addVrfSpecificDataElements
Signal sent when it is ok to add columns to the entity set.
Definition: stateDataManager.h:546
void resizeContainer()
Definition: stateDataManager.h:385
unsigned long long SimStateID
Definition: stateDataTypes.h:16
unsigned int addInstanceUpdatedCallback(Legion::SimulationDatabase *database, DtInstanceUpdatedCallback callback, Legion::InstanceHandle instanceHandle, const typename std::vector< Legion::AttributeIndex > &attributeIndexFilter=std::vector< Legion::AttributeIndex >())
Definition: stateDataManager.h:213
StateDataByUniqueId myEnvironmentalData
Definition: stateDataManager.h:662
tbb::spin_mutex mySubordinatesChangedThisFrameMutex
Definition: stateDataManager.h:685
FrameStatus frameStatus() const
Definition: stateDataManager.h:360
std::set< DtStateComponent * > myComponentsDeleted
Definition: stateDataManager.h:704
DtStateData *(*)(makVrf::SimStateID, Legion::SimulationDatabase *, DtStateDataManager *) StateDataCreatorFcn
All state data created must have a UUID, so, if one is not provided, it will be supplied.
Definition: stateDataManager.h:321
std::map< DtUUID, std::map< DtUUID, DtUUID > > myHostsChangedThisFrame
Definition: stateDataManager.h:682
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:41
bool blockOnAdvanceFrameJobs() const
Definition: stateDataManager.h:168
bool isValid() const
Definition: stateDataManager.h:288
Condition myStartJobsCondition
Definition: stateDataManager.h:715
InstancesUpdatedCallbacks myInstancesUpdatedCallbacks
Definition: stateDataManager.h:677
StateDataByUniqueId myEntityData
Definition: stateDataManager.h:659
tbb::spin_rw_mutex myComponentMutex
Definition: stateDataManager.h:614
unsigned int myReserved
Definition: stateDataManager.h:666
std::vector< DtStateData * > StateData
Definition: stateDataManager.h:90
DtVrfParameterDb * myParameterDatabase
Definition: stateDataManager.h:692
static DtStateDataManagerCreatorFcn theStateDataManagerCreatorFcn
Definition: stateDataManager.h:652
boost::signals2::signal< void()> signal_deleted
Definition: stateDataManager.h:575
std::atomic< bool > myShutdownJobsThreadFlag
Definition: stateDataManager.h:717
const StateDataByUniqueId & entityData() const
Definition: stateDataManager.h:467
bool myPublishingOnLegionNetwork
Definition: stateDataManager.h:695
std::map< Legion::AttributeSetId, InstanceUpdatedCallbacks > InstancesUpdatedCallbacks
Definition: stateDataManager.h:676
StateComponent & operator=(const StateComponent &rhs)
Definition: stateDataManager.h:629
const DtEmitterSystemBeamStateData * beamSR
Definition: stateDataManager.h:57
DtClock myClock
Definition: stateDataManager.h:611
FrameStatus
Definition: stateDataManager.h:80
ConditionMutex myStartJobsConditionMutex
Definition: stateDataManager.h:716
std::set< unsigned long long > myAdvancedThisFrame
Definition: stateDataManager.h:711
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
tbb::spin_rw_mutex myMutex
Definition: stateDataManager.h:599
boost::signals2::signal< void(DtStateData *)> signal_aerodromeAdded
Definition: stateDataManager.h:568
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:29
bool runFullyThreaded() const
Definition: stateDataManager.h:374
tbb::spin_mutex myAdvancedThisFrameMutex
Definition: stateDataManager.h:710
Contains the DtUUID class declaration.
boost::signals2::signal< void(DtStateData *)> signal_unitAdded
Definition: stateDataManager.h:562
DtStateData *(*)(makVrf::SimStateID, UInt64 legionId, Legion::SimulationDatabase *, DtStateDataManager *) RemoteStateDataCreatorFcn
If remote state data do not have UUIDs, one will be assigned based on marking text.
Definition: stateDataManager.h:324
unsigned long long UInt64
Definition: stateDataTypes.h:17
boost::signals2::signal< void()> signal_advanceFrame
Definition: stateDataManager.h:554
std::vector< StateComponent > CurrentFrameStatesList
Definition: stateDataManager.h:643
boost::signals2::signal< void()> signal_beginFrame
Definition: stateDataManager.h:552
DtStateData * stateData(makVrf::SimStateID id)
Definition: stateDataManager.h:303
StateComponent()
Definition: stateDataManager.h:618
StateComponentSignal signal_stateComponentAdded
Definition: stateDataManager.h:573
double absRealTime() const
Definition: stateDataManager.h:308
CurrentFrameStates currentFrameStates
Definition: stateDataManager.h:640
boost::function< bool(DtStateData *)> PreAddCallback
Definition: stateDataManager.h:88
Legion::SimulationDatabase * database()
Definition: stateDataManager.h:141
Legion::SetView< T_Class > * view(Legion::SimulationDatabase *db)
Returns the entity view for the given database.
Definition: stateDataManager.h:495
StateComponentSignal & signalWhenStateComponentAdded()
Definition: stateDataManager.h:391
std::atomic< unsigned int > myCallbackHandle
Definition: stateDataManager.h:679
std::vector< DtTrackJamBeamInfo > DtTrackJamBeamInfoList
Definition: stateDataManager.h:61
std::unordered_map< std::string, std::set< DtStateData * > > StateDataByEntityIdentifier
Definition: stateDataManager.h:649
std::pair< std::set< DtUUID >, std::set< DtUUID > > SubordinateChangeSet
First is added, second removed.
Definition: stateDataManager.h:688
StateDataByEntityIdentifier myStateDataByEntityIdentifier
Definition: stateDataManager.h:650
bool publishingOnLegionNetwork() const
Definition: stateDataManager.h:488
std::unique_ptr< std::thread > myJobsThread
Definition: stateDataManager.h:714
const Coordinate_System * myCoordinateSystem
Definition: stateDataManager.h:656
Definition: coordSystem.h:54
const CurrentFrameStates & stateComponents() const
Definition: stateDataManager.h:417
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
boost::signals2::signal< void(const DtStateData *)> signal_stateDataAboutToBeRemoved
Signals sent for state data actions.
Definition: stateDataManager.h:542
std::atomic< makVrf::SimStateID > myNextSimStateID
Definition: stateDataManager.h:606
tbb::spin_rw_mutex myViewCreateMutex
Definition: stateDataManager.h:669
Definition: stateDataManager.h:697
std::map< DtUUID, std::set< DtUUID > > myWaitingForAttachment
Definition: stateDataManager.h:683
Legion::SimulationDatabase * myUnpublishedDatabase
Definition: stateDataManager.h:602
StateComponent(const StateComponent &orig)
Definition: stateDataManager.h:623
const DtStateData * stateData(makVrf::SimStateID id) const
Definition: stateDataManager.h:298
std::set< unsigned long long > myAwaitingHandoff
Definition: stateDataManager.h:604
Definition: stateDataManager.h:55
boost::signals2::signal< void(DtStateData *)> signal_stateDataAdded
Definition: stateDataManager.h:551
boost::signals2::signal< void(const DtStateData *)> signal_aerodromeRemoved
Definition: stateDataManager.h:569
StateComponentSignal & signalWhenStateComponentRemoved(unsigned type)
Definition: stateDataManager.h:409
std::unordered_map< DtUUID, std::set< DtStateData * > > StateDataByUUID
Definition: stateDataManager.h:646
StateComponentSignal signal_stateComponentRemoved
Definition: stateDataManager.h:574
void removeInstanceUpdatedCallback(Legion::SimulationDatabase *database, Legion::InstanceHandle instanceHandle, unsigned int callbackHandle)
Definition: stateDataManager.h:245
std::condition_variable Condition
Definition: stateDataManager.h:707
std::unordered_map< UInt64, DtStateData * > StateDataByUniqueId
Definition: stateDataManager.h:466
bool myOwnsDatabase
Definition: stateDataManager.h:664
DtStateDataManager *(*)(Legion::SimulationDatabase *, int, unsigned int) DtStateDataManagerCreatorFcn
Definition: stateDataManager.h:67
void handleDataUpdated(const std::vector< typename Legion::SetView< T_Class >::InstanceUpdateData > &instanceList)
Definition: stateDataManager.h:181
boost::signals2::signal< void(DtStateData *)> signal_entityAdded
Convenience signals for when a data is added – something is considered a unit if it has a aggregateSt...
Definition: stateDataManager.h:559
bool updateOnlySpecifiedStateDataMode() const
Definition: stateDataManager.h:355
bool advancingFrame() const
Definition: stateDataManager.h:519
tbb::spin_mutex myHostsChangedThisFrameMutex
Definition: stateDataManager.h:681
std::unique_lock< ConditionMutex > ConditionLock
Definition: stateDataManager.h:709
const DtEmitterSystemStateComponent * emitterSystemSR
Definition: stateDataManager.h:58
boost::signals2::signal< void(unsigned long long, const DtUUID &oldUUID, const DtUUID &newUUID)> signal_uuidChanged
Definition: stateDataManager.h:571
StateDataByUniqueId myUnitData
Definition: stateDataManager.h:660
Legion::SimulationDatabase * unpublishedDatabase()
Definition: stateDataManager.h:146
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: emitterSystemStateComponent.h:466
DtVrfCallbackQueue & jobProcessor()
Definition: stateDataManager.h:110
tbb::concurrent_queue< makVrf::SimStateID > myFreeStateIDs
Definition: stateDataManager.h:607
Definition: stateComponent.h:52
boost::function< void(const std::vector< UInt32 > &)> DtInstanceUpdatedCallback
Definition: stateDataTypes.h:21
const StateDataByUniqueId & aerodromeData() const
Definition: stateDataManager.h:477
bool myUpdateOnlySpecifiedStateDataMode
Definition: stateDataManager.h:705
StateDataByUniqueId myAerodromeData
Definition: stateDataManager.h:661
StateData myStateData
Definition: stateDataManager.h:597
boost::signals2::signal< void(const DtStateData *)> signal_environmentalRemoved
Definition: stateDataManager.h:566
const Coordinate_System * coordinateSystem() const
Definition: stateDataManager.h:460
StateDataByUUID myStateDataByUUID
Definition: stateDataManager.h:647
CurrentFrameStatesList myCurrentFrameStates
Definition: stateDataManager.h:644
DtVrfParameterDb * parameterDatabase() const
Definition: stateDataManager.h:105
boost::signals2::signal< void(const DtStateData *)> signal_unitRemoved
Definition: stateDataManager.h:563
boost::signals2::signal< void(const DtStateData *)> signal_initializeStateDataBeforeAdd
This signal is called before the data is fully added. Gives connectors a chace to add data into the n...
Definition: stateDataManager.h:550
StateComponentSignal & signalWhenStateComponentRemoved()
Definition: stateDataManager.h:404
boost::signals2::signal< void(DtStateData *)> signal_environmentalAdded
Definition: stateDataManager.h:565
std::shared_ptr< boost::signals2::connection > deleteConnection
Definition: stateDataManager.h:700
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
bool myRunFullyThreaded
Definition: stateDataManager.h:609
StateComponentSignal & signalWhenStateComponentAdded(unsigned type)
Definition: stateDataManager.h:396
boost::signals2::signal< void(makVrf::SimStateID, UInt64)> signal_stateDataRemoved
Definition: stateDataManager.h:543
boost::signals2::signal< void(DtStateComponent *)> StateComponentSignal
Definition: stateDataManager.h:89
DatabaseViews myDatabaseViews
Definition: stateDataManager.h:672
std::map< DtStateComponent *, ComponentRemoval > myComponentsToRemove
Definition: stateDataManager.h:703
std::map< Legion::InstanceHandle, Callbacks > InstanceUpdatedCallbacks
Definition: stateDataManager.h:675
StateDataByUniqueId myStateDataByUniqueId
Definition: stateDataManager.h:654
std::map< Legion::SimulationDatabase *, Views > DatabaseViews
Definition: stateDataManager.h:671
boost::signals2::signal< void(DtStateData *, bool)> signal_prepareForHandoff
Definition: stateDataManager.h:555
std::shared_ptr< StateComponentSignal > signal_stateComponentRemoved
Definition: stateDataManager.h:639
std::map< DtUUID, SubordinateChangeSet > mySubordinatesChangedThisFrame
Definition: stateDataManager.h:689
std::mutex ConditionMutex
Definition: stateDataManager.h:708
boost::signals2::signal< void(DtStateData *)> signal_convertedToLocal
Definition: stateDataManager.h:577
std::map< DtUUID, std::set< DtUUID > > myPendingSuperiorSet
Definition: stateDataManager.h:690
The DtEmitterSystemStateComponentList is a collection of emitter systems and the beams they represent...
Definition: emitterSystemStateComponent.h:25
Definition: stateDataManager.h:616
tbb::spin_mutex myUpdateCallbackMutex
Definition: stateDataManager.h:668
Legion::SimulationDatabase * myDatabase
Definition: stateDataManager.h:601
const StateData & stateData() const
Definition: stateDataManager.h:293
DtVrfCallbackQueue myJobProcessor
Definition: stateDataManager.h:612
std::vector< std::pair< DtInstanceUpdatedCallback, unsigned int > > Callbacks
Definition: stateDataManager.h:674
std::vector< DtStateData * > myStateDataToBeDeleted
Definition: stateDataManager.h:694
bool myOwnsCoordinateSystem
Definition: stateDataManager.h:657
std::set< const DtFrameStateInterface * > CurrentFrameStates
Definition: stateDataManager.h:87
boost::signals2::signal< void(const DtStateData *)> signal_entityRemoved
Definition: stateDataManager.h:560
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73
const StateDataByUniqueId & unitData() const
Definition: stateDataManager.h:472