VR-Forces 4.7 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>
19 
21 class DtVrfObject;
22 class DtSimManager;
23 
26 {
27 public:
29  std::vector<DtUUID> myReservedBy;
30 
31  void addReservedBy(const DtUUID&);
32  void removeReservedBy(const DtUUID&);
33  bool reservedBy(const DtUUID&) const;
34 
35 };
36 
38 {
39 public:
40  DtEmbarkationSlotInformation() : myEntry(NULL), mySlot(-1) {};
41 
43  {
44  myEntry = orig.myEntry;
45  mySlot = orig.mySlot;
46  myLoadPath = orig.myLoadPath;
47 
48  return *this;
49  }
50 
51 public:
53  int mySlot;
54  std::vector<DtVector> myLoadPath;
55 };
56 
58 {
59 public:
61  parentRegistry = NULL);
63  parentRegistry = NULL);
64 
66  DtReservedSlot(const DtString& name, const
68  parentRegistry = NULL);
69 
70  DtReservedSlot(const DtSymbolString& name, const
72  parentRegistry = NULL);
73 
74  virtual ~DtReservedSlot();
75 
76  int reservedSlot() const;
77  void setReservedSlot(int);
78 
79  const DtRwVrfObjectReferenceList& reservedBy() const;
80  void addReservedBy(const DtUUID&);
81 
82 protected:
85 };
86 
87 typedef std::map<int, DtReservedEmbarkationSlotEntry> DtEmbarkationSlotEntryMap;
88 typedef std::vector<DtLoadPoint> DtLoadPathPoints;
89 
91 {
92 public:
94 
96  parentRegistry = NULL);
98  parentRegistry = NULL);
99 
101  DtEmbarkationSlotManager(const DtString& name, const
103  parentRegistry = NULL);
104 
105  DtEmbarkationSlotManager(const DtSymbolString& name, const
107  parentRegistry = NULL);
108 
109  virtual ~DtEmbarkationSlotManager();
110 
111  virtual void addSlot(int iSlot, const DtEmbarkationSlotEntry*);
112 
115  virtual DtEmbarkationSlotInformation slotFor(const DtVrfObject* embarkingObject,
116  const DtVrfObject* hostObject) const;
117 
119  virtual DtEmbarkationSlotInformation slotFor(int slot,
120  const DtVrfObject* embarkingObject,
121  const DtVrfObject* hostObject) const;
122 
125  virtual DtEmbarkationSlotInformation slotFor(const DtString& slotName, const DtString& slotType,
126  const DtVrfObject* embarkingObject,
127  const DtVrfObject* hostObject) const;
128 
130  virtual DtEmbarkationSlotInformation entityEmbarkationSlotInformation(const DtVrfObject*) const;
131 
133  virtual std::vector<DtEmbarkationSlotInformation> slotInformationFor(const DtEntityType&) const;
134 
137  virtual bool blocked(int iSlot) const;
138  virtual void addSlotExclusion(const DtSlotExclusion&);
139 
141  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtVrfObject*) const;
142  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtObjectType&) const;
143 
147  virtual bool available(int, const DtUUID& uuid = DtUUID::nullUUID()) const;
148 
151  virtual bool reserved(int) const;
152 
154  virtual bool reserveSlot(int iSlot, const DtUUID&);
155 
156  virtual void addIngressPoint(const DtLoadPoint&);
158  virtual void ingressPoints(int iSlot, const DtVrfObject* embarkingObject,
159  const DtVrfObject* hostObject, DtEmbarkationSlotInformation& info) const;
160 
161  virtual void addEgressPoint(const DtLoadPoint&);
162  virtual void egressPoints(int iSlot, DtEmbarkationSlotInformation& info) const;
163 
165  virtual void giveUpSlot(int, const DtUUID&);
166 
168  virtual DtEmbarkationSlotManager* clone(const DtString& name, DtReaderWriterRegistry*
169  parentRegistry = NULL);
170 
174  virtual void calculateDisembarkPositions(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
175 
182  virtual DtVector nextDisembarkPosition(const DtVrfObject* parent, const DtVrfObject* disembarking,
183  const DtSimManager* simMgr, const DtVector& lastBodyPos, bool tasked, bool flipBodyX = false,
184  bool flipBodyY = false);
185 
188  virtual void setScalingFactor(double);
189  virtual double scalingFactor() const;
190 
191  const DtEmbarkationSlotEntryMap& slots() const { return mySlots; };
192  const DtRwTemplatedListPtr<DtLoadPoint,true>& ingressPoints() const { return myIngressPoints; };
193  const DtRwTemplatedListPtr<DtLoadPoint,true>& egressPoints() const { return myEgressPoints; };
194  const DtRwTemplatedListPtr<DtSlotExclusion,true>& slotExclustions() const { return mySlotExclusions; };
195 
196 protected:
199  virtual void calculateGridSize(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
200 
203  virtual void calculateGridCellSize(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
204 
208  virtual DtDcm finalPositionTransformationMatrix(const DtVrfObject* parent, const DtVector& lastBodyPos) const;
209 
210 protected:
212  virtual bool matchesNameAndType(const DtString& name, const DtString& type, const DtEmbarkationSlotEntry*) const;
213 
215  virtual bool slotMatches(const DtLoadPoint*, int iSlot) const;
216 
218  virtual void putData(std::string& fp, int indentLevel = 0);
219 
220  virtual bool blocked(int iSlot, const DtSlotExclusion&) const;
221 
228  virtual const DtLoadPoint* bestIngressFor(const DtLoadPoint* ingressA,
229  const DtLoadPoint* ingressB, const DtVrfObject* embarkingObject,
230  const DtVrfObject* hostObject) const;
231 
234  virtual DtVector bodyPositionToLocalPosition(const DtVector& bodyPosition,
235  const DtVrfObject* body) const;
236 
237 protected:
242 
246 
249 
252 
255 
258 };
259 
261 {
262  return myReservedSlot;
263 }
264 
266 {
267  myReservedSlot = s;
268 }
269 
271 {
272  myReservedBy.add(new DtRwVrfObjectReference("reserved-by", s));
273 }
274 
276 {
277  return myReservedBy;
278 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)