VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtQuadProxy.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2023 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
13 
15 
16 namespace makVrv
17 {
18  class DtPrimitiveStyle;
19  struct DtObserverRenderData;
20  class DtQuadRenderer;
21  class DtTextureInterface;
22 
27  {
28  public:
29 
30  friend class DtQuadRenderer;
31 
32  virtual ~DtQuadProxy();
33 
35  virtual void set3DPosition(int index, float x, float y, float z, float w);
36 
38  virtual void set3DPosition(float x, float y, float z, float w = 0) override;
39 
41  virtual void get3DPosition(float& x, float& y, float& z, float& w) const;
42 
44  virtual void set2DRotation(float angle);
45 
47  virtual void get2DRotation(float& angle) const;
48 
54  virtual void setIsRotationInScreenSpace(bool isRotationInScreenSpace);
55 
57  virtual bool isRotationInScreenSpace() const;
58 
64  virtual void setMaximumWorldHeight(double worldHeightInMeters);
65 
67  virtual double maximumWorldHeight() const;
68 
74  virtual void setMaximumWorldWidth(double worldWidthInMeters);
75 
77  virtual double maximumWorldWidth() const;
78 
80  virtual void setPoints(const float points[8]);
81 
83  virtual void getPoints(float points[8]) const;
84 
87  virtual void setPointsByMinimumAltitude(const float points[8], double altitude);
88 
95  virtual void setIsForcedPointsByAltitudeEnabled(bool isEnabled);
96 
100  virtual void setAltitudeForForcedPoints(double minimumAltitudeForUse);
101 
103  virtual void clearAltitudeSpecificConfigurations();
104 
106  virtual void setGroup(float order);
107 
109  virtual float group() const;
110 
112  virtual void setColor(float r, float g, float b, float a);
113 
115  virtual void getColor(float& r, float& g, float& b, float& a) const;
116 
118  virtual void setBounds(const float bounds[4]);
119 
121  virtual void getBounds(float bounds[4]) const;
122 
124  virtual void setBounds(const DtBoundingBox& box);
125 
127  virtual void getBounds(DtBoundingBox& box) const;
128 
130  virtual void setFillType(FillType style);
131 
133  virtual FillType fillType() const;
134 
136  virtual void setFillParameter( unsigned int fullStipplePattern[32] = 0);
137 
139  virtual void setTextureParameters( DtTextureInterface* textureHandle,
140  float left = 0.0f, float right = 1.0f,
141  float bottom = 0.0f, float top = 1.0f);
142 
144  virtual DtTextureInterface* findTextureHandle() const override;
145 
149  virtual void setLodOutAltitude(double lodOutAltitude);
150 
152  virtual double lodOutAltitude() const;
153 
156  virtual void setIsLodOutAltitudeEnabled(bool isLodOutAltitudeEnabled);
157 
159  virtual bool isLodOutAltitudeEnabled() const;
160 
162  virtual unsigned int index() const;
163 
165  virtual void setIndex(unsigned int index);
166 
167 
168  protected:
169 
171  DtQuadProxy(DtQuadRenderer& renderer, FillType effect);
172 
176  static void getBoundsFromPoints(float bounds[4], const float points[8]);
177 
179  bool hasAltitudeSpecificPoints() const;
180 
183  void updateRotationBasedOnCurrentObserverTopographicHeading(double heading);
184 
185  size_t indexOfPointsToUseForAltitude(double cameraAltitude) const;
186 
188  void updatePointsBasedOnAltitude(double cameraAltitude);
189 
195  bool updateLodVisibility(DtPrimitiveStyle* style, const DtObserverRenderData& observerRenderData);
196 
197  protected:
198 
200  unsigned int myIndex;
202 
205  {
206  public:
208 
209  DtAltitudeSpecificConfiguration(double altitude, const float points[8])
210  : myAltitude(altitude)
211  {
212  memcpy(myPoints, points, sizeof(float) * 8);
213  }
214 
215  double myAltitude;
216  float myPoints[8];
217  };
218 
219  typedef std::vector<DtAltitudeSpecificConfiguration> DtMinimumAltitudeToPointsVector;
220 
222 
225 
228 
230  float myRotation;
231 
234  };
235 
236 }
Contains makVrv::DtOverlayResourceProvider class.
double myMaximumWorldWidth
Definition: DtQuadProxy.h:232
double myAltitudeToUseForForcedPoints
Definition: DtQuadProxy.h:224
double myLodOutAltitude
Definition: DtQuadProxy.h:226
The abstract base class for the various primitive styles.
Definition: DtPrimitiveStyle.h:25
double myAltitude
Definition: DtQuadProxy.h:215
double myMaximumWorldHeight
Definition: DtQuadProxy.h:233
Interface for a texture. Used to pass in a texture to vrvGraphics.
Definition: DtTextureInterface.h:24
DtAltitudeSpecificConfiguration(double altitude, const float points[8])
Definition: DtQuadProxy.h:209
A class which allocates and draws quads.
Definition: DtQuadRenderer.h:44
bool myIsRotationInScreenSpace
Definition: DtQuadProxy.h:229
FillType myStyle
Definition: DtQuadProxy.h:201
#define DT_DLL_VRVGRAPHICS
Contains DLL export macros.
Definition: vrvGraphics.h:19
float myRotation
Definition: DtQuadProxy.h:230
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
A single 2D quadrilateral.
Definition: DtQuadProxyInterface.h:21
Contains the makVrv::DtQuadProxyInterface class declaration.
A class containing altitude-specific properties for the quad proxy.
Definition: DtQuadProxy.h:204
A flyweight class for controlling a single quad owned by the DtQuadRenderer.
Definition: DtQuadProxy.h:26
bool myIsForcedPointsByMinimumAltitudeEnabled
Definition: DtQuadProxy.h:223
DtQuadRenderer * myParent
Definition: DtQuadProxy.h:199
FillType
Definition: DtQuadProxyInterface.h:25
unsigned int myIndex
Definition: DtQuadProxy.h:200
bool myIsLodOutAltitudeEnabled
Definition: DtQuadProxy.h:227
Definition: DtCommonRenderData.h:32
DtMinimumAltitudeToPointsVector myAltitudeToPointsMap
Definition: DtQuadProxy.h:221
std::vector< DtAltitudeSpecificConfiguration > DtMinimumAltitudeToPointsVector
Definition: DtQuadProxy.h:219
A simple bounding box.
Definition: DtBoundingBox.h:101

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)