VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCigiWakeEntity.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2017 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCigi/vrvCigi.h>
13 
15 
17 #include <vrvUtil/signalslib.h>
18 
19 #include <boost/signals/connection.hpp>
20 
21 
22 #include <matrix/geodeticCoord.h>
23 #include <matrix/vlTaitBryan.h>
24 
25 namespace makVrv
26 {
27  class DtWakeModelAgent;
28  class DtWakeUpdaterAgent;
29  class DtSceneObjectAgent;
30 
34  {
35  public:
36 
37  friend class DtCigiWatercraftEntity;
38 
41  DtAgentManagerInterface& sceneInterface, int entityId, int entityType);
42 
44  virtual ~DtCigiWakeEntity();
45 
47  virtual void uninit();
48 
52  virtual void setPosition(const DtGeodeticCoord& pos, bool force=false);
53 
55  virtual void setRelativePosition(const DtVector& pos);
56 
60  virtual void setOrientation(const DtTaitBryan& orient, bool force=false);
61 
64  virtual void setRelativeOrientation(const DtTaitBryan& orient);
65 
67  virtual void setRelativeTo(DtCigiBaseEntity* parent);
68 
69  // Override to determine moving state when not attached to a parent ship
70  virtual void setLinearRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
71 
73  virtual void setSprayEnabled(bool enabled);
74 
77  virtual void setWakeOffset(double offset);
78 
81  virtual void setBowSprayOffset(double offset);
82 
84  virtual void setBowWaveOffset(double offset);
85 
87  virtual void setSternWaveOffset(double offset);
88 
90  virtual void setShipLength(double length);
91 
93  virtual void setBeamWidth(double width);
94 
96  virtual void setPropWashEnabled(bool b);
97 
100  virtual void setPropWashOffset(double offset);
101 
104  virtual void setPropWashFadeTime(double fadeTime);
105 
108  virtual void setDraft(double draft);
109 
116  virtual void setLODDistance(double distance);
117 
119  virtual void setSprayVelocityScale(double scale);
120 
122  virtual void setBowWaveScale(double scale);
123 
125  virtual void setMaxBowWaveAmplitude(double amplitude);
126 
128  virtual void setBowSize(double size);
129 
131  virtual void setSpraySizeScale(double scale);
132 
135  virtual void setNumHullSprays(int numSprays);
136 
138  virtual void setHullSpraySizeScale(double scale);
139 
141  virtual void setHullSprayStart(double offset);
142 
144  virtual void setHullSprayEnd(double offset);
145 
148  virtual void setHullSprayVelocityScale(double scale);
149 
151  virtual void setHullSprayVerticalOffset(double offset);
152 
153  virtual void setVisible( bool isVisible );
154 
156  virtual void setIsSinking( bool sinking );
157 
158  protected:
159  virtual void addToParent( DtSceneObjectAgent* parent);
160  virtual void removeFromParent( DtSceneObjectAgent* parent);
161 
162  virtual void createModelAgents();
163  virtual void destroyModelAgents();
164 
165  // Called when the entity display settings default LOD changes and we are
166  // using the default. Unlike setLODDistance, this does NOT disconnect
167  // us from that signal
168  virtual void slot_wakeDefaultLODDistanceChanged( double distance );
169 
170  virtual void slot_wakesEnabledChanged( bool enabled );
171 
172  protected:
173  DtWakeModelAgent* myWakeModelAgent;
174  DtWakeUpdaterAgent* myWakeUpdaterAgent;
175 
177 
178  // The connection to the entity display settings default LOD distance is handled
179  // separately, so it can be disconnected if setLODDistance() is called from the API
180  boost::signalslib::connection myWakeLODDistanceChangedConnection;
181 
184  };
185 
189 }
bool myIsSinking
Definition: DtCigiWakeEntity.h:182
DtCigiObjectCreatorTemplate< DtCigiWakeEntity > DtCigiWakeEntityCreator
Creator that will be registered with the CIGI object factory to create this class.
Definition: DtCigiWakeEntity.h:188
double myWakeLODRange
Definition: DtCigiWakeEntity.h:183
voidpf void uLong size
Definition: ioapi.h:39
Contains DLL export macros.
A DtCigiWatercraftEntity is a CIGI entity that manages buoyancy and the the parenting of wake entitie...
Definition: DtCigiWaterCraftEntity.h:36
A DtCigiWakeEntity is a CIGI entity that loads an wake model.
Definition: DtCigiWakeEntity.h:33
boost::signalslib::connection myWakeLODDistanceChangedConnection
Definition: DtCigiWakeEntity.h:180
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtCigiBaseEntity class declaration.
This class is responsible for the actual processing of CIGI data. This holds the entity visualizer...
Definition: DtCigiConnection.h:57
Base class to provide boost signal/slot management.
DT_DLL_VRVCORE double length(const makVrv::DtCoordinateSystem &, const std::vector< DtVector > &vertices)
Returns the total distance of a segmented line defined by the provided vector of vertices. Coordinates are in local database coordinates. The coordinate system is used to convert between the local database coordinates and geocentric. All distance is in 2D – the Z value is ignored.
DtWakeModelAgent * myWakeModelAgent
Definition: DtCigiWakeEntity.h:173
This class provides an abstract base class for CIGI entities. These are created by the DtCigiEntityVi...
Definition: DtCigiBaseEntity.h:42
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
DtSignalConnectionManager myConnections
Definition: DtCigiWakeEntity.h:176
DtWakeUpdaterAgent * myWakeUpdaterAgent
Definition: DtCigiWakeEntity.h:174
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
voidpf uLong offset
Definition: ioapi.h:42
Definition: DtCigiBaseEntity.h:437

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)