VR-Forces 4.10 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 
49 public:
50 
53  DtSimManager* simManager, DtComponentDescriptor* compDescriptor,
54  DtReaderWriterRegistry* parentRegistry = 0);
55 
58 
60  virtual bool init();
61 
63  virtual bool createPSR();
64 
66  virtual const char* type() const;
67 
69  virtual void tick();
70 
77  virtual void setOrderedAltitude(double altitude, bool aboveGroundLevel = false);
78 
79 public:
80 
83  static DtSimComponent* creator(const DtString& name, DtVrfObject* object,
84  DtSimManager* simManager, DtComponentDescriptor* compDescriptor,
85  DtReaderWriterRegistry* parentRegistry);
86 
92  static bool setHaltMovementForObstacles(void* controller, DtReaderWriter* value);
93 
97  static bool setObstacleQueryName(void* controller, DtReaderWriter* value);
98 
102  static DtReaderWriter* isHalted(void* controller);
103 
107  static DtReaderWriter* blockingObstacle(void* controller);
108 
112  static DtReaderWriter* timeHalted(void* controller);
114 
115 protected:
116  virtual DtVector calculateProjectedLocation(
117  const DtVector& oldLocalPosition, const DtVector& newBodyVelocity,
118  double newHeading);
119 
121  virtual std::string calculateOrientationAndPosition(
122  const DtVector& newLocalProjectedLocation, double newHeading,
123  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
124 
127  virtual void calculateFuelUsage(
128  double distanceTraveled,
129  double velocity,
130  double altitude);
131 
133  virtual std::string adjustToTerrain(
134  double heading, const DtVector& location, DtVector& newNormal);
135 
136  virtual void updateRepository(const DtVector & position,
137  const DtVector & velocity, const DtVector & acceleration,
138  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity);
139 
142  virtual bool isObstructedByObstacles(const MAKVRinTerra::DtFeatureGeometry& location);
143 
145  static void setObstacleToIgnore(DtSimMessage* msg, void* usr);
146 
149  virtual void processObstacleToIgnore(DtSimMessage* msg);
150 
151 protected:
153  virtual bool createPorts();
154 
156  virtual bool createPortGroups();
157 
158  class ErrorStream;
162  virtual bool haveSupplies(ErrorStream &errorStream) const;
163 
168  virtual double scriptModifier() const;
169 
172  virtual double scriptAdjustment() const;
173 
177  virtual double maximumSpeedModifierFromFeatures(const MAKVRinTerra::DtFeatureGeometry&,
178  double& slope) const;
179 
181  virtual double retrogradeMovementModifier() const;
182 
185 
188 
192  virtual bool checkPassedDestination(const DtVector& currentPosition, DtVector& newLocalProjectedPosition);
193 
196  virtual bool setHaltMovementForObstacles(DtReaderWriter* value);
197 
201  virtual bool setObstacleQueryName(DtReaderWriter* value);
202 
210  virtual void setAircraftAirborne(const DtVector& location);
211 
215  virtual DtReaderWriter* isHalted();
216 
219  virtual DtReaderWriter* blockingObstacle();
220 
223  virtual DtReaderWriter* timeHalted();
224 
225 protected:
226 
237  boost::optional<double> myPrep_desiredAltitude;
239 
241 
244 
252 
259 
264 
271 
279 
284 
290 
293 
296 
299 
301  class MobilityArea : boost::noncopyable
302  {
303  public:
304  typedef boost::ptr_vector<MobilityArea> Vector;
305 
307 
308  const MobilityEntry& entry() const;
309  const FeatureSet& featureSet() const;
310 
311  private:
313  std::auto_ptr<FeatureSet> myFeatureSet;
314  };
315 
318 
319 
322  {
323  public:
324  ErrorStream() : myEmptyFlag(true) { }
325 
326  template <typename T>
327  ErrorStream& operator<< (const T& value)
328  {
329  myEmptyFlag = false;
330  myStream << value;
331  return *this;
332  }
333  std::string str() const
334  {
335  return myStream.str();
336  }
337  bool empty() const
338  {
339  return myEmptyFlag;
340  }
341 
342  private:
343  std::stringstream myStream;
345  };
346 
350 
352  std::auto_ptr<FeatureSet> myEngineeringObjFeatureSet;
353 
356  std::auto_ptr<FeatureSet> myEngineeringObjObstacleFeatureSet;
357 
359 
363 };
364 
365 
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:333
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:295
DtAnalogInputPort * myAltitudeInputPort
Input Port Name: desired-altitude Input Port Description: Desired altitude to move towards (MSL)...
Definition: aggregatedMovementActuator.h:270
Description: This repository holds all information that is common to all the forms of all objects wit...
Definition: vrfMovingObjectStateRepository.h:29
Definition: aggregatedMovementActuatorPSR.h:23
const DtActuatorComponent & operator=(const DtActuatorComponent &orig)
assignment operator
DtSetDataManager * mySetDataManager
Ref to set data manager.
Definition: aggregatedMovementActuator.h:292
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:321
End User Description: DtActuatorComponentDescriptor contains parameters common to all actuator compon...
Definition: actuatorComponentDescriptor.h:47
const MobilityEntry & myEntry
Definition: aggregatedMovementActuator.h:312
bool myErrorCondition
Set to true once the error stream message is displayed, so we don&#39;t display over and over...
Definition: aggregatedMovementActuator.h:349
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:337
Definition: readerWriter.h:85
const DtActuatorComponentDescriptor * myBaseActuatorDescriptor
Convenience pointers to our descriptors.
Definition: aggregatedMovementActuator.h:287
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:313
End User Description: DtActuator is the base class for all actuator model components.
Definition: actuatorComponent.h:48
const DtAggregatedMovementDescriptor * myActuatorDescriptor
Definition: aggregatedMovementActuator.h:288
DtVrfMovingObjectStateRepository * myMovingObjectStateRep
Convenience pointers to our state repository.
Definition: aggregatedMovementActuator.h:282
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
DtSimManager * mySimManager
Definition: aggregatedMovementActuator.h:240
boost::optional< double > myPrep_desiredAltitude
Definition: aggregatedMovementActuator.h:237
Object which hold the mobility entry and the feature set which represents it.
Definition: aggregatedMovementActuator.h:301
DtVector myPrep_newBodyRotationalVelocity
Definition: aggregatedMovementActuator.h:235
std::stringstream myStream
Definition: aggregatedMovementActuator.h:343
DtBooleanInputPort * myRetrogradeInputPort
Definition: aggregatedMovementActuator.h:358
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:251
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:88
DtVector myPrep_oldBodyVelocity
Definition: aggregatedMovementActuator.h:232
DtAnalogInputPort * mySpeedInputPort
Input Port Name: desired-speed Input Port Description: Desired speed of the entity in m/s...
Definition: aggregatedMovementActuator.h:258
*array controller(no time code)*/template< class Instance
//!//!//!//!//!//!//!//!//!//!//!//
virtual bool createPorts()
Called by init.
DtTaitBryan myPrep_newLocalOrientationTb
Definition: aggregatedMovementActuator.h:236
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:352
DtVectorInputPort * myDestinationInputPort
Output Port Name: destination Output Port Description: Specifies the current destination of the entit...
Definition: aggregatedMovementActuator.h:277
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:317
DtTaitBryan myPrep_oldLocalOrientationTb
Definition: aggregatedMovementActuator.h:231
DtVector myPrep_oldLocalPosition
Definition: aggregatedMovementActuator.h:229
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:103
bool myEmptyFlag
Definition: aggregatedMovementActuator.h:344
DtAggregatedMovementActuatorPSR * myProcessState
Pointer to a process state repository used to store state data associated with this component...
Definition: aggregatedMovementActuator.h:362
DtVector myPrep_newLocalPosition
Definition: aggregatedMovementActuator.h:233
ErrorStream()
Definition: aggregatedMovementActuator.h:324
Definition: vrfAggregateStateRepository.h:22
boost::ptr_vector< MobilityArea > Vector
Definition: aggregatedMovementActuator.h:304
DtAggregatedMovementDescriptor::MobilityEntry MobilityEntry
Type which contains info on one type of mobility area.
Definition: aggregatedMovementActuator.h:298
std::auto_ptr< FeatureSet > myEngineeringObjObstacleFeatureSet
Set of engineering object features that should be considered obstacles for which we should halt...
Definition: aggregatedMovementActuator.h:356
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:234
DtInputPortGroup * myMovementControlPortGroupInputPortGroup
Input Port Group Name: movement-control Input Port Group Description: Collection of inputs specifying...
Definition: aggregatedMovementActuator.h:263
DtVector myPrep_oldLocalVelocity
Definition: aggregatedMovementActuator.h:230
const DtVrfKinematicState * myPrep_kinState
Values preprocessed for use in tick /////////////////////!
Definition: aggregatedMovementActuator.h:228

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)