VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtRotorWashProcess.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtUniqueID.h>
16 
18 
19 #include <vlutil/vlTime.h>
20 
21 namespace makVrv
22 {
23  struct DtRotorWashState;
24  class DtIntersector;
25  class DtSimpleIntersector;
26  class DtSceneObject;
27  class DtObserverModeManager;
28 
30  class DtRotorWashProcess;
31 
33 
36 
38  template <>
39  inline const char* creatorTypeName<DtRotorWashProcess>(void) { return "DtRotorWashProcessCreator"; }
40 
48  {
49  public:
50 
52  DtRotorWashProcess( DtDe& de );
53 
55  virtual ~DtRotorWashProcess();
56 
58  virtual void setHelicopterId(DtUniqueID helicopterID);
59 
64  virtual bool update( DtTime tNow );
65 
68  virtual DtVector currentHeloPosition() const;
69 
72  virtual DtTaitBryan currentHeloOrientation() const;
73 
80  virtual void calcRotorWashLagRelOffset(const DtTime& tNow,
81  const DtVector& currentHeliPos, const DtTaitBryan& currentHeliOri,
82  DtVector& outRelativeOffset, double& lagHeliAngleDistToGround);
83 
85  virtual void setRotorWashState(const DtRotorWashState* rwState);
86 
88  virtual DtVector currentHeliPos() const;
91 
93  virtual DtTaitBryan currentHeliOri() const;
94 
96  virtual DtVector offsetPos() const;
97 
99  virtual float intensity() const;
100 
102  virtual float rotorWashSpeed() const;
103 
105  virtual DtVector rotorWashPos() const;
106 
108  virtual DtVector rotorWashDir() const;
110 
111 
114  virtual DtVector getTerrainOrPropIntersection(void);
115 
117  virtual void addNewRotorWashPoint(DtTime tNow, const DtVector& newPoint);
118  private:
124  DtRotorWashProcess &operator=(const DtRotorWashProcess &other);
125 
126  protected:
127 
130  virtual const DtRotorWashState* rotorWashState();
131 
133  virtual DtVector calcRotorDownDirection(const DtVector& currentPos,
134  const DtTaitBryan& orientation);
135 
138  virtual double getHeightAboveTerrain(const DtVector& pos);
139 
140 
142  virtual DtVector getHeliVelocity(DtTime tNow);
143 
147  virtual DtVector convertOffset(const DtVector& worldOffset, const DtTaitBryan& heliOri);
148 
152  virtual bool allObservers2D() const;
153 
155  virtual void slot_coordinateSystemChanged();
156 
158  virtual void updateOffsetAndIntensity(DtTime tNow);
159 
160 
161  protected:
162 
165 
166  DtIntersector* myIntersector3dModelSet = nullptr;
168  // Keep track of the rotorwash points so they can 'lag' a more the
169  // higher the altitude
171 
174 
175  // Variables to communicate to other classes outside of
176  // the DtRotorWashProcess
178  DtTaitBryan myCurrentHeliOri;
179  // Offset for particle system is given in (forward, right, down) coords
181  float myIntensity;
185 
187 
188  // local clone of the current system wide coordinate system converter.
189  // for thread safety.
190  DtCoordinateConverter* myCoordinateConverter = nullptr;
191 
193  };
194 }
DtTaitBryan myCurrentHeliOri
Definition: DtRotorWashProcess.h:178
Definition: DtRotorWashTrailPoints.h:64
DtDe & myDe
The display engine.
Definition: DtRotorWashProcess.h:164
float myIntensity
Definition: DtRotorWashProcess.h:181
DtObserverModeManager is responsible for loading and saving observer modes, and providing a mechanism...
Definition: DtObserverModeManager.h:53
DtSceneObject * mySceneObject
Definition: DtRotorWashProcess.h:172
DtCoordinateConverter is the base class for &#39;local (cig) to geocentric&#39; converters.
Definition: DtCoordinateConverter.h:25
const char * creatorTypeName< DtRotorWashProcess >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtRotorWashProcess.h:39
DtIntersector is an abstract class that provides the interface for requesting intersections with the ...
Definition: DtIntersector.h:25
DtVector myOffsetFromHeli
Definition: DtRotorWashProcess.h:180
float myRotorWashSpeed
Definition: DtRotorWashProcess.h:182
DtSignalConnectionManager myConnections
Definition: DtRotorWashProcess.h:186
DtRotorWashProcess maintains a model of the rotary wing entity&#39;s rotor wash, such as speed; dead reck...
Definition: DtRotorWashProcess.h:47
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
DtVector myCurrentHeliPos
Definition: DtRotorWashProcess.h:177
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
const DtRotorWashState * myRotorWashState
Definition: DtRotorWashProcess.h:173
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtSimpleIntersector & myHATIntersector
Definition: DtRotorWashProcess.h:167
DtSimpleIntersector is a higher-level intersector class which adds functions for line of sight...
Definition: DtSimpleIntersector.h:55
const DtObserverModeManager & myObserverModeManager
Definition: DtRotorWashProcess.h:192
Keeps track of previous rotorwash positions and times so that the rotorwash can lag behind the helico...
DtVector myRotorWashPos
Definition: DtRotorWashProcess.h:183
DtVector myRotorWashDir
Definition: DtRotorWashProcess.h:184
DtRotorWashTrailPoints myRotorWashPoints
Definition: DtRotorWashProcess.h:170
Base class to provide boost signal/slot management.
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:42
Per rotorwash data used in DtRotorWashSet.
Definition: DtRotorWashState.h:24
Contains makVrv::DtUniqueID type.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
DtVirtualBaseClassCreator< DtRotorWashProcess > DtRotorWashProcessCreator
creator
Definition: DtRotorWashProcess.h:32
Contains DLL export macros.

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)