VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
subordinateManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
12 #include "vrfobjcore/simObject.h"
13 #include <vlutil/vlConfig.h>
14 #include <map>
15 #include <set>
16 #include <vlutil/vlList.h>
17 #include <vlpi/disEnums.h>
20 
21 #include <tbb/spin_rw_mutex.h>
22 
23 class DtSimManager;
25 class DtLocalObject;
26 
27 namespace makVrf
28 {
29  class DtStateData;
30 }
31 
33 
44 {
45 private:
46 
49 
51  const DtSubordinateManager& operator=(const DtSubordinateManager& orig);
52 
53 public:
56 
58  virtual ~DtSubordinateManager();
59 
63 
65  virtual bool addSubordinate(const DtUUID& subordinate, int designator = 0);
66 
68  virtual bool addSubordinateBefore (const DtUUID& subordinate,
69  const DtUUID& beforeObject, int designator = 0);
70 
73  virtual bool addSubordinateAfter (const DtUUID& subordinate,
74  const DtUUID& afterObject, int designator = 0);
75 
77  virtual bool removeSubordinate(const DtUUID& subordinate);
80 
81  virtual void removeAllSubordinates();
82 
84  virtual int numSubordinates() const;
85 
87  virtual void resetDesignatorsToSubordinateOrder();
88 
91  virtual DtSimObjectReference firstSubordinate() const;
92  virtual DtSimObjectReference lastSubordinate() const;
93  virtual DtSimObjectReference firstHealthySubordinate() const;
94 
96  virtual bool isSubordinate(const DtUUID& id) const;
97 
100  virtual int designatorForSubordinate(const DtUUID& id) const;
101 
104  virtual DtSimObjectReference subordinateForDesignator(int designator) const;
105 
109  virtual bool setDesignator(const DtUUID& id, int designator);
110 
113  virtual int maxUsedDesignator() const;
114 
118  virtual void reorderToDesignatorOrder();
119 
121  virtual void designatorOrderedList(std::vector<DtUUID>&
122  designatorOrderedList) const;
123 
126  virtual void setSubordinateOrder(const std::vector<DtUUID>&
127  orderedList);
128 
130  virtual int nextAvailableDesignator(int cur = 0) const;
131 
133  {
134  return myNeedsReorderToDesignatorOrder;
135  }
136 
140  const DtSimObjectReferenceList& subordinates() const;
141  DtSimObjectReferenceList& nextFrameSubordinates();
142 
143  virtual void invalidate();
144 
145  mutable boost::signals2::signal<void (const DtUUID&)> signal_subordinateRemoved;
146  mutable boost::signals2::signal<void (const DtUUID&)> signal_subordinateAdded;
147  boost::signals2::signal<void ()> signal_designatorOrderChanged;
148 
149 protected:
150  virtual bool findSubordinateItem(const DtUUID& id) const;
151 
152  virtual void subordinateDeleted(const DtUUID&);
153 
154 protected:
156 
160  std::map<DtUUID, int> myDesignatorsByUUID;
161  std::map<int, DtUUID> myUnitsByDesignator;
162  mutable std::set<int> myAvailableDesignators;
163  tbb::spin_rw_mutex myMutex;
164 
169 
171 
172  boost::signals2::scoped_connection myLocalObjectDeletedConnection;
173  boost::signals2::scoped_connection mySubordinateDeletedConnection;
174 };
175 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
boost::signals2::signal< void(const DtUUID &)> signal_subordinateAdded
Definition: subordinateManager.h:146
Objects may contain a collection of other objects, such as overlays or pseudo-aggregate entities...
Definition: subordinateManager.h:43
std::map< DtUUID, int > myDesignatorsByUUID
The table of entity id&#39;s and designators is used to associate a designator with each entity...
Definition: subordinateManager.h:160
DtSubordinateManager DtVrfSubordinateManager
Definition: subordinateManager.h:176
bool needsReorderToDesignatorOrder() const
Definition: subordinateManager.h:132
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
bool myNeedsReorderToDesignatorOrder
Definition: subordinateManager.h:165
DtLocalObject * myOwner
Definition: subordinateManager.h:170
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
boost::signals2::signal< void()> signal_designatorOrderChanged
Definition: subordinateManager.h:147
boost::signals2::scoped_connection mySubordinateDeletedConnection
Definition: subordinateManager.h:173
boost::signals2::signal< void(const DtUUID &)> signal_subordinateRemoved
Definition: subordinateManager.h:145
Definition: noArgumentCallbackList.h:91
std::set< int > myAvailableDesignators
Definition: subordinateManager.h:162
tbb::spin_rw_mutex myMutex
Definition: subordinateManager.h:163
boost::signals2::scoped_connection myLocalObjectDeletedConnection
Definition: subordinateManager.h:172
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:22
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
const DtSimulationServices * mySimulationServices
Definition: subordinateManager.h:155
std::map< int, DtUUID > myUnitsByDesignator
Definition: subordinateManager.h:161
DtCallbackList< const DtSubordinateManager & > DtSubordinateManagerCallabackList
Definition: subordinateManager.h:32
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:121
DtSimObjectReferenceList mySubordinates
This is a list of the subordinates in order that they were added to the manager – which may not be th...
Definition: subordinateManager.h:168
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)