VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 "vrfutil/rwString.h"
17 #include "vrfutil/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 
124  virtual DtEmbarkationSlotInformation entityEmbarkationSlotInformation(const DtVrfObject*) const;
125 
127  virtual std::vector<DtEmbarkationSlotInformation> slotInformationFor(const DtEntityType&) const;
128 
131  virtual bool blocked(int iSlot) const;
132  virtual void addSlotExclusion(const DtSlotExclusion&);
133 
135  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtVrfObject*) const;
136  virtual bool canEmbark(const DtEmbarkationSlotEntry*, const DtObjectType&) const;
137 
139  virtual bool available(int) const;
140 
143  virtual bool reserved(int) const;
144 
146  virtual bool reserveSlot(int iSlot, const DtUUID&);
147 
148  virtual void addIngressPoint(const DtLoadPoint&);
150  virtual void ingressPoints(int iSlot, const DtVrfObject* embarkingObject,
151  const DtVrfObject* hostObject, DtEmbarkationSlotInformation& info) const;
152 
153  virtual void addEgressPoint(const DtLoadPoint&);
154  virtual void egressPoints(int iSlot, DtEmbarkationSlotInformation& info) const;
155 
157  virtual void giveUpSlot(int, const DtUUID&);
158 
160  virtual DtEmbarkationSlotManager* clone(const DtString& name, DtReaderWriterRegistry*
161  parentRegistry = NULL);
162 
166  virtual void calculateDisembarkPositions(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
167 
174  virtual DtVector nextDisembarkPosition(const DtVrfObject* parent, const DtVrfObject* disembarking,
175  const DtSimManager* simMgr, const DtVector& lastBodyPos, bool tasked, bool flipBodyX = false,
176  bool flipBodyY = false);
177 
180  virtual void setScalingFactor(double);
181  virtual double scalingFactor() const;
182 
183  const DtEmbarkationSlotEntryMap& slots() const { return mySlots; };
184  const DtRwTemplatedListPtr<DtLoadPoint,true>& ingressPoints() const { return myIngressPoints; };
185  const DtRwTemplatedListPtr<DtLoadPoint,true>& egressPoints() const { return myEgressPoints; };
186  const DtRwTemplatedListPtr<DtSlotExclusion,true>& slotExclustions() const { return mySlotExclusions; };
187 
188 protected:
191  virtual void calculateGridSize(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
192 
195  virtual void calculateGridCellSize(const std::vector<DtSharedVrfObjectReference>&, DtSimManager*);
196 
200  virtual DtDcm finalPositionTransformationMatrix(const DtVrfObject* parent, const DtVector& lastBodyPos) const;
201 
202 protected:
204  virtual bool slotMatches(const DtLoadPoint*, int iSlot) const;
205 
207  virtual void putData(std::string& fp, int indentLevel = 0);
208 
209  virtual bool blocked(int iSlot, const DtSlotExclusion&) const;
210 
217  virtual const DtLoadPoint* bestIngressFor(const DtLoadPoint* ingressA,
218  const DtLoadPoint* ingressB, const DtVrfObject* embarkingObject,
219  const DtVrfObject* hostObject) const;
220 
223  virtual DtVector bodyPositionToLocalPosition(const DtVector& bodyPosition,
224  const DtVrfObject* body) const;
225 
226 protected:
231 
235 
238 
241 
244 
247 };
248 
250 {
251  return myReservedSlot;
252 }
253 
255 {
256  myReservedSlot = s;
257 }
258 
260 {
261  myReservedBy.add(new DtRwVrfObjectReference("reserved-by", s));
262 }
263 
265 {
266  return myReservedBy;
267 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)