VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
humanMovementActuator.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
16 #include <map>
17 
18 class DtInputPortGroup;
19 class DtAnalogInputPort;
22 class DtIntegerInputPort;
24 class DtAttachedTerrain;
25 class DtBooleanInputPort;
27 
36 {
37 private:
42 
43 public:
44 
45  typedef std::map<DtLifeformStaticPosture, DtLifeformState>
47 
48 public:
51  DtHumanMovementActuator(const DtString& name,
52  DtVrfObject* owner,
53  DtSimManager* simManager,
54  DtComponentDescriptor* desc = 0,
55  DtReaderWriterRegistry* parentRegistry = 0);
56 
58  virtual ~DtHumanMovementActuator();
59 
62  virtual bool init();
63 
66  virtual DtString type() const;
67 
68  virtual void tick();
69 
73  static DtSimComponent * creator(const DtString& name,
74  DtVrfObject* owner,
75  DtSimManager* simManager,
76  DtComponentDescriptor* desc = 0,
77  DtReaderWriterRegistry* parentRegistry = 0);
78 
79 protected:
82  virtual double calculateMaxSpeed() const;
83 
84  virtual double maxSpeedSoilFactor() const;
85 
86  virtual DtVector calculateProjectedLocation(
87  const DtVector& oldLocalPosition, const DtVector& newBodyVelocity,
88  double newHeading);
89 
103  virtual void calculateOrientationAndPosition(
104  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
105  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
106 
109  virtual double stepUpFractionLimit() const;
110 
113  virtual double underWaterFraction() const;
114 
133 
139  virtual double altitudeForNoTerrainBelow(double projectedPointAlt,
140  DtVector projectedPoint,
141  double surfacePointAlt) const;
142 
151  virtual double altitudeForDropToSurface(double projectedPointAlt,
152  DtVector projectedPoint,
153  double surfacePointAlt) const;
154 
158  virtual double altitudeForNearbySurface(double projectedPointAlt,
159  DtVector projectedPoint,
160  double surfacePointAlt) const;
161 
173  virtual double altitudeForNoSurface(double projectedPointAlt,
174  DtVector projectedPoint) const;
175 
177 
178  virtual void updateRepository(const DtVector & position,
179  const DtVector & velocity, const DtVector & acceleration,
180  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
181  double newHeading);
182 
186  virtual void computeAndSetPosture();
187 
190  virtual DtLifeformState computeDynamicPosture(DtLifeformStaticPosture staticPosture);
191 
196  virtual DtLifeformStaticPosture restrictPostureForTerrain(DtLifeformStaticPosture desiredPosture);
197 
206  virtual bool checkForTerrainCollisions() const;
207 
212  virtual bool checkBlockedByTerrain(const DtVector& oldLocalPosition,
213  DtVector& newLocalProjectedLocation);
214 
220  virtual double maxUprightTerrainPitch() const;
221 
226  virtual double maxWalkingSpeed() const;
227 
229  virtual void initializeStaticToDynamicPostureMap();
230 
232  virtual bool computeEntityDirOfMovement(double& heading) const;
233 
236  virtual double calculateTerrainPitch(const DtVector& localPosition,
237  double heading,
238  const DtAttachedTerrain& terrain) const;
239 
241  virtual bool createPorts();
242 
244  virtual bool createPortGroups();
245 
257  virtual bool getSurfacesBelow(const DtVector& testPosition,
258  double underWaterLimit,
259  const DtAttachedTerrain* terrain,
260  DtChordIntersectRecordList& intList);
261 
265  virtual bool closestSurfaceAbove(const DtVector& testPosition,
266  const DtAttachedTerrain* terrain,
267  double &altitude, DtSurface &surface);
268 
272  virtual bool isWater(const DtSurface & surface);
273 
276  virtual void calculateOrientationAndPositionCrawling(
277  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
278  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
279 
280  virtual void groundClamp(double heading,
281  const DtVector& location, DtAttachedTerrain& terrainDatabase, DtVector& newNormal);
282 
283  virtual void calculateDirectionOfLinearMotion(
284  const DtDcm& newLocalOrientation, double desiredDirectionOfMovement, const DtVector& newLocalPosition,
285  DtDcm& newLocalDirectionOfLinearMotion);
286 
292  virtual bool closestIntersectionWithBias( const DtVector& localPosition, DtChordIntersectionRecord& record,
293  DtIntersectionRecord::DtIntersectionType irtFlag, double bias,
294  const DtAttachedTerrain* terrain );
295 
296  virtual void groundClampLowFidelity(double heading,
297  const DtVector& location, DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
298 
300 
301 protected:
304 
312 
322 
329 
334 
343 
349 
353  mutable double myMutablePitch;
354  mutable bool myMutablePitchValid;
355 
357 
359 
361 
363 
366 
370 };
371 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)