VR-Forces 4.2 Class Documentation
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  PhaseGroundClampNone = 4,
58  PhaseClampWhileAltitudeChangeIsZero = 5
59  };
60 
63 
65  virtual ~DtScriptedMovementPhase();
66 
69 
72 
77  virtual void setMovementFile(const std::string&);
78  virtual const std::string& movementFile() const;
79 
82  virtual void setFileConfiguration(const std::string&);
83  virtual const std::string& fileConfiguration() const;
84 
87  virtual void setCompletionRule(CompletionRule);
88  virtual CompletionRule completionRule() const;
89 
91  virtual void setClampType(ClampType);
92  virtual ClampType clampType() const;
93 
95  virtual void setEntityType(const DtEntityType&);
96  virtual DtEntityType entityType() const;
97 
100  virtual bool canBePerformed(double deltaTime) const;
101 
103  virtual bool canStillBePerformed(double deltatTime) const;
104 
107  virtual bool loadMovementFile(const DtFilename& rootPath, const std::string&, int rowsToLoad = -1);
108 
110  virtual bool isLoaded() const;
111 
113  virtual double simTime(int row) const;
114 
116  virtual DtVector bodyOffsetVector(int row) const;
117 
120  virtual DtTaitBryan orientationOffset(int row) const;
121 
123  virtual void setSimulationStartTimeOffset(double t);
124 
126  virtual double simulationStartTimeOffset() const;
127 
128 protected:
129 
131  friend class boost::serialization::access;
132 
136  template<class Archive>
137  void serialize(Archive & ar, const unsigned int version)
138  {
139  ar & BOOST_SERIALIZATION_NVP(myMovementFile);
140  ar & BOOST_SERIALIZATION_NVP(myCompletionRule);
141  if (version >= 2)
142  {
143  ar & BOOST_SERIALIZATION_NVP(myClampType);
144 
145  if (version >= 3)
146  {
147  ar & BOOST_SERIALIZATION_NVP(myFileConfiguration);
148  }
149  }
150  else if (Archive::is_loading::value)
151  {
152  bool myGroundClamp;
153 
154  ar & BOOST_SERIALIZATION_NVP(myGroundClamp);
155 
156  if (myGroundClamp)
157  {
158  myClampType = PhaseGroundClampHighFidelity;
159  }
160  }
161 
162  ar & BOOST_SERIALIZATION_NVP(mySimulationStartTimeOffset);
163  ar & BOOST_SERIALIZATION_NVP(myEntityType);
164  }
165 
166 protected:
167  std::string myMovementFile;
170  std::string myEntityType;
171  std::string myFileConfiguration;
175 };
176 
180 
184 {
185 public:
186  typedef std::vector<DtScriptedMovementPhase> Phases;
187 
188 public:
189 
192 
194  DtScriptedMovementObject(int type);
195 
197  virtual ~DtScriptedMovementObject();
198 
201 
203  DtScriptedMovementObject& operator=(const DtScriptedMovementObject& orig);
204 
206  virtual void setName(const std::string&);
207  virtual const std::string& name() const;
208 
210  virtual const DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration() const;
211  virtual DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration();
212 
214  virtual void addPhase(const DtScriptedMovementPhase&);
215 
217  virtual void removePhase(int);
218 
220  virtual const Phases& phases() const;
221 
223  virtual DtScriptedMovementPhase& phase(int);
224  virtual const DtScriptedMovementPhase& phase(int) const;
225 
227  virtual void setPhases(const Phases&);
228 
230  virtual bool setPhase(int p, const DtScriptedMovementPhase& phase);
231 
233  virtual bool load(const DtFilename&);
234 
236  virtual DtFilename loadedPath() const;
237 
240  virtual bool save(const DtFilename&);
241 
243  virtual bool save();
244 
246  virtual bool hasValidPhases(double simTimeDelta, const std::set<int>& phasesPerformed);
247 
249  virtual std::set<int> availablePhases(double simTimeDelta, const std::set<int>& phasesPerformed);
250 
252  virtual void setFilename(const DtFilename&);
253 
255  virtual bool remove();
256 
258  virtual int scriptType() const;
259 
261  virtual void setDescription(const std::string&);
262  virtual const std::string& description() const;
263 
267  virtual void setCategories(const std::string&);
268  virtual void setCategories(const std::vector<std::string>&);
269  virtual std::vector<std::string> categories() const;
270  virtual void addCategory(const std::string&);
271  virtual void removeCategory(const std::string&);
272  virtual const std::string& categoriesAsString() const;
273  virtual bool hasCategory(const std::string&) const;
274  virtual void renameCategory(const std::string& oldName, const std::string& newName);
275 
276 protected:
277 
279  friend class boost::serialization::access;
280 
284  template<class Archive>
285  void serialize(Archive & ar, const unsigned int version)
286  {
287  ar & BOOST_SERIALIZATION_NVP(myName);
288 
289  if (version <= 2)
290  {
291  DtScriptedMovementFileConfiguration myMovementFileConfiguration;
292  ar & BOOST_SERIALIZATION_NVP(myMovementFileConfiguration);
293 
294  myPreviousConfiguration = myMovementFileConfiguration;
295  }
296 
297  ar & BOOST_SERIALIZATION_NVP(myPhases);
298 
299  if (version >= 2)
300  {
301  ar & BOOST_SERIALIZATION_NVP(myScriptType);
302 
303  if (version >= 3)
304  {
305  ar & BOOST_SERIALIZATION_NVP(myDescription);
306  ar & BOOST_SERIALIZATION_NVP(myCategories);
307  }
308  }
309  else if (Archive::is_loading::value)
310  {
311  myScriptType = DtBallisticMissileMovementScript;
312  }
313  }
314 
315 protected:
317  std::string myName;
319  DtFilename myFilename;
320  std::string myCategories;
321  std::string myDescription;
323 };
324 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)