16 #include <tbb/spin_mutex.h>
18 #include <boost/signals2.hpp>
23 class DtIsOrbatEnabledCommand;
24 class DtSetIsOrbatEnabledCommand;
45 : myLock(node ? new std::lock_guard<std::recursive_mutex>(node->mutex()) : 0)
62 bool isValid()
const {
return (myLock.get() != 0); };
66 std::shared_ptr<std::lock_guard<std::recursive_mutex>> myLock;
70 typedef boost::unordered_map<DtUUID, DtOrbatManagerNode*>
UUIDMap;
76 subordinateChangedCallback.disconnect();
83 typedef boost::unordered_map<DtUUID, OrbatInformation>
OrbatMap;
93 virtual void closingScenario();
96 virtual void setOrbatEnabled(
bool);
97 virtual bool orbatEnabled()
const;
113 virtual void sendOrbatList(
int requestId = 0);
116 virtual void clearOrbat(
bool send =
false);
119 virtual void mergeFrom(
const DtOrbatManager& fromOm,
bool sendNewList =
false);
122 virtual bool loadOrbat(
const DtFilename&,
bool send =
false,
bool clearOnLoad =
true);
123 virtual bool loadOrbatFromZipFile(
const DtFilename& scenarioZipFile,
const std::string&,
bool send =
false,
bool clearOnLoad =
true);
126 virtual bool loadOrbat(
const std::string& str,
bool send =
false,
bool clearOnLoad =
true);
129 virtual bool writeOrbat(
const DtFilename&);
132 virtual bool writeOrbat(std::string&);
137 virtual bool hasNode(
const DtUUID&)
const;
158 virtual const DtLocalObject* createOrReturnSuperiorOf(
const DtUUID&,
const DtVector& locationOfSuperior = DtVector::zero(),
162 virtual void createSubordinatesOfObject(
const DtUUID&);
169 virtual void makeAllSimulationObjectsPartOfOrbat();
180 static void orbatOperationCallback(
DtSimMessage* msg,
void* usr);
184 static void orbatResponseCallback(
DtSimMessage* msg,
void* usr);
190 virtual bool loadOrbat(DtlInputStream*,
bool send);
193 virtual DtString generateMarkingText(
const DtEntityType&);
199 virtual bool objectShouldBeSavedToSimulationObjectGroup(
const DtSimObject* obj)
const;
206 virtual void reorderOrbatNodesExcluding(LockedOrbatManagerNode);
209 virtual void setOrbatNodeOrder(LockedOrbatManagerNode,
int order,
bool inserting =
false);
210 virtual void insertOrbatNodeInOrder(LockedOrbatManagerNode,
int order);
212 virtual LockedOrbatManagerNode rootNodeForForce(
int);
214 virtual void processObjectDataChanged(
const DtLocalObject*,
int flag);
217 virtual DtOrbatDataList setForceToSubordinatesOf(
int force,
const LockedOrbatManagerNode&)
const;
222 virtual void processUUIDChanged(
const DtUUID& oldUUID,
const DtUUID& newUUID);
UUID is a unique ID wrapper class.
Definition: uuid.h:59
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: orbatManager.h:251
class DtLocalObjectManager:
Definition: localObjectManager.h:157
std::vector< DtRwOrbatData > DtOrbatDataList
Definition: rwOrbatData.h:102
Definition: ifOrbatOperation.h:35
UnparentedOrbatNodes myUnparentedOrbatNodes
Definition: orbatManager.h:231
boost::unordered_map< DtUUID, OrbatInformation > OrbatMap
Definition: orbatManager.h:83
std::recursive_mutex myOrbatNodesMutex
Definition: orbatManager.h:230
tbb::spin_mutex myModifiedNodesMutex
Definition: orbatManager.h:254
std::map< int, DtOrbatManagerNode * > RootNodesByForce
Definition: orbatManager.h:244
LockedOrbatManagerNode(DtOrbatManagerNode *node)
Definition: orbatManager.h:44
boost::signals2::scoped_connection myUUIDChangedConnection
Definition: orbatManager.h:252
This class handles all requests as they pertain to viewing or modifying the ORBAT.
Definition: orbatManager.h:30
std::map< std::string, int > myEntityTypeCounts
Number of items used by entity type so unique name can be generated when adding nodes to the orbat...
Definition: orbatManager.h:238
std::map< DtUUID, OrbatNodeList > UnparentedOrbatNodes
Definition: orbatManager.h:228
boost::unordered_map< DtUUID, DtOrbatManagerNode * > UUIDMap
Definition: orbatManager.h:70
LockedOrbatManagerNode(const LockedOrbatManagerNode &orig)
Definition: orbatManager.h:50
UUIDMap myModifiedNodes
Map of modified nodes to be sent off during a tick.
Definition: orbatManager.h:241
DtSetIsOrbatEnabledCommand * mySetIsOrbatEnabledCommand
Definition: orbatManager.h:248
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Definition: rwOrbatData.h:20
File: simMsg.h.
Definition: simMessage.h:35
void release()
Definition: orbatManager.h:63
std::vector< DtOrbatManagerNode * > OrbatNodeList
Definition: orbatManager.h:227
DtOrbatManagerNode * operator->()
Definition: orbatManager.h:59
OrbatMap myOrbatNodes
Definition: orbatManager.h:232
Definition: ifOrbatOperation.h:25
DtLocalObjectManager * myObjectManager
Definition: orbatManager.h:235
bool myIsOrbatEnabled
Definition: orbatManager.h:225
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:80
const DtOrbatManagerNode * operator->() const
Definition: orbatManager.h:60
Definition: orbatManager.h:41
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtSimulationServices * mySimulationServices
Definition: orbatManager.h:234
tbb::spin_rw_mutex myRootNodeByForceMutex
Definition: orbatManager.h:243
bool isValid() const
Definition: orbatManager.h:62
Contains the declaration of DtOrbatManagerNode, the class that represents a single node the hierarchy...
Definition: orbatManagerNode.h:18
Contains the declaration of DtOrganizationManagerNode, the class that represents a single node the hi...
Definition: organizationManagerNode.h:29
std::set< DtUUID > myAddToOrbatOnNextAdd
Definition: orbatManager.h:255
DtOrbatManagerNode * myNode
Definition: orbatManager.h:67
const OrbatMap & nodes() const
Definition: orbatManager.h:144
DtIsOrbatEnabledCommand * myIsOrbatEnabledCommand
Definition: orbatManager.h:247
boost::signals2::scoped_connection mySimObjectAddedConnection
Definition: orbatManager.h:250
A locally simulated VRF object.
Definition: localObject.h:98
RootNodesByForce myRootNodesByForce
Definition: orbatManager.h:245