VR-Forces Developer's Guide
 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 
251  const DtFilename& loadedFile() const
252  {
253  return myFilename;
254  }
255 
258  virtual bool save(const DtFilename&);
259 
261  virtual bool save();
262 
264  virtual bool hasValidPhases(double simTimeDelta, const std::set<int>& phasesPerformed);
265 
267  virtual std::set<int> availablePhases(double simTimeDelta, const std::set<int>& phasesPerformed);
268 
270  virtual void setFilename(const DtFilename&);
271 
273  virtual bool remove();
274 
276  virtual int scriptType() const;
277 
279  virtual void setDescription(const std::string&);
280  virtual const std::string& description() const;
281 
285  virtual void setCategories(const std::string&);
286  virtual void setCategories(const std::vector<std::string>&);
287  virtual std::vector<std::string> categories() const;
288  virtual void addCategory(const std::string&);
289  virtual void removeCategory(const std::string&);
290  virtual const std::string& categoriesAsString() const;
291  virtual bool hasCategory(const std::string&) const;
292  virtual void renameCategory(const std::string& oldName, const std::string& newName);
293 
294 protected:
295 
297  friend class boost::serialization::access;
298 
302  template<class Archive>
303  void serialize(Archive & ar, const unsigned int version)
304  {
305  ar & BOOST_SERIALIZATION_NVP(myName);
306 
307  if (version <= 2)
308  {
309  DtScriptedMovementFileConfiguration myMovementFileConfiguration;
310  ar & BOOST_SERIALIZATION_NVP(myMovementFileConfiguration);
311 
312  myPreviousConfiguration = myMovementFileConfiguration;
313  }
314 
315  ar & BOOST_SERIALIZATION_NVP(myPhases);
316 
317  if (version >= 2)
318  {
319  ar & BOOST_SERIALIZATION_NVP(myScriptType);
320 
321  if (version >= 3)
322  {
323  ar & BOOST_SERIALIZATION_NVP(myDescription);
324  ar & BOOST_SERIALIZATION_NVP(myCategories);
325  }
326  }
327  else if (Archive::is_loading::value)
328  {
329  myScriptType = DtBallisticMissileMovementScript;
330  }
331  }
332 
333 protected:
335  std::string myName;
337  DtFilename myFilename;
338  std::string myCategories;
339  std::string myDescription;
341 };
342 
std::vector< DtScriptedMovementPhase > Phases
Definition: scriptedMovementObject.h:195
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
std::string myDescription
Definition: scriptedMovementObject.h:339
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the &amp; operator is defined similar to &lt;&lt;...
Definition: scriptedMovementObject.h:146
CompletionRule
Definition: scriptedMovementObject.h:41
DtScriptedMovementFileConfiguration myPreviousConfiguration
Definition: scriptedMovementObject.h:340
std::string myMovementFile
Definition: scriptedMovementObject.h:176
const DtMovementFile & movementFileData() const
Returns movement file.
Definition: scriptedMovementObject.h:134
DtMovementFile myMovementFileData
Definition: scriptedMovementObject.h:181
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the &amp; operator is defined similar to &lt;&lt;...
Definition: scriptedMovementObject.h:303
Definition: scriptedMovementObject.h:44
DtScriptedMovementFileConfiguration myScriptedMovementFileConfiguration
Definition: scriptedMovementObject.h:182
This class will load in and return data from a movement file.
Definition: movementFile.h:273
Phases myPhases
Definition: scriptedMovementObject.h:336
DtFilename myFilename
Definition: scriptedMovementObject.h:337
DtMovementFile & movementFileData()
Definition: scriptedMovementObject.h:135
std::string myFileConfiguration
Definition: scriptedMovementObject.h:180
Definition: scriptedMovementObject.h:46
const DtFilename & loadedFile() const
Definition: scriptedMovementObject.h:251
DtScriptedMovementObject class is a container that describes a scripted movement file and phases for ...
Definition: scriptedMovementObject.h:192
int myScriptType
Definition: scriptedMovementObject.h:334
The DtScriptedMovementObject will contain information about an object that can be used for scripted m...
Definition: scriptedMovementObject.h:38
The DtScriptedMovementObject will contain information about an object that can be used for scripted m...
Definition: movementFile.h:37
std::string myCategories
Definition: scriptedMovementObject.h:338
std::string myName
Definition: scriptedMovementObject.h:335
const int DtBallisticMissileMovementScript
Scripts type is mainly for classification in the gui.
Definition: scriptedMovementObject.h:187
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
Definition: scriptedMovementObject.h:45
ClampType myClampType
Definition: scriptedMovementObject.h:178
const int DtPrecisionMovementScript
Definition: scriptedMovementObject.h:188
ClampType
Definition: scriptedMovementObject.h:50
std::string myEntityType
Definition: scriptedMovementObject.h:179
double mySimulationStartTimeOffset
Definition: scriptedMovementObject.h:183
CompletionRule myCompletionRule
Definition: scriptedMovementObject.h:177

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)