VR-Forces 4.1 Class Documentation
humanMovementActuator.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2006 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfobjcore/actCmpnt.h>
16 #include <map>
17 
18 class DtInputPortGroup;
19 class DtAnalogInputPort;
22 class DtIntegerInputPort;
24 class DtAttachedTerrain;
25 class DtBooleanInputPort;
26 
35 {
36 private:
41 
42 public:
43 
44  typedef std::map<DtLifeformStaticPosture, DtLifeformState>
46 
47 public:
50  DtHumanMovementActuator(const DtString& name,
51  DtVrfObject* owner,
52  DtSimManager* simManager,
53  DtComponentDescriptor* desc = 0,
54  DtReaderWriterRegistry* parentRegistry = 0);
55 
57  virtual ~DtHumanMovementActuator();
58 
61  virtual bool init();
62 
65  virtual DtString type() const;
66 
67  virtual void tick();
68 
72  static DtSimComponent * creator(const DtString& name,
73  DtVrfObject* owner,
74  DtSimManager* simManager,
75  DtComponentDescriptor* desc = 0,
76  DtReaderWriterRegistry* parentRegistry = 0);
77 
78 protected:
81  virtual double calculateMaxSpeed() const;
82 
86  virtual bool disableControl();
87 
88  virtual double maxSpeedSoilFactor() const;
89 
90  virtual DtVector calculateProjectedLocation(
91  const DtVector& oldLocalPosition, const DtVector& newBodyVelocity,
92  double newHeading);
93 
94  virtual void calculateOrientationAndPosition(
95  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
96  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
97 
98  virtual void calculateOrientationAndPositionCrawling(
99  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
100  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
101 
102  /*virtual void calculateOrientationAndPositionCrawling(
103  const DtVector& newLocalProjectedLocation, double newHeading,
104  DtDcm& newLocalOrientation, DtVector& newLocalPosition);*/
105 
106  virtual void groundClamp(double heading,
107  const DtVector& location, DtAttachedTerrain& terrainDatabase, DtVector& newNormal);
108 
109  virtual void calculateDirectionOfLinearMotion(
110  const DtDcm& newLocalOrientation, double desiredDirectionOfMovement, const DtVector& newLocalPosition,
111  DtDcm& newLocalDirectionOfLinearMotion);
112 
113  virtual void updateRepository(const DtVector & position,
114  const DtVector & velocity, const DtVector & acceleration,
115  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
116  double newHeading);
117 
121  virtual void computeAndSetPosture();
122 
125  virtual DtLifeformState computeDynamicPosture(DtLifeformStaticPosture staticPosture);
126 
131  virtual DtLifeformStaticPosture restrictPostureForTerrain(DtLifeformStaticPosture desiredPosture);
132 
141  virtual bool checkForTerrainCollisions() const;
142 
147  virtual bool checkBlockedByTerrain(const DtVector& oldLocalPosition,
148  DtVector& newLocalProjectedLocation);
149 
155  virtual double maxUprightTerrainPitch() const;
156 
161  virtual double maxWalkingSpeed() const;
162 
164  virtual void initializeStaticToDynamicPostureMap();
165 
167  virtual bool computeEntityDirOfMovement(double& heading) const;
168 
171  virtual double calculateTerrainPitch(const DtVector& localPosition,
172  double heading,
173  const DtAttachedTerrain& terrain) const;
174 
175 protected:
177  virtual bool createPorts();
178 
180  virtual bool createPortGroups();
181 
182 protected:
185 
193 
203 
210 
215 
224 
234 
240 
244  mutable double myMutablePitch;
245  mutable bool myMutablePitchValid;
246 
248 
250 
252 
254 };
255 
261 bool closestIntersectionWithBias(const DtVector& localPosition, DtChordIntersectionRecord& record,
262  DtIntersectionRecord::DtIntersectionType irtFlag, double bias,
263  const DtAttachedTerrain* terrain);
264 
265 
266 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)