VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
aggregatedMovementActuator.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2008 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
14 
16 #include "features/featureSet.h"
17 #include "features/proj.h"
18 
19 #include <boost/ptr_container/ptr_vector.hpp>
20 
21 class DtInputPortGroup;
22 class DtAnalogInputPort;
26 class DtTerrainInterface;
27 class DtSetDataManager;
28 class DtBooleanInputPort;
29 class DtVectorInputPort;
31 
34 #define ALTITUDE_CHANGE_INCREMENT 304.8
35 
36 namespace MAKVRinTerra
37 {
38  class DtFeatureGeometry;
39 }
40 
47 {
48 public:
49 
52  DtSimManager* simManager, DtComponentDescriptor* compDescriptor,
53  DtReaderWriterRegistry* parentRegistry = 0);
54 
57 
59  virtual bool init();
60 
62  virtual bool createPSR();
63 
65  virtual const char* type() const;
66 
68  virtual void tick();
69 
76  virtual void setOrderedAltitude(double altitude, bool aboveGroundLevel = false);
77 
78 public:
79 
82  static DtSimComponent* creator(const DtString& name, DtVrfObject* object,
83  DtSimManager* simManager, DtComponentDescriptor* compDescriptor,
84  DtReaderWriterRegistry* parentRegistry);
85 
91  static bool setHaltMovementForObstacles(void* controller, DtReaderWriter* value);
92 
96  static bool setObstacleQueryName(void* controller, DtReaderWriter* value);
97 
101  static DtReaderWriter* isHalted(void* controller);
102 
106  static DtReaderWriter* blockingObstacle(void* controller);
107 
111  static DtReaderWriter* timeHalted(void* controller);
113 
114 protected:
115  virtual DtVector calculateProjectedLocation(
116  const DtVector& oldLocalPosition, const DtVector& newBodyVelocity,
117  double newHeading);
118 
120  virtual std::string calculateOrientationAndPosition(
121  const DtVector& newLocalProjectedLocation, double newHeading,
122  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
123 
126  virtual void calculateFuelUsage(
127  double distanceTraveled,
128  double velocity,
129  double altitude);
130 
132  virtual std::string adjustToTerrain(
133  double heading, const DtVector& location, DtVector& newNormal);
134 
135  virtual void updateRepository(const DtVector & position,
136  const DtVector & velocity, const DtVector & acceleration,
137  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity);
138 
141  virtual bool isObstructedByObstacles(const MAKVRinTerra::DtFeatureGeometry& location);
142 
144  static void setObstacleToIgnore(DtSimMessage* msg, void* usr);
145 
148  virtual void processObstacleToIgnore(DtSimMessage* msg);
149 
150 protected:
152  virtual bool createPorts();
153 
155  virtual bool createPortGroups();
156 
157  class ErrorStream;
161  virtual bool haveSupplies(ErrorStream &errorStream) const;
162 
167  virtual double scriptModifier() const;
168 
171  virtual double scriptAdjustment() const;
172 
176  virtual double maximumSpeedModifierFromFeatures(const MAKVRinTerra::DtFeatureGeometry&,
177  double& slope) const;
178 
180  virtual double retrogradeMovementModifier() const;
181 
184 
187 
191  virtual bool checkPassedDestination(const DtVector& currentPosition, DtVector& newLocalProjectedPosition);
192 
195  virtual bool setHaltMovementForObstacles(DtReaderWriter* value);
196 
200  virtual bool setObstacleQueryName(DtReaderWriter* value);
201 
209  virtual void setAircraftAirborne(const DtVector& location);
210 
214  virtual DtReaderWriter* isHalted();
215 
218  virtual DtReaderWriter* blockingObstacle();
219 
222  virtual DtReaderWriter* timeHalted();
223 
224 protected:
225 
236  boost::optional<double> myPrep_desiredAltitude;
238 
240 
243 
251 
258 
263 
270 
278 
283 
289 
292 
295 
298 
300  class MobilityArea : boost::noncopyable
301  {
302  public:
303  typedef boost::ptr_vector<MobilityArea> Vector;
304 
306 
307  const MobilityEntry& entry() const;
308  const FeatureSet& featureSet() const;
309 
310  private:
312  std::auto_ptr<FeatureSet> myFeatureSet;
313  };
314 
317 
318 
321  {
322  public:
323  ErrorStream() : myEmptyFlag(true) { }
324 
325  template <typename T>
326  ErrorStream& operator<< (const T& value)
327  {
328  myEmptyFlag = false;
329  myStream << value;
330  return *this;
331  }
332  std::string str() const
333  {
334  return myStream.str();
335  }
336  bool empty() const
337  {
338  return myEmptyFlag;
339  }
340 
341  private:
342  std::stringstream myStream;
344  };
345 
349 
351  std::auto_ptr<FeatureSet> myEngineeringObjFeatureSet;
352 
355  std::auto_ptr<FeatureSet> myEngineeringObjObstacleFeatureSet;
356 
358 
362 };
363 
364 

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)