VR-Forces 4.8 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 
Represents a set of DtFeature objects or others which conform to the DtFeature concept.
Definition: featureSet.h:101
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
std::string str() const
Definition: aggregatedMovementActuator.h:332
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
MAKVRinTerra::DtFeatureSet FeatureSet
Feature set type.
Definition: aggregatedMovementActuator.h:294
DtAnalogInputPort * myAltitudeInputPort
Input Port Name: desired-altitude Input Port Description: Desired altitude to move towards (MSL)...
Definition: aggregatedMovementActuator.h:269
Description: This repository holds all information that is common to all the forms of all objects wit...
Definition: vrfMovingObjectStateRepository.h:26
Definition: aggregatedMovementActuatorPSR.h:23
const DtActuatorComponent & operator=(const DtActuatorComponent &orig)
assignment operator
DtSetDataManager * mySetDataManager
Ref to set data manager.
Definition: aggregatedMovementActuator.h:291
End User Description: Actuator for moving aggregated aggregates along the ground. ...
Definition: aggregatedMovementActuator.h:46
A convenience for recording error messages during a tick.
Definition: aggregatedMovementActuator.h:320
End User Description: DtActuatorComponentDescriptor contains parameters common to all actuator compon...
Definition: actuatorComponentDescriptor.h:47
const MobilityEntry & myEntry
Definition: aggregatedMovementActuator.h:311
bool myErrorCondition
Set to true once the error stream message is displayed, so we don&#39;t display over and over...
Definition: aggregatedMovementActuator.h:348
virtual bool init()
Overridden to cache a pointer to the entity&#39;s radio in this class.
This class is a DtSimKinematicState with the addition of another CS for local database coordinates...
Definition: vrfKinematicState.h:22
bool empty() const
Definition: aggregatedMovementActuator.h:336
Definition: readerWriter.h:85
const DtActuatorComponentDescriptor * myBaseActuatorDescriptor
Convenience pointers to our descriptors.
Definition: aggregatedMovementActuator.h:286
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
Definition: readerWriterRegistry.h:39
std::auto_ptr< FeatureSet > myFeatureSet
Definition: aggregatedMovementActuator.h:312
End User Description: DtActuator is the base class for all actuator model components.
Definition: actuatorComponent.h:48
const DtAggregatedMovementDescriptor * myActuatorDescriptor
Definition: aggregatedMovementActuator.h:287
DtVrfMovingObjectStateRepository * myMovingObjectStateRep
Convenience pointers to our state repository.
Definition: aggregatedMovementActuator.h:281
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
DtSimManager * mySimManager
Definition: aggregatedMovementActuator.h:239
boost::optional< double > myPrep_desiredAltitude
Definition: aggregatedMovementActuator.h:236
Object which hold the mobility entry and the feature set which represents it.
Definition: aggregatedMovementActuator.h:300
DtVector myPrep_newBodyRotationalVelocity
Definition: aggregatedMovementActuator.h:234
std::stringstream myStream
Definition: aggregatedMovementActuator.h:342
DtBooleanInputPort * myRetrogradeInputPort
Definition: aggregatedMovementActuator.h:357
File: simMsg.h.
Definition: simMessage.h:35
virtual void tick()
This gives the thread of control to the component.
DtAnalogInputPort * myMovementDirectionInputPort
Input Port Name: desired-movement-direction Input Port Description: Desired movement direction of the...
Definition: aggregatedMovementActuator.h:250
Contains class declarations for DtBooleanInputPort, DtBooleanOutputPort, and DtBooleanPortData.
Definition: boolIOPort.h:25
DtAggregatedMovementDescriptor is the descriptor for DtAggregatedMovementActuator.
Definition: aggregatedMovementDescriptor.h:20
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:84
DtVector myPrep_oldBodyVelocity
Definition: aggregatedMovementActuator.h:231
DtAnalogInputPort * mySpeedInputPort
Input Port Name: desired-speed Input Port Description: Desired speed of the entity in m/s...
Definition: aggregatedMovementActuator.h:257
*array controller(no time code)*/template< class Instance
//!//!//!//!//!//!//!//!//!//!//!//
virtual bool createPorts()
Called by init.
DtTaitBryan myPrep_newLocalOrientationTb
Definition: aggregatedMovementActuator.h:235
virtual bool createPortGroups()
Called by init.
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
std::auto_ptr< FeatureSet > myEngineeringObjFeatureSet
Set of engineering object features that can affect mobility.
Definition: aggregatedMovementActuator.h:351
DtVectorInputPort * myDestinationInputPort
Output Port Name: destination Output Port Description: Specifies the current destination of the entit...
Definition: aggregatedMovementActuator.h:276
This class manages the distribution of DtSetDataRequests within a single DtVrfObject.
Definition: setDataManager.h:37
ReaderWriter class which represents one terrain mobility entry.
Definition: aggregatedMovementDescriptor.h:26
MobilityArea::Vector myMobilityAreas
List of mobility areas.
Definition: aggregatedMovementActuator.h:316
DtTaitBryan myPrep_oldLocalOrientationTb
Definition: aggregatedMovementActuator.h:230
DtVector myPrep_oldLocalPosition
Definition: aggregatedMovementActuator.h:228
DtInputPortGroup is a data port group of a data consumer.
Definition: inputPortGroup.h:32
Contains class declarations for DtAnalogInputPort, DtAnalogOutputPort, and DtAnalogPortData.
Definition: analogIOPort.h:25
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
bool myEmptyFlag
Definition: aggregatedMovementActuator.h:343
DtAggregatedMovementActuatorPSR * myProcessState
Pointer to a process state repository used to store state data associated with this component...
Definition: aggregatedMovementActuator.h:361
DtVector myPrep_newLocalPosition
Definition: aggregatedMovementActuator.h:232
ErrorStream()
Definition: aggregatedMovementActuator.h:323
Definition: vrfAggregateStateRepository.h:22
boost::ptr_vector< MobilityArea > Vector
Definition: aggregatedMovementActuator.h:303
DtAggregatedMovementDescriptor::MobilityEntry MobilityEntry
Type which contains info on one type of mobility area.
Definition: aggregatedMovementActuator.h:297
std::auto_ptr< FeatureSet > myEngineeringObjObstacleFeatureSet
Set of engineering object features that should be considered obstacles for which we should halt...
Definition: aggregatedMovementActuator.h:355
Represents a feature geometry.
Definition: featureGeometry.h:35
virtual const char * type() const =0
Returns a string identifies the class type of component.
DtVector myPrep_newRelativeVelocity
Definition: aggregatedMovementActuator.h:233
DtInputPortGroup * myMovementControlPortGroupInputPortGroup
Input Port Group Name: movement-control Input Port Group Description: Collection of inputs specifying...
Definition: aggregatedMovementActuator.h:262
DtVector myPrep_oldLocalVelocity
Definition: aggregatedMovementActuator.h:229
const DtVrfKinematicState * myPrep_kinState
Values preprocessed for use in tick /////////////////////!
Definition: aggregatedMovementActuator.h:227

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)