VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedMovementObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/vrfutilDefines.h"
12 #include "vrfutil/movementFile.h"
13 
14 #include <boost/serialization/access.hpp>
15 #include <boost/serialization/nvp.hpp>
16 #include <boost/serialization/list.hpp>
17 #include <boost/serialization/map.hpp>
18 #include <boost/serialization/vector.hpp>
19 #include <boost/serialization/string.hpp>
20 
21 #include <vlutil/vlFilename.h>
22 #include <vlpi/entityType.h>
23 
24 #include <set>
25 #include <vector>
26 
31 
37 
39 {
40 public:
42  {
43  Detonate = 1,
47  StayAroundAndStop
48  };
49 
50  enum ClampType
51  {
52  PhaseGroundClampHighFidelity = 1,
53  PhaseGroundClampLowFidelity = 2,
54  PhaseAltitudeIsAboveTerrain = 3,
55  PhaseGroundClampGeodeticNone = 4,
58  PhaseClampWhileAltitudeChangeIsZero = 5,
59  PhasePhasedArrayRadarFaceCartesian = 6,
60  PhaseGroundClampTopographicNone = 7
61  };
62 
65 
67  virtual ~DtScriptedMovementPhase();
68 
71 
74 
79  virtual void setMovementFile(const std::string&);
80  virtual const std::string& movementFile() const;
81 
84  virtual void setFileConfiguration(const std::string&);
85  virtual const std::string& fileConfiguration() const;
86 
89  virtual void setCompletionRule(CompletionRule);
90  virtual CompletionRule completionRule() const;
91 
93  virtual void setClampType(ClampType);
94  virtual ClampType clampType() const;
95 
97  virtual void setEntityType(const DtEntityType&);
98  virtual DtEntityType entityType() const;
99 
102  virtual bool canBePerformed(double deltaTime) const;
103 
105  virtual bool canStillBePerformed(double deltatTime) const;
106 
109  virtual bool loadMovementFile(const DtFilename& rootPath, const std::string&, int rowsToLoad = -1);
110 
112  virtual bool isLoaded() const;
113 
115  virtual double simTime(int row) const;
116 
118  virtual DtVector bodyOffsetVector(int row) const;
119 
122  virtual DtTaitBryan orientationOffset(int row) const;
123 
125  virtual void setSimulationStartTimeOffset(double t);
126 
128  virtual double simulationStartTimeOffset() const;
129 
131  virtual void setFileConfiguration(const DtString&);
132 
134  const DtMovementFile& movementFileData() const { return myMovementFileData; };
135  DtMovementFile& movementFileData() { return myMovementFileData; };
136 
137 protected:
138 
140  friend class boost::serialization::access;
141 
145  template<class Archive>
146  void serialize(Archive & ar, const unsigned int version)
147  {
148  ar & BOOST_SERIALIZATION_NVP(myMovementFile);
149  ar & BOOST_SERIALIZATION_NVP(myCompletionRule);
150  if (version >= 2)
151  {
152  ar & BOOST_SERIALIZATION_NVP(myClampType);
153 
154  if (version >= 3)
155  {
156  ar & BOOST_SERIALIZATION_NVP(myFileConfiguration);
157  }
158  }
159  else if (Archive::is_loading::value)
160  {
161  bool myGroundClamp;
162 
163  ar & BOOST_SERIALIZATION_NVP(myGroundClamp);
164 
165  if (myGroundClamp)
166  {
167  myClampType = PhaseGroundClampHighFidelity;
168  }
169  }
170 
171  ar & BOOST_SERIALIZATION_NVP(mySimulationStartTimeOffset);
172  ar & BOOST_SERIALIZATION_NVP(myEntityType);
173  }
174 
175 protected:
176  std::string myMovementFile;
179  std::string myEntityType;
180  std::string myFileConfiguration;
184 };
185 
189 
193 {
194 public:
195  typedef std::vector<DtScriptedMovementPhase> Phases;
196 
197 public:
198 
201 
203  DtScriptedMovementObject(int type);
204 
206  virtual ~DtScriptedMovementObject();
207 
210 
212  DtScriptedMovementObject& operator=(const DtScriptedMovementObject& orig);
213 
215  virtual void setName(const std::string&);
216  virtual const std::string& name() const;
217 
219  virtual const DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration() const;
220  virtual DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration();
221 
223  virtual void addPhase(const DtScriptedMovementPhase&);
224 
226  virtual void removePhase(int);
227 
229  virtual const Phases& phases() const;
230 
232  virtual DtScriptedMovementPhase& phase(int);
233  virtual const DtScriptedMovementPhase& phase(int) const;
234 
236  virtual void setPhases(const Phases&);
237 
239  virtual bool setPhase(int p, const DtScriptedMovementPhase& phase);
240 
242  virtual bool load(const DtFilename&);
243 
246  virtual void setLoadedPath(const DtFilename&);
247 
249  virtual DtFilename loadedPath() const;
250 
253  virtual bool save(const DtFilename&);
254 
256  virtual bool save();
257 
259  virtual bool hasValidPhases(double simTimeDelta, const std::set<int>& phasesPerformed);
260 
262  virtual std::set<int> availablePhases(double simTimeDelta, const std::set<int>& phasesPerformed);
263 
265  virtual void setFilename(const DtFilename&);
266 
268  virtual bool remove();
269 
271  virtual int scriptType() const;
272 
274  virtual void setDescription(const std::string&);
275  virtual const std::string& description() const;
276 
280  virtual void setCategories(const std::string&);
281  virtual void setCategories(const std::vector<std::string>&);
282  virtual std::vector<std::string> categories() const;
283  virtual void addCategory(const std::string&);
284  virtual void removeCategory(const std::string&);
285  virtual const std::string& categoriesAsString() const;
286  virtual bool hasCategory(const std::string&) const;
287  virtual void renameCategory(const std::string& oldName, const std::string& newName);
288 
289 protected:
290 
292  friend class boost::serialization::access;
293 
297  template<class Archive>
298  void serialize(Archive & ar, const unsigned int version)
299  {
300  ar & BOOST_SERIALIZATION_NVP(myName);
301 
302  if (version <= 2)
303  {
304  DtScriptedMovementFileConfiguration myMovementFileConfiguration;
305  ar & BOOST_SERIALIZATION_NVP(myMovementFileConfiguration);
306 
307  myPreviousConfiguration = myMovementFileConfiguration;
308  }
309 
310  ar & BOOST_SERIALIZATION_NVP(myPhases);
311 
312  if (version >= 2)
313  {
314  ar & BOOST_SERIALIZATION_NVP(myScriptType);
315 
316  if (version >= 3)
317  {
318  ar & BOOST_SERIALIZATION_NVP(myDescription);
319  ar & BOOST_SERIALIZATION_NVP(myCategories);
320  }
321  }
322  else if (Archive::is_loading::value)
323  {
324  myScriptType = DtBallisticMissileMovementScript;
325  }
326  }
327 
328 protected:
330  std::string myName;
332  DtFilename myFilename;
333  std::string myCategories;
334  std::string myDescription;
336 };
337 

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)