VR-Forces 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 
146  virtual bool designatorInUse(int designator) const;
147 
148  mutable boost::signals2::signal<void (const DtUUID&)> signal_subordinateRemoved;
149  mutable boost::signals2::signal<void (const DtUUID&)> signal_subordinateAdded;
150  boost::signals2::signal<void ()> signal_designatorOrderChanged;
151 
152 protected:
153  virtual bool findSubordinateItem(const DtUUID& id) const;
154 
155  virtual void subordinateDeleted(const DtUUID&);
156 
157 protected:
159 
163  std::map<DtUUID, int> myDesignatorsByUUID;
164  std::map<int, DtUUID> myUnitsByDesignator;
165  mutable std::set<int> myAvailableDesignators;
166  tbb::spin_rw_mutex myMutex;
167 
172 
174 
175  boost::signals2::scoped_connection myLocalObjectDeletedConnection;
176  boost::signals2::scoped_connection mySubordinateDeletedConnection;
177 };
178 
UUID is a unique ID wrapper class.
Definition: uuid.h:59
boost::signals2::signal< void(const DtUUID &)> signal_subordinateAdded
Definition: subordinateManager.h:149
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:163
DtSubordinateManager DtVrfSubordinateManager
Definition: subordinateManager.h:179
bool needsReorderToDesignatorOrder() const
Definition: subordinateManager.h:132
bool myNeedsReorderToDesignatorOrder
Definition: subordinateManager.h:168
DtLocalObject * myOwner
Definition: subordinateManager.h:173
#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:150
boost::signals2::scoped_connection mySubordinateDeletedConnection
Definition: subordinateManager.h:176
boost::signals2::signal< void(const DtUUID &)> signal_subordinateRemoved
Definition: subordinateManager.h:148
Definition: noArgumentCallbackList.h:90
std::set< int > myAvailableDesignators
Definition: subordinateManager.h:165
tbb::spin_rw_mutex myMutex
Definition: subordinateManager.h:166
boost::signals2::scoped_connection myLocalObjectDeletedConnection
Definition: subordinateManager.h:175
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:25
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
const DtSimulationServices * mySimulationServices
Definition: subordinateManager.h:158
std::map< int, DtUUID > myUnitsByDesignator
Definition: subordinateManager.h:164
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:137
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:171
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)