VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
embarkationSlotManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vlutil/vlConfig.h>
12 #include <map>
13 #include "vrfobjparam/loadPoint.h"
16 #include <readerWriter/rwString.h>
17 #include <readerWriter/rwInt.h>
18 #include <vlpi/entityType.h>
19 #include "vrfobjcore/simObject.h"
21 #include <tbb/spin_rw_mutex.h>
22 
25 
28 {
29 public:
31  std::vector<DtUUID> myReservedBy;
32 
33  void addReservedBy(const DtUUID&);
34  void removeReservedBy(const DtUUID&);
35  bool reservedBy(const DtUUID&) const;
36 
37 };
38 
40 {
41 public:
42  DtEmbarkationSlotInformation() : myEntry(NULL), mySlot(-1) {};
43 
45  {
46  myEntry = orig.myEntry;
47  mySlot = orig.mySlot;
48  myLoadPath = orig.myLoadPath;
49 
50  return *this;
51  }
52 
53 public:
55  int mySlot;
56  std::vector<DtVector> myLoadPath;
57 };
58 
60 {
61 public:
63  parentRegistry = NULL);
65  parentRegistry = NULL);
66 
68  DtReservedSlot(const DtString& name, const
70  parentRegistry = NULL);
71 
72  DtReservedSlot(const DtSymbolString& name, const
74  parentRegistry = NULL);
75 
76  virtual ~DtReservedSlot() override;
77 
78  int reservedSlot() const;
79  void setReservedSlot(int);
80 
81  const DtRwSimObjectReferenceList& reservedBy() const;
82  void addReservedBy(const DtUUID&);
83 
84 protected:
87 };
88 
89 typedef std::map<int, DtReservedEmbarkationSlotEntry> DtEmbarkationSlotEntryMap;
90 typedef std::vector<DtLoadPoint> DtLoadPathPoints;
91 
93 {
94 public:
96 
98  parentRegistry = NULL, DtSimulationServices* services = nullptr);
100  parentRegistry = NULL, DtSimulationServices* services = nullptr);
101 
103  DtEmbarkationSlotManager(const DtString& name, const
105  parentRegistry = NULL);
106 
107  DtEmbarkationSlotManager(const DtSymbolString& name, const
109  parentRegistry = NULL);
110 
111  virtual ~DtEmbarkationSlotManager() override;
112 
113  virtual void addSlot(int iSlot, const DtEmbarkationSlotEntry*);
114 
117  virtual DtEmbarkationSlotInformation slotFor(const DtSimObject* embarkingObject,
118  const DtSimObject* hostObject) const;
119 
121  virtual DtEmbarkationSlotInformation slotFor(int slot,
122  const DtSimObject* embarkingObject,
123  const DtSimObject* hostObject) const;
124 
127  virtual DtEmbarkationSlotInformation slotFor(const DtString& slotName, const DtString& slotType,
128  const DtSimObject* embarkingObject,
129  const DtSimObject* hostObject) const;
130 
132  virtual DtEmbarkationSlotInformation entityEmbarkationSlotInformation(const DtUUID&) const;
133 
135  virtual std::vector<DtEmbarkationSlotInformation> slotInformationFor(const DtEntityType&) const;
136 
139  virtual bool blocked(int iSlot) const;
140  virtual void addSlotExclusion(const DtSlotExclusion&);
141 
143  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtSimObject*) const;
144  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtEntityType&) const;
145 
149  virtual bool available(int, const DtUUID& uuid = DtUUID::nullUUID()) const;
150 
153  virtual bool reserved(int) const;
154 
156  virtual bool reserveSlot(int iSlot, const DtUUID&);
157 
158  virtual void addIngressPoint(const DtLoadPoint&);
160  virtual void ingressPoints(int iSlot, const DtSimObject* embarkingObject,
161  const DtSimObject* hostObject, DtEmbarkationSlotInformation& info) const;
162 
163  virtual void addEgressPoint(const DtLoadPoint&);
164  virtual void egressPoints(int iSlot, DtEmbarkationSlotInformation& info) const;
165 
167  virtual void giveUpSlot(int, const DtUUID&);
168 
170  virtual DtEmbarkationSlotManager* clone(const DtString& name, DtReaderWriterRegistry*
171  parentRegistry = NULL);
172 
176  virtual void calculateDisembarkPositions(const std::vector<DtSimObjectReference>&);
177 
184  virtual DtVector nextDisembarkPosition(const DtSimObject* parent, const DtSimObject* disembarking,
185  const DtVector& lastBodyPos, bool tasked, bool flipBodyX = false,
186  bool flipBodyY = false);
187 
190  virtual void setScalingFactor(double);
191  virtual double scalingFactor() const;
192 
193  const DtEmbarkationSlotEntryMap& slots() const { return mySlots; };
194  const DtRwTemplatedListPtr<DtLoadPoint,true>& ingressPoints() const { return myIngressPoints; };
195  const DtRwTemplatedListPtr<DtLoadPoint,true>& egressPoints() const { return myEgressPoints; };
196  const DtRwTemplatedListPtr<DtSlotExclusion,true>& slotExclustions() const { return mySlotExclusions; };
197 
198 protected:
201  virtual void calculateGridSize(const std::vector<DtSimObjectReference>&);
202 
205  virtual void calculateGridCellSize(const std::vector<DtSimObjectReference>&);
206 
210  virtual DtDcm finalPositionTransformationMatrix(const DtSimObject* parent, const DtVector& lastBodyPos) const;
211 
212 protected:
214  virtual bool matchesNameAndType(const DtString& name, const DtString& type, const DtEmbarkationSlotEntry*) const;
215 
217  virtual bool slotMatches(const DtLoadPoint*, int iSlot) const;
218 
220  virtual void putData(std::string& fp, int indentLevel = 0) override;
221 
222  virtual bool blocked(int iSlot, const DtSlotExclusion&) const;
223 
230  virtual const DtLoadPoint* bestIngressFor(const DtLoadPoint* ingressA,
231  const DtLoadPoint* ingressB, const DtSimObject* embarkingObject,
232  const DtSimObject* hostObject) const;
233 
236  virtual DtVector bodyPositionToLocalPosition(const DtVector& bodyPosition,
237  const DtSimObject* body) const;
238 
239 protected:
240  mutable tbb::spin_rw_mutex mySlotsMutex;
245 
249 
252 
255 
258 
262 };
263 
265 {
266  return myReservedSlot;
267 }
268 
270 {
271  myReservedSlot = s;
272 }
DtEmbarkationSlotInformation()
Definition: embarkationSlotManager.h:42
UUID is a unique ID wrapper class.
Definition: uuid.h:59
const DtRwTemplatedListPtr< DtSlotExclusion, true > & slotExclustions() const
Definition: embarkationSlotManager.h:196
Definition: embarkationSlotManager.h:59
void setReservedSlot(int)
Definition: embarkationSlotManager.h:269
This class allows one to collect and compare strings using an index number instead of having to do st...
Definition: symbolString.h:27
Definition: embarkationSlotManager.h:27
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: simObjectReferenceList.h:120
const DtEmbarkationSlotEntry * myEntry
Definition: embarkationSlotManager.h:30
Definition: embarkationSlotManager.h:92
DtLoadPoint; Readable/writeable object for describing position for entity loading/unloading.
Definition: loadPoint.h:22
std::vector< DtUUID > myReservedBy
Definition: embarkationSlotManager.h:31
const DtEmbarkationSlotEntryMap & slots() const
Definition: embarkationSlotManager.h:193
Definition: readerWriter.h:85
Definition: readerWriterRegistry.h:39
DtRwTemplatedListPtr< DtReservedSlot, true > DtReservedSlotList
Definition: embarkationSlotManager.h:95
Definition: embarkationSlotManager.h:39
std::vector< DtVector > myLoadPath
Definition: embarkationSlotManager.h:56
DtEmbarkationSlotEntry.
Definition: embarkationSlotEntry.h:27
DtRwInt myDisembarkGridCell
The currently disembarking grid cell to use.
Definition: embarkationSlotManager.h:254
Definition: rwVector.h:23
int mySlot
Definition: embarkationSlotManager.h:55
std::vector< DtLoadPoint > DtLoadPathPoints
Definition: embarkationSlotManager.h:90
static const DtUUID & nullUUID()
DtRwSimObjectReferenceList myReservedBy
Definition: embarkationSlotManager.h:86
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
std::map< int, DtReservedEmbarkationSlotEntry > DtEmbarkationSlotEntryMap
Definition: embarkationSlotManager.h:89
Description: Readable, Writable int.
Definition: rwInt.h:25
DtReservedSlotList myReservedSlots
Only valid for load/get time.
Definition: embarkationSlotManager.h:257
DtEmbarkationSlotInformation & operator=(const DtEmbarkationSlotInformation &orig)
Definition: embarkationSlotManager.h:44
DtRwTemplatedListPtr< DtSlotExclusion, true > mySlotExclusions
Definition: embarkationSlotManager.h:244
int reservedSlot() const
Definition: embarkationSlotManager.h:264
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
DtRwVector myDisembarkGridSize
Disembark position variables; Currently only uses x, y variables.
Definition: embarkationSlotManager.h:248
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
virtual void putData(std::string &fp, int indentLevel=0)
Deriving class overrides these to get/put class specific data.
double myScalingFactor
Local variables.
Definition: embarkationSlotManager.h:260
DtSlotExclusion.
Definition: slotExclusion.h:19
const DtEmbarkationSlotEntry * myEntry
Definition: embarkationSlotManager.h:54
const DtRwTemplatedListPtr< DtLoadPoint, true > & ingressPoints() const
Definition: embarkationSlotManager.h:194
const DtRwTemplatedListPtr< DtLoadPoint, true > & egressPoints() const
Definition: embarkationSlotManager.h:195
DtRwVector myDisembarkGridCellSize
Currently only uses x, y variables for spacing.
Definition: embarkationSlotManager.h:251
DtRwTemplatedListPtr< DtLoadPoint, true > myIngressPoints
Definition: embarkationSlotManager.h:242
tbb::spin_rw_mutex mySlotsMutex
Definition: embarkationSlotManager.h:240
DtRwTemplatedListPtr< DtLoadPoint, true > myEgressPoints
Definition: embarkationSlotManager.h:243
DtSimulationServices * mySimulationServices
Definition: embarkationSlotManager.h:261
DtEmbarkationSlotEntryMap mySlots
Definition: embarkationSlotManager.h:241
DtRwInt myReservedSlot
Definition: embarkationSlotManager.h:85

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)