VR-Forces 4.5 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 const char* type() const;
67 
68  virtual void preFirstTickInit();
69 
70  virtual void tick();
71 
75  static DtSimComponent * creator(const DtString& name,
76  DtVrfObject* owner,
77  DtSimManager* simManager,
78  DtComponentDescriptor* desc = 0,
79  DtReaderWriterRegistry* parentRegistry = 0);
80 
81 protected:
84  virtual double calculateMaxSpeed() const;
85 
86  virtual double maxSpeedSoilFactor() const;
87 
88  virtual DtVector calculateProjectedLocation(
89  const DtVector& oldLocalPosition, const DtVector& newBodyVelocity,
90  double newHeading, double dt = -1);
91 
105  virtual void calculateOrientationAndPosition(
106  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
107  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
108 
111  virtual double stepUpFractionLimit() const;
112 
115  virtual double underWaterFraction() const;
116 
135 
141  virtual double altitudeForNoTerrainBelow(double projectedPointAlt,
142  DtVector projectedPoint,
143  double surfacePointAlt) const;
144 
153  virtual double altitudeForDropToSurface(double projectedPointAlt,
154  DtVector projectedPoint,
155  double surfacePointAlt) const;
156 
160  virtual double altitudeForNearbySurface(double projectedPointAlt,
161  DtVector projectedPoint,
162  double surfacePointAlt) const;
163 
175  virtual double altitudeForNoSurface(double projectedPointAlt,
176  DtVector projectedPoint) const;
177 
179 
180  virtual void updateRepository(const DtVector & position,
181  const DtVector & velocity, const DtVector & acceleration,
182  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
183  double newHeading);
184 
188  virtual void computeAndSetPosture();
189 
192  virtual DtLifeformState computeDynamicPosture(DtLifeformStaticPosture staticPosture);
193 
198  virtual DtLifeformStaticPosture restrictPostureForTerrain(DtLifeformStaticPosture desiredPosture);
199 
208  virtual bool checkForTerrainCollisions() const;
209 
212  virtual bool checkForEntityCollisions() const;
213 
221  virtual bool checkBlockedByTerrain(const DtVector& oldLocalPosition,
222  DtVector& newLocalProjectedLocation, double heightFraction = -1.0);
223 
224  virtual bool checkBlockedByEntities(const DtVector& oldLocalPosition,
225  DtVector& newLocalProjectedLocation);
226 
231  virtual DtChord movementChord(const DtVector& oldLocalPosition, const DtVector& newLocalProjectedLocation,
232  DtVector& intersectionVec, DtVector& bvCenterStartFromOldPos);
233 
236  virtual DtChord movementChordAtHeight(const DtVector& oldLocalPosition, const DtVector& newLocalProjectedLocation,
237  double heightFraction, DtVector& intersectionVec, DtVector& offsetFromOldPosition);
238 
244  virtual double maxUprightTerrainPitch() const;
245 
250  virtual double maxWalkingSpeed() const;
251 
253  virtual void initializeStaticToDynamicPostureMap();
254 
256  virtual bool computeEntityDirOfMovement(double& heading) const;
257 
260  virtual double calculateTerrainPitch(const DtVector& localPosition,
261  double heading,
262  const DtAttachedTerrain& terrain) const;
263 
265  virtual bool createPorts();
266 
268  virtual bool createPortGroups();
269 
281  virtual bool getSurfacesBelow(const DtVector& testPosition,
282  double underWaterLimit,
283  const DtAttachedTerrain* terrain,
285 
289  virtual bool closestSurfaceAbove(const DtVector& testPosition,
290  const DtAttachedTerrain* terrain,
291  double &altitude, DtSurface &surface);
292 
296  virtual bool isWater(const DtSurface & surface);
297 
298  static void setHeadingCallback(DtSimMessage * msg, void * usr);
299  virtual void processSetHeading(DtSimMessage* msg);
300 
303  virtual void calculateOrientationAndPositionCrawling(
304  const DtVector& newLocalProjectedLocation, double newHeading, double newFacingOrientation,
305  DtDcm& newLocalOrientation, DtDcm& newLocalDirectionOfMovement, DtVector& newLocalPosition);
306 
307  virtual void groundClamp(double heading,
308  const DtVector& location, DtAttachedTerrain& terrainDatabase, DtVector& newNormal);
309 
310  virtual void calculateDirectionOfLinearMotion(
311  const DtDcm& newLocalOrientation, double desiredDirectionOfMovement, const DtVector& newLocalPosition,
312  DtDcm& newLocalDirectionOfLinearMotion);
313 
319  virtual bool closestIntersectionWithBias( const DtVector& localPosition, DtVrfChordIntersectionRecord& record,
320  DtIntersectionRecord::DtIntersectionType irtFlag, double bias,
321  const DtAttachedTerrain* terrain );
322 
323  virtual void groundClampLowFidelity(double heading,
324  const DtVector& location, DtAttachedTerrain& terrain, DtVector& newNormal, bool& dataAvailable);
325 
327 
329  virtual bool checkAndDisembarkIfEmbarked(const DtVector& localPosition);
330 
333  virtual bool checkIfMoveOntoEmbarked(const DtVector& localPosition);
334 
335 protected:
338 
346 
356 
363 
368 
377 
383 
387  mutable double myMutablePitch;
388  mutable bool myMutablePitchValid;
389 
391 
393 
395 
397 
400 
404 
407 
409 };
410 

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)