VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTritonPlanarReflectionManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvTriton/vrvTriton.h>
15 
17 
19 
20 #include <matrix/vlVector.h>
21 
22 #include <osg/ref_ptr>
23 #include <osg/observer_ptr>
24 #include <osg/Plane>
25 #include <osg/Matrixd>
26 #include <osg/Matrixf>
27 
28 namespace osg
29 {
30  class RenderInfo;
31 }
32 
33 namespace makVrv
34 {
35  class DtDe;
36  class DtTritonDrawable;
37  class DtOsgRenderer;
38  class DtCoordinateConverter;
39 
42 
45 
47  template <>
48  inline const char* creatorTypeName<DtTritonPlanarReflectionManager>(void) { return "DtTritonPlanarReflectionManagerCreator"; }
49 
52  {
53  protected:
54  typedef osg::observer_ptr< osg::Camera > CameraObserverPtr;
56  typedef std::map< CameraObserverPtr, PlanarReflectionRef > MapCameraObserverPtrsToPlanarReflection;
57 
58  public:
61 
62  // destructor
64 
65  protected:
68 
69  private:
75  DtTritonPlanarReflectionManager &operator=(const DtTritonPlanarReflectionManager &other) = delete;
76 
77  public:
79  virtual void setMaxReflectionWindSpeed(double metersPerSecond);
80 
82  virtual void setPlanarReflectionsEnabled(bool enabled);
84  virtual bool planarReflectionsEnabled(void) const;
86 
88  virtual void enableReflections(bool enabled);
89 
91  virtual void removeAllPlanarReflections();
92 
97  virtual DtPlanarReflection* getOrCreatePlanarReflection(osg::RenderInfo& renderInfo, bool& isNewReflection);
98 
103  virtual DtPlanarReflection* getPlanarReflection(osg::Camera* camera);
104 
106  virtual void updateReflectionBlend(const osg::Vec3& currentPosition);
107 
109  virtual void updateReflectionMatrix(const osg::Vec3& currentPosition);
110 
112  virtual void updateReflectionBlendAndMatrix(const osg::Vec3& currentPosition);
113 
115  virtual const osg::Matrixd& reflectionMatrix(void) const;
116 
118  virtual const osg::Plane& reflectionPlane(void) const;
119 
121  virtual float reflectionBlend(void) const;
122 
124  virtual bool planarReflectionsFlag(void) const;
125 
127  virtual int numPlanarReflectionCameras(void) const;
128 
131  virtual osg::ref_ptr<osg::Camera> planarReflectionCamera(int index) const;
132 
135  virtual DtPlanarReflection* planarReflection(int index) const;
136 
138  virtual void flushInvalidCameras(void);
139 
140  protected:
141 
145  virtual DtPlanarReflection* setupPlanarReflections(osg::RenderInfo &renderInfo);
146 
148  virtual osg::Node* createReflectionWorldGraph(makVrv::DtOsgRenderer& osgRenderer,
149  const osg::Matrix & localToWorld, const osg::Vec3& currentPos);
150 
152  virtual void slot_coordinateSystemChanged();
153 
154  protected:
155 
158 
160 
161  // This boolean indicates whether or not planar reflections have been requested,
162  // regardless of the internal state of the drawable. When it finally gets around
163  // to setting up planar reflections, this flag is checked
165 
167 
169 
172 
173  osg::Plane myReflectionPlane;
174  osg::Matrixd myReflectionMatrix;
176 
178 
180 
183  DtCoordinateConverter* myCoordinateConverter = nullptr;
184  };
185 }
Declares the DtPlanarReflection class.
friend DtTritonPlanarReflectionManagerCreator
friend class so only the creator can create this class
Definition: DtTritonPlanarReflectionManager.h:60
The DtOsgRenderer is the component responsible for rendering 3D images onto the screen via OpenSceneG...
Definition: DtOsgRenderer.h:87
bool myReflectionsActive
Definition: DtTritonPlanarReflectionManager.h:168
DtCoordinateConverter is the base class for &#39;local (cig) to geocentric&#39; converters.
Definition: DtCoordinateConverter.h:25
DtDe & myDe
Definition: DtTritonPlanarReflectionManager.h:157
Definition: featureContext.h:37
DtVirtualBaseClassCreator< DtTritonPlanarReflectionManager, DtTritonDrawable * > DtTritonPlanarReflectionManagerCreator
creator
Definition: DtTritonPlanarReflectionManager.h:41
bool myPlanarReflectionsFlag
Definition: DtTritonPlanarReflectionManager.h:166
osg::Plane myReflectionPlane
Definition: DtTritonPlanarReflectionManager.h:173
bool myPlanarReflectionsEnabled
Definition: DtTritonPlanarReflectionManager.h:164
osg::Matrixd myReflectionMatrix
Definition: DtTritonPlanarReflectionManager.h:174
A camera for rendering Triton&#39;s planar reflection texture.
Definition: DtPlanarReflection.h:27
osg::ref_ptr< DtPlanarReflection > PlanarReflectionRef
Definition: DtTritonPlanarReflectionManager.h:55
float myMaxWindForReflections
Definition: DtTritonPlanarReflectionManager.h:177
DtSignalConnectionManager myConnections
Definition: DtTritonPlanarReflectionManager.h:179
float myMaxReflectionBlend
Definition: DtTritonPlanarReflectionManager.h:171
Contains DLL export macros.
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
float myReflectionBlend
Definition: DtTritonPlanarReflectionManager.h:170
#define DT_DLL_VRVTRITON
Definition: vrvTriton.h:19
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtVector myLastGeocentricReference
Definition: DtTritonPlanarReflectionManager.h:175
DtTritonDrawable * myTritonDrawable
Definition: DtTritonPlanarReflectionManager.h:156
Base class to provide boost signal/slot management.
MapCameraObserverPtrsToPlanarReflection myPlanarReflectionCameraMap
Definition: DtTritonPlanarReflectionManager.h:159
const char * creatorTypeName< DtTritonPlanarReflectionManager >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtTritonPlanarReflectionManager.h:48
osg::observer_ptr< osg::Camera > CameraObserverPtr
Definition: DtTritonPlanarReflectionManager.h:54
class for managing the planar reflections used by triton drawable.
Definition: DtTritonPlanarReflectionManager.h:51
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
An OSG Drawable representing Triton&#39;s infinite ocean. /ingroup vrvTriton.
Definition: DtTritonDrawable.h:62
std::map< CameraObserverPtr, PlanarReflectionRef > MapCameraObserverPtrsToPlanarReflection
Definition: DtTritonPlanarReflectionManager.h:56

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)