VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTritonWaterClampingUpdater.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 #include <vrvTriton/vrvTriton.h>
12 
14 #include <matrix/vlVector.h>
15 #include <matrix/vlTaitBryan.h>
17 
18 namespace makVrv
19 {
20  class DtRk4MotionModel;
21  class DtTritonManager;
22  class DtObserverObject;
23  class DtCoordinateConverter;
24 
32  {
33 
34  public:
35 
38 
41 
43  virtual bool clampToWater(DtTime tNow);
44 
46  virtual void setPaused(bool isPaused);
47 
49  virtual void setLOD(float lodDistance);
50 
52  virtual void setWaterlineOriginOffset(float offset);
53 
55  // changes or to 'restore' a sinking ship.
56  virtual void resetMotionModel( double seaLevel );
57 
58  protected:
60  virtual double altitudeAt(const DtVector& pos);
61 
63  virtual void addAltitude(DtVector& pos, float altitudeToAdd );
64 
66  virtual DtVector moveToAltitude(const DtVector& pos, double alt);
67 
72  virtual DtTaitBryan computeMotionOrientation();
73 
75  virtual bool isFullyImmersed();
76 
77  virtual void adjustSinkingSpeedScale( const DtVector& inputPosition,
78  const DtVector& currentPosition );
79 
82  virtual void smoothMotionAndSeaLevel(double percent,
83  DtVector& outputPos, DtTaitBryan &outputOri);
84 
85  //handle sea level change signals
86  virtual void slot_oceanLayerSeaLevelChanged(double sealevel);
87 
88  //helper method to set the water line alitude based on the offset and sealevel
89  virtual void updateWaterLineAltitude(double sealevel);
90 
91  //Initialize the extents of the motion model based on the scene object
92  virtual bool initializeExtents(double sealevel);
93 
94  // Using the cull type, determines if the entity should suppress its buoyancy
95  // calculation because it is out of view of any observer
96  virtual bool checkCull( DtObserverObject* const observer, const DtVector& eyeToShip ) const;
97 
98  virtual void slot_coordinateSystemChanged();
99 
100  protected:
101 
102  static const double theMotionTimeout;
103  static const double theSmoothTime;
104  static const double theFullyLodScaler;
105 
114  DtTaitBryan myLastMotionOri;
126 
129  DtCoordinateConverter* myCoordinateConverter = nullptr;
130 
131  };
132 }
DtVector mySeaLevelPosition
Definition: DtTritonWaterClampingUpdater.h:119
DtRk4MotionModel * myMotionModel
Definition: DtTritonWaterClampingUpdater.h:106
bool myCoordinateSystemChanged
Definition: DtTritonWaterClampingUpdater.h:125
Implementation of a buoyancy model using RK4 integration.
Definition: DtRk4MotionModel.h:31
float myWaterlineAltitude
Definition: DtTritonWaterClampingUpdater.h:117
bool myLodedOut
Definition: DtTritonWaterClampingUpdater.h:123
DtCoordinateConverter is the base class for &#39;local (cig) to geocentric&#39; converters.
Definition: DtCoordinateConverter.h:25
DtTime myLastTickTime
Definition: DtTritonWaterClampingUpdater.h:107
bool myIsPaused
Definition: DtTritonWaterClampingUpdater.h:109
Contains DLL export macros.
bool mySmallObject
Definition: DtTritonWaterClampingUpdater.h:111
DtVector myLastOutputPos
Definition: DtTritonWaterClampingUpdater.h:115
#define DT_DLL_VRVTRITON
Definition: vrvTriton.h:19
bool myExtentsSet
Definition: DtTritonWaterClampingUpdater.h:108
float mySeaLevelClampDistance
Definition: DtTritonWaterClampingUpdater.h:122
This abstract base class defines the interface for OS-specific keyboard and mouse event listeners...
Definition: DtObserverObject.h:29
DtWaterClampingUpdater defines the interface for scene object updaters that clamp scene objects to dy...
Definition: DtWaterClampingUpdater.h:30
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtWaterClampingUpdater class.
DtTaitBryan myLastMotionOri
Definition: DtTritonWaterClampingUpdater.h:114
bool mySeaLevelPositionDirty
Definition: DtTritonWaterClampingUpdater.h:120
DtVector myLastMotionPos
Definition: DtTritonWaterClampingUpdater.h:113
double myLastSinkingDiff
Definition: DtTritonWaterClampingUpdater.h:110
DtSignalConnectionManager myConnections
Definition: DtTritonWaterClampingUpdater.h:124
DtTritonWaterClampingUpdater is a Triton-using re-implementation of the DtWaterClampingUpdater. It provides a physics-based buoyancy model that is used to determine the position and altitude of a scene object that is on Triton dynamic ocean.
Definition: DtTritonWaterClampingUpdater.h:30
DtVector myLastAltitudeAdjustedPos
Definition: DtTritonWaterClampingUpdater.h:116
DtTritonManager & myTritonManager
Definition: DtTritonWaterClampingUpdater.h:112
static const double theMotionTimeout
Definition: DtTritonWaterClampingUpdater.h:102
Base class to provide boost signal/slot management.
Definition: DtTritonManager.h:48
DtVector myLastInputPosition
Definition: DtTritonWaterClampingUpdater.h:118
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
voidpf uLong offset
Definition: ioapi.h:42
DtTime myLastLODTickTime
Definition: DtTritonWaterClampingUpdater.h:121
static const double theSmoothTime
Definition: DtTritonWaterClampingUpdater.h:103
static const double theFullyLodScaler
Definition: DtTritonWaterClampingUpdater.h:104

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)