VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 class DtAnalogOutputPort;
28 class DtVectorInputPort;
29 
38 {
39 private:
44 
45 public:
46 
47  typedef std::map<DtLifeformStaticPosture, DtLifeformState>
49 
50 public:
53  DtHumanMovementActuator(const DtString& name,
54  DtVrfObject* owner,
55  DtSimManager* simManager,
56  DtComponentDescriptor* desc = 0,
57  DtReaderWriterRegistry* parentRegistry = 0);
58 
60  virtual ~DtHumanMovementActuator();
61 
64  virtual bool init();
65 
68  virtual const char* type() const;
69 
70  virtual void preFirstTickInit();
71 
72  virtual void tick();
73 
77  static DtSimComponent * creator(const DtString& name,
78  DtVrfObject* owner,
79  DtSimManager* simManager,
80  DtComponentDescriptor* desc = 0,
81  DtReaderWriterRegistry* parentRegistry = 0);
82 
83 protected:
86  virtual double calculateMaxSpeed() const;
87 
88  virtual double maxSpeedSoilFactor() const;
89 
90  virtual DtVector calculateProjectedLocation(
91  const DtVector& oldLocalPosition, const DtVector& newBodyVelocity,
92  double newHeading, double dt = -1);
93 
107  virtual void calculateOrientationAndPosition(
108  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
109  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
110 
113  virtual double stepUpFractionLimit() const;
114 
117  virtual double underWaterFraction() const;
118 
137 
143  virtual double altitudeForNoTerrainBelow(double projectedPointAlt,
144  DtVector projectedPoint,
145  double surfacePointAlt) const;
146 
155  virtual double altitudeForDropToSurface(double projectedPointAlt,
156  DtVector projectedPoint,
157  double surfacePointAlt) const;
158 
162  virtual double altitudeForNearbySurface(double projectedPointAlt,
163  DtVector projectedPoint,
164  double surfacePointAlt) const;
165 
177  virtual double altitudeForNoSurface(double projectedPointAlt,
178  DtVector projectedPoint) const;
179 
181 
182  virtual void updateRepository(const DtVector & position,
183  const DtVector & velocity, const DtVector & acceleration,
184  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
185  double newHeading);
186 
190  virtual void computeAndSetPosture();
191 
194  virtual DtLifeformState computeDynamicPosture(DtLifeformStaticPosture staticPosture);
195 
200  virtual DtLifeformStaticPosture restrictPostureForTerrain(DtLifeformStaticPosture desiredPosture);
201 
210  virtual bool checkForTerrainCollisions() const;
211 
214  virtual bool checkForEntityCollisions() const;
215 
223  virtual bool checkBlockedByTerrain(const DtVector& oldLocalPosition,
224  DtVector& newLocalProjectedLocation, double heightFraction = -1.0);
225 
226  virtual bool checkBlockedByEntities(const DtVector& oldLocalPosition,
227  DtVector& newLocalProjectedLocation);
228 
233  virtual DtChord movementChord(const DtVector& oldLocalPosition, const DtVector& newLocalProjectedLocation,
234  DtVector& intersectionVec, DtVector& bvCenterStartFromOldPos);
235 
238  virtual DtChord movementChordAtHeight(const DtVector& oldLocalPosition, const DtVector& newLocalProjectedLocation,
239  double heightFraction, DtVector& intersectionVec, DtVector& offsetFromOldPosition);
240 
246  virtual double maxUprightTerrainPitch() const;
247 
252  virtual double maxWalkingSpeed() const;
253 
255  virtual void initializeStaticToDynamicPostureMap();
256 
258  virtual bool computeEntityDirOfMovement(double& heading) const;
259 
262  virtual double calculateTerrainPitch(const DtVector& localPosition,
263  double heading,
264  const DtAttachedTerrain& terrain) const;
265 
267  virtual bool createPorts();
268 
270  virtual bool createPortGroups();
271 
283  virtual bool getSurfacesBelow(const DtVector& testPosition,
284  double underWaterLimit,
285  const DtAttachedTerrain* terrain,
287 
291  virtual bool closestSurfaceAbove(const DtVector& testPosition,
292  const DtAttachedTerrain* terrain,
293  double &altitude, DtSurface &surface);
294 
298  virtual bool isWater(const DtSurface & surface);
299 
300  static void setHeadingCallback(DtSimMessage * msg, void * usr);
301  virtual void processSetHeading(DtSimMessage* msg);
302 
305  virtual void calculateOrientationAndPositionCrawling(
306  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
307  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
308 
309  virtual void groundClamp(double heading,
310  const DtVector& location, DtAttachedTerrain& terrainDatabase, DtVector& newNormal);
311 
312  virtual void calculateDirectionOfLinearMotion(
313  const DtDcm& newLocalOrientation, double desiredDirectionOfMovement, const DtVector& newLocalPosition,
314  DtDcm& newLocalDirectionOfLinearMotion);
315 
321  virtual bool closestIntersectionWithBias( const DtVector& localPosition, DtVrfChordIntersectionRecord& record,
322  DtIntersectionRecord::DtIntersectionType irtFlag, double bias,
323  const DtAttachedTerrain* terrain );
324 
325  virtual void groundClampLowFidelity(double heading,
326  const DtVector& location, DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
327 
329 
331  virtual bool checkAndDisembarkIfEmbarked(const DtVector& localPosition);
332 
335  virtual bool checkIfMoveOntoEmbarked(const DtVector& localPosition);
336 
337  virtual bool initializeAglPort();
338 
339 protected:
342 
350 
360 
367 
372 
380 
388 
395 
401 
405  mutable double myMutablePitch;
406  mutable bool myMutablePitchValid;
407 
409 
411 
413 
415 
418 
422 
425 
427 
430 
432 };
433 

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)