VR-Forces 4.8 Class Documentation
 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>
20 
22 class DtVrfObject;
23 class DtSimManager;
24 
27 {
28 public:
30  std::vector<DtUUID> myReservedBy;
31 
32  void addReservedBy(const DtUUID&);
33  void removeReservedBy(const DtUUID&);
34  bool reservedBy(const DtUUID&) const;
35 
36 };
37 
39 {
40 public:
41  DtEmbarkationSlotInformation() : myEntry(NULL), mySlot(-1) {};
42 
44  {
45  myEntry = orig.myEntry;
46  mySlot = orig.mySlot;
47  myLoadPath = orig.myLoadPath;
48 
49  return *this;
50  }
51 
52 public:
54  int mySlot;
55  std::vector<DtVector> myLoadPath;
56 };
57 
59 {
60 public:
62  parentRegistry = NULL);
64  parentRegistry = NULL);
65 
67  DtReservedSlot(const DtString& name, const
69  parentRegistry = NULL);
70 
71  DtReservedSlot(const DtSymbolString& name, const
73  parentRegistry = NULL);
74 
75  virtual ~DtReservedSlot();
76 
77  int reservedSlot() const;
78  void setReservedSlot(int);
79 
80  const DtRwVrfObjectReferenceList& reservedBy() const;
81  void addReservedBy(const DtUUID&);
82 
83 protected:
86 };
87 
88 typedef std::map<int, DtReservedEmbarkationSlotEntry> DtEmbarkationSlotEntryMap;
89 typedef std::vector<DtLoadPoint> DtLoadPathPoints;
90 
92 {
93 public:
95 
97  parentRegistry = NULL);
99  parentRegistry = NULL);
100 
102  DtEmbarkationSlotManager(const DtString& name, const
104  parentRegistry = NULL);
105 
106  DtEmbarkationSlotManager(const DtSymbolString& name, const
108  parentRegistry = NULL);
109 
110  virtual ~DtEmbarkationSlotManager();
111 
112  virtual void addSlot(int iSlot, const DtEmbarkationSlotEntry*);
113 
116  virtual DtEmbarkationSlotInformation slotFor(const DtVrfObject* embarkingObject,
117  const DtVrfObject* hostObject) const;
118 
120  virtual DtEmbarkationSlotInformation slotFor(int slot,
121  const DtVrfObject* embarkingObject,
122  const DtVrfObject* hostObject) const;
123 
126  virtual DtEmbarkationSlotInformation slotFor(const DtString& slotName, const DtString& slotType,
127  const DtVrfObject* embarkingObject,
128  const DtVrfObject* hostObject) const;
129 
131  virtual DtEmbarkationSlotInformation entityEmbarkationSlotInformation(const DtVrfObject*) const;
132 
134  virtual std::vector<DtEmbarkationSlotInformation> slotInformationFor(const DtEntityType&) const;
135 
138  virtual bool blocked(int iSlot) const;
139  virtual void addSlotExclusion(const DtSlotExclusion&);
140 
142  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtVrfObject*) const;
143  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtObjectType&) const;
144 
148  virtual bool available(int, const DtUUID& uuid = DtUUID::nullUUID()) const;
149 
152  virtual bool reserved(int) const;
153 
155  virtual bool reserveSlot(int iSlot, const DtUUID&);
156 
157  virtual void addIngressPoint(const DtLoadPoint&);
159  virtual void ingressPoints(int iSlot, const DtVrfObject* embarkingObject,
160  const DtVrfObject* hostObject, DtEmbarkationSlotInformation& info) const;
161 
162  virtual void addEgressPoint(const DtLoadPoint&);
163  virtual void egressPoints(int iSlot, DtEmbarkationSlotInformation& info) const;
164 
166  virtual void giveUpSlot(int, const DtUUID&);
167 
169  virtual DtEmbarkationSlotManager* clone(const DtString& name, DtReaderWriterRegistry*
170  parentRegistry = NULL);
171 
175  virtual void calculateDisembarkPositions(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
176 
183  virtual DtVector nextDisembarkPosition(const DtVrfObject* parent, const DtVrfObject* disembarking,
184  const DtSimManager* simMgr, const DtVector& lastBodyPos, bool tasked, bool flipBodyX = false,
185  bool flipBodyY = false);
186 
189  virtual void setScalingFactor(double);
190  virtual double scalingFactor() const;
191 
192  const DtEmbarkationSlotEntryMap& slots() const { return mySlots; };
193  const DtRwTemplatedListPtr<DtLoadPoint,true>& ingressPoints() const { return myIngressPoints; };
194  const DtRwTemplatedListPtr<DtLoadPoint,true>& egressPoints() const { return myEgressPoints; };
195  const DtRwTemplatedListPtr<DtSlotExclusion,true>& slotExclustions() const { return mySlotExclusions; };
196 
197 protected:
200  virtual void calculateGridSize(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
201 
204  virtual void calculateGridCellSize(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
205 
209  virtual DtDcm finalPositionTransformationMatrix(const DtVrfObject* parent, const DtVector& lastBodyPos) const;
210 
211 protected:
213  virtual bool matchesNameAndType(const DtString& name, const DtString& type, const DtEmbarkationSlotEntry*) const;
214 
216  virtual bool slotMatches(const DtLoadPoint*, int iSlot) const;
217 
219  virtual void putData(std::string& fp, int indentLevel = 0);
220 
221  virtual bool blocked(int iSlot, const DtSlotExclusion&) const;
222 
229  virtual const DtLoadPoint* bestIngressFor(const DtLoadPoint* ingressA,
230  const DtLoadPoint* ingressB, const DtVrfObject* embarkingObject,
231  const DtVrfObject* hostObject) const;
232 
235  virtual DtVector bodyPositionToLocalPosition(const DtVector& bodyPosition,
236  const DtVrfObject* body) const;
237 
238 protected:
243 
247 
250 
253 
256 
259 };
260 
262 {
263  return myReservedSlot;
264 }
265 
267 {
268  myReservedSlot = s;
269 }
270 
272 {
273  myReservedBy.add(new DtRwVrfObjectReference("reserved-by", s));
274 }
275 
277 {
278  return myReservedBy;
279 }
DtEmbarkationSlotInformation()
Definition: embarkationSlotManager.h:41
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
const DtRwTemplatedListPtr< DtSlotExclusion, true > & slotExclustions() const
Definition: embarkationSlotManager.h:195
Definition: embarkationSlotManager.h:58
void setReservedSlot(int)
Definition: embarkationSlotManager.h:266
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Definition: symbolString.h:20
Definition: embarkationSlotManager.h:26
const DtEmbarkationSlotEntry * myEntry
Definition: embarkationSlotManager.h:29
void addReservedBy(const DtUUID &)
Definition: embarkationSlotManager.h:271
Definition: embarkationSlotManager.h:91
DtLoadPoint; Readable/writeable object for describing position for entity loading/unloading.
Definition: loadPoint.h:22
std::vector< DtUUID > myReservedBy
Definition: embarkationSlotManager.h:30
const DtEmbarkationSlotEntryMap & slots() const
Definition: embarkationSlotManager.h:192
Definition: readerWriter.h:85
Definition: readerWriterRegistry.h:39
DtRwTemplatedListPtr< DtReservedSlot, true > DtReservedSlotList
Definition: embarkationSlotManager.h:94
Definition: embarkationSlotManager.h:38
std::vector< DtVector > myLoadPath
Definition: embarkationSlotManager.h:55
DtEmbarkationSlotEntry.
Definition: embarkationSlotEntry.h:27
DtRwInt myDisembarkGridCell
The currently disembarking grid cell to use.
Definition: embarkationSlotManager.h:252
Definition: objectType.h:27
virtual DtListItem * add(T *data)
Define this function to hide the DtRwList version, and accept only the specific DtReaderWriter subcla...
Definition: rwTemplatedList.h:60
Definition: rwVector.h:23
int mySlot
Definition: embarkationSlotManager.h:54
std::vector< DtLoadPoint > DtLoadPathPoints
Definition: embarkationSlotManager.h:89
static const DtUUID & nullUUID()
#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:88
Description: Readable, Writable int.
Definition: rwInt.h:25
DtReservedSlotList myReservedSlots
Only valid for load/get time.
Definition: embarkationSlotManager.h:255
DtEmbarkationSlotInformation & operator=(const DtEmbarkationSlotInformation &orig)
Definition: embarkationSlotManager.h:43
DtRwTemplatedListPtr< DtSlotExclusion, true > mySlotExclusions
Definition: embarkationSlotManager.h:242
DtRwVrfObjectReferenceList myReservedBy
Definition: embarkationSlotManager.h:85
int reservedSlot() const
Definition: embarkationSlotManager.h:261
Class used as the reader/writer implementation of the DtVrfObjectReference.
Definition: vrfObjectReference.h:204
DtRwVector myDisembarkGridSize
Disembark position variables; Currently only uses x, y variables.
Definition: embarkationSlotManager.h:246
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:258
DtSlotExclusion.
Definition: slotExclusion.h:19
const DtEmbarkationSlotEntry * myEntry
Definition: embarkationSlotManager.h:53
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
const DtRwTemplatedListPtr< DtLoadPoint, true > & ingressPoints() const
Definition: embarkationSlotManager.h:193
const DtRwTemplatedListPtr< DtLoadPoint, true > & egressPoints() const
Definition: embarkationSlotManager.h:194
const DtRwVrfObjectReferenceList & reservedBy() const
Definition: embarkationSlotManager.h:276
DtRwVector myDisembarkGridCellSize
Currently only uses x, y variables for spacing.
Definition: embarkationSlotManager.h:249
DtRwTemplatedListPtr< DtLoadPoint, true > myIngressPoints
Definition: embarkationSlotManager.h:240
DtRwTemplatedListPtr< DtLoadPoint, true > myEgressPoints
Definition: embarkationSlotManager.h:241
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: vrfObjectReference.h:305
DtEmbarkationSlotEntryMap mySlots
Definition: embarkationSlotManager.h:239
DtRwInt myReservedSlot
Definition: embarkationSlotManager.h:84

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)