VR-Forces 4.1.1 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 
13 #include <boost/serialization/access.hpp>
14 #include <boost/serialization/nvp.hpp>
15 #include <boost/serialization/list.hpp>
16 #include <boost/serialization/map.hpp>
17 #include <boost/serialization/vector.hpp>
18 #include <boost/serialization/string.hpp>
19 
20 #include <vlutil/vlFilename.h>
21 #include <vlpi/entityType.h>
22 
23 #include <set>
24 #include <vector>
25 
31 
34 {
35 public:
36  struct Column
37  {
39  std::string myColumnType;
40  std::string myColumnUnits;
41 
42  template<class Archive>
43  void serialize(Archive & ar, const unsigned int version)
44  {
45  ar & BOOST_SERIALIZATION_NVP(myColumnInFile);
46  ar & BOOST_SERIALIZATION_NVP(myColumnType);
47  ar & BOOST_SERIALIZATION_NVP(myColumnUnits);
48  }
49  };
50 
51  typedef std::vector<Column> Columns;
52 
54  {
55  Milliseconds = 0,
58  Hours
59  };
60 
62  {
63  Feet = 0,
67  NauticalMiles
68  };
69 
70 public:
73 
76 
79 
82 
105  //
107  virtual void addColumn(const std::string& type, const std::string& units, int columnInFile = -1);
108 
110  virtual void removeColumn(int);
111 
113  virtual const Columns& columns() const;
114  virtual void setColumns(const Columns&);
115 
117  virtual void setRowStart(int);
118 
119  virtual int rowStart() const;
120 
122  virtual int timeColumn() const;
123 
125  virtual int altitudeColumn() const;
126  virtual DistanceConversion altitudeUnits() const;
127 
129  virtual int rangeColumn() const;
130  virtual DistanceConversion rangeUnits() const;
131 
133  virtual int lateralDistanceColumn() const;
134  virtual DistanceConversion lateralDistanceUnits() const;
135 
137  virtual double convertTimeToSeconds(double time) const;
138 
140  virtual void updateCache();
141 
142  virtual TimeConversion mapTimeToInternalValue(const std::string&) const;
143  virtual DistanceConversion mapDistanceToInternalValue(const std::string&) const;
144 
146  virtual double convertDistanceToMeters(double d, DistanceConversion conv) const;
147 
149  virtual DtString toString() const;
150 
152  virtual void fromString(const DtString&);
153 
157  static DtScriptedMovementFileConfiguration defaultConfiguration();
158 
161  virtual bool setColumn(int col, const std::string& type, const std::string& unit, int columnInFile = -1);
162 
164  virtual void column(int col, int& columnInFile, std::string& type, std::string& unit) const;
165 
166 protected:
167 
169  friend class boost::serialization::access;
170 
174  template<class Archive>
175  void serialize(Archive & ar, const unsigned int version)
176  {
177  ar & BOOST_SERIALIZATION_NVP(myRowStart);
178  ar & BOOST_SERIALIZATION_NVP(myColumns);
179 
180  if (Archive::is_loading::value)
181  {
182  updateCache();
183  }
184  }
185 
186 protected:
189 
192  int myCachedColumns[4][2];
193 };
194 
197 {
198 public:
200  DtMovementFile();
201 
203  virtual ~DtMovementFile();
204 
207 
209  DtMovementFile& operator=(const DtMovementFile&);
210 
213  virtual double simTime(int) const;
214 
216  virtual int numRows() const;
217 
221  virtual DtVector bodyOffsetVector(int row) const;
222 
224  virtual bool isLoaded() const;
225 
228  virtual bool load(const DtFilename& file, const DtScriptedMovementFileConfiguration& configuration, int rowsToLoad = -1);
229 
231  virtual int movementRow(double) const;
232 
233 protected:
235  typedef std::vector<double> MovementRow;
236  typedef std::vector<MovementRow> MovementFileData;
238 };
239 
245 {
246 public:
248  {
249  Detonate = 0,
252  StayAround
253  };
254 
257 
259  virtual ~DtScriptedMovementPhase();
260 
263 
266 
271  virtual void setMovementFile(const std::string&);
272  virtual const std::string& movementFile() const;
273 
276  virtual void setCompletionRule(CompletionRule);
277  virtual CompletionRule completionRule() const;
278 
280  virtual void setGroundClamp(bool);
281  virtual bool groundClamp() const;
282 
284  virtual void setEntityType(const DtEntityType&);
285  virtual DtEntityType entityType() const;
286 
289  virtual bool canBePerformed(double deltaTime) const;
290 
292  virtual bool canStillBePerformed(double deltatTime) const;
293 
296  virtual bool loadMovementFile(const DtFilename& rootPath, const DtScriptedMovementFileConfiguration&, int rowsToLoad = -1);
297 
299  virtual bool isLoaded() const;
300 
302  virtual double simTime(int row) const;
303 
305  virtual DtVector bodyOffsetVector(int row) const;
306 
308  virtual void setSimulationStartTimeOffset(double t);
309 
311  virtual double simulationStartTimeOffset() const;
312 
313 protected:
314 
316  friend class boost::serialization::access;
317 
321  template<class Archive>
322  void serialize(Archive & ar, const unsigned int version)
323  {
324  ar & BOOST_SERIALIZATION_NVP(myMovementFile);
325  ar & BOOST_SERIALIZATION_NVP(myCompletionRule);
326  ar & BOOST_SERIALIZATION_NVP(myGroundClamp);
327  ar & BOOST_SERIALIZATION_NVP(mySimulationStartTimeOffset);
328  ar & BOOST_SERIALIZATION_NVP(myEntityType);
329  }
330 
331 protected:
332  std::string myMovementFile;
335  std::string myEntityType;
338 };
339 
343 {
344 public:
345  typedef std::vector<DtScriptedMovementPhase> Phases;
346 
347 public:
348 
351 
353  virtual ~DtScriptedMovementObject();
354 
357 
359  DtScriptedMovementObject& operator=(const DtScriptedMovementObject& orig);
360 
362  virtual void setName(const std::string&);
363  virtual const std::string& name() const;
364 
367  virtual void setScriptedMovementFileConfiguration(const DtScriptedMovementFileConfiguration&);
368  virtual const DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration() const;
369  virtual DtScriptedMovementFileConfiguration& scriptedMovementFileConfiguration();
370 
372  virtual void addPhase(const DtScriptedMovementPhase&);
373 
375  virtual void removePhase(int);
376 
378  virtual const Phases& phases() const;
379 
381  virtual DtScriptedMovementPhase phase(int) const;
382 
384  virtual void setPhases(const Phases&);
385 
387  virtual bool setPhase(int p, const DtScriptedMovementPhase& phase);
388 
390  virtual bool load(const DtFilename&);
391 
393  virtual DtFilename loadedPath() const;
394 
397  virtual bool save(const DtFilename&);
398 
400  virtual bool save();
401 
403  virtual bool hasValidPhases(double simTimeDelta, const std::set<int>& phasesPerformed);
404 
406  virtual std::set<int> availablePhases(double simTimeDelta, const std::set<int>& phasesPerformed);
407 
409  virtual void setFilename(const DtFilename&);
410 
412  virtual bool remove();
413 
414 protected:
415 
417  friend class boost::serialization::access;
418 
422  template<class Archive>
423  void serialize(Archive & ar, const unsigned int version)
424  {
425  ar & BOOST_SERIALIZATION_NVP(myName);
426  ar & BOOST_SERIALIZATION_NVP(myMovementFileConfiguration);
427  ar & BOOST_SERIALIZATION_NVP(myPhases);
428  }
429 
430 protected:
431  std::string myName;
434  DtFilename myFilename;
435 };

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)