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
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: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:91
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:23
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:94
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:123
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. 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 Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)