VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
130 protected:
131 
133  friend class boost::serialization::access;
134 
138  template<class Archive>
139  void serialize(Archive & ar, const unsigned int version)
140  {
141  ar & BOOST_SERIALIZATION_NVP(myMovementFile);
142  ar & BOOST_SERIALIZATION_NVP(myCompletionRule);
143  if (version >= 2)
144  {
145  ar & BOOST_SERIALIZATION_NVP(myClampType);
146 
147  if (version >= 3)
148  {
149  ar & BOOST_SERIALIZATION_NVP(myFileConfiguration);
150  }
151  }
152  else if (Archive::is_loading::value)
153  {
154  bool myGroundClamp;
155 
156  ar & BOOST_SERIALIZATION_NVP(myGroundClamp);
157 
158  if (myGroundClamp)
159  {
160  myClampType = PhaseGroundClampHighFidelity;
161  }
162  }
163 
164  ar & BOOST_SERIALIZATION_NVP(mySimulationStartTimeOffset);
165  ar & BOOST_SERIALIZATION_NVP(myEntityType);
166  }
167 
168 protected:
169  std::string myMovementFile;
172  std::string myEntityType;
173  std::string myFileConfiguration;
177 };
178 
182 
186 {
187 public:
188  typedef std::vector<DtScriptedMovementPhase> Phases;
189 
190 public:
191 
194 
196  DtScriptedMovementObject(int type);
197 
199  virtual ~DtScriptedMovementObject();
200 
203 
205  DtScriptedMovementObject& operator=(const DtScriptedMovementObject& orig);
206 
208  virtual void setName(const std::string&);
209  virtual const std::string& name() const;
210 
212  virtual const DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration() const;
213  virtual DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration();
214 
216  virtual void addPhase(const DtScriptedMovementPhase&);
217 
219  virtual void removePhase(int);
220 
222  virtual const Phases& phases() const;
223 
225  virtual DtScriptedMovementPhase& phase(int);
226  virtual const DtScriptedMovementPhase& phase(int) const;
227 
229  virtual void setPhases(const Phases&);
230 
232  virtual bool setPhase(int p, const DtScriptedMovementPhase& phase);
233 
235  virtual bool load(const DtFilename&);
236 
238  virtual DtFilename loadedPath() const;
239 
242  virtual bool save(const DtFilename&);
243 
245  virtual bool save();
246 
248  virtual bool hasValidPhases(double simTimeDelta, const std::set<int>& phasesPerformed);
249 
251  virtual std::set<int> availablePhases(double simTimeDelta, const std::set<int>& phasesPerformed);
252 
254  virtual void setFilename(const DtFilename&);
255 
257  virtual bool remove();
258 
260  virtual int scriptType() const;
261 
263  virtual void setDescription(const std::string&);
264  virtual const std::string& description() const;
265 
269  virtual void setCategories(const std::string&);
270  virtual void setCategories(const std::vector<std::string>&);
271  virtual std::vector<std::string> categories() const;
272  virtual void addCategory(const std::string&);
273  virtual void removeCategory(const std::string&);
274  virtual const std::string& categoriesAsString() const;
275  virtual bool hasCategory(const std::string&) const;
276  virtual void renameCategory(const std::string& oldName, const std::string& newName);
277 
278 protected:
279 
281  friend class boost::serialization::access;
282 
286  template<class Archive>
287  void serialize(Archive & ar, const unsigned int version)
288  {
289  ar & BOOST_SERIALIZATION_NVP(myName);
290 
291  if (version <= 2)
292  {
293  DtScriptedMovementFileConfiguration myMovementFileConfiguration;
294  ar & BOOST_SERIALIZATION_NVP(myMovementFileConfiguration);
295 
296  myPreviousConfiguration = myMovementFileConfiguration;
297  }
298 
299  ar & BOOST_SERIALIZATION_NVP(myPhases);
300 
301  if (version >= 2)
302  {
303  ar & BOOST_SERIALIZATION_NVP(myScriptType);
304 
305  if (version >= 3)
306  {
307  ar & BOOST_SERIALIZATION_NVP(myDescription);
308  ar & BOOST_SERIALIZATION_NVP(myCategories);
309  }
310  }
311  else if (Archive::is_loading::value)
312  {
313  myScriptType = DtBallisticMissileMovementScript;
314  }
315  }
316 
317 protected:
319  std::string myName;
321  DtFilename myFilename;
322  std::string myCategories;
323  std::string myDescription;
325 };
326 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)