VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOverlayPolygonModelInstance.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 
12 #include <vrvCore/vrvCore.h>
17 
19 #include <vrvUtil/DtQuat.h>
20 
21 #include <vrvMath/DtVector4.h>
22 
23 #include <matrix/coordTransform.h>
24 
25 #include <vector>
26 
27 namespace osg
28 {
29  class Texture;
30 }
31 
32 namespace makVrv
33 {
34  class DtPolygonInterface;
35  class DtFilledPolygonInterface;
36  class DtOutlinedPolygonInterface;
37  class DtTexturedOutlinedPolygonInterface;
38  class DtDecalProjectorPolygonInterface;
39  class DtTextureInterface;
40  class DtQuadProxy;
41  class DtChannelManager;
42  class DtChannel;
43  class DtCoordinateSystem;
44  class DtTextureObject;
45  enum class DtModelSetId;
46 
54  {
55  public:
56 
57  struct VertexData
58  {
60  : my3DPos()
61  , my3DOffset()
62  {
63  my2DLength = 0.0f;
64  my2DOffset[0] = 0.0f;
65  my2DOffset[1] = 0.0f;
66  }
67 
70  float my2DLength;
71  float my2DOffset[2];
72  };
73 
74  using VertexList = std::vector<VertexData>;
75 
76  public:
77 
80 
83 
86 
89 
92 
93  public:
94 
97  virtual void setModelSet( DtModelSetId );
98 
100  virtual void setPosition( int vtx, const DtVector& position );
101 
103  virtual void setRotation(const DtQuat& quat);
104 
106  virtual void setOrigin(const DtVector&);
107 
110  virtual void setGroup( int );
111 
113  virtual DtVector origin() const;
114 
116  virtual void addPoint(const DtVector& point,int index);
117 
119  virtual void removePoint(int index);
120 
122  virtual void set2dOffset(int index, float x, float y);
123 
126  virtual void set3dDirection2dLength( int index, float x, float y, float z,
127  float len );
128 
130  virtual void setColor(float r,float g,float b,float a);
131 
136  virtual void setFillTexturePath(const std::string& texturePath, bool isStipple = true);
137 
142  virtual void setOutlineTexture(const std::string& texturePath, int width=-1, int height = -1);
143 
145  virtual void setSolidFillCenter(bool);
146 
148  virtual void setStipplePattern(unsigned int stipplePattern);
149 
151  virtual void setWidth(float width);
152 
154  virtual void setEventWidth(float width);
155 
157  virtual void setVisible(bool isVisible);
158 
160  virtual void setPickable(bool enabled);
161 
163  virtual void setEventsEnabled(bool, unsigned long long userData);
164 
166  bool eventsEnabled() const;
167 
169  virtual void setFill(bool);
170 
172  virtual void setInsideColor( float r, float g, float b, float a );
173 
175  virtual void getInsideColor(float& r, float& g, float& b, float& a);
176 
178  virtual void setOutsideColor( float r, float g, float b, float a );
179 
181  virtual void getOutsideColor(float& r, float& g, float& b, float& a);
182 
184  virtual int pointCount() const;
185 
187  virtual DtVector point(int) const;
188 
190  virtual void setFillPattern(const std::vector<unsigned int>& pattern);
191 
197  virtual void setFillPatternFrequency(float frequency);
198 
200  virtual float fillPatternFrequency() const;
201 
203  virtual void setOutline(bool);
204 
206  virtual void setEnableDecalProjector(bool enable);
207 
209  virtual bool enableDecalProjector() const;
210 
214  virtual void setChannelInstance(DtChannel*, DtModelSetId modelSet);
215 
217  virtual const VertexList& vertexList() const;
218 
220  virtual void setPoints(const std::vector<DtVector>& points);
221 
223  virtual void setVertexList(const VertexList&);
224 
226  virtual const std::vector<DtVector>& points() const;
227 
229  virtual void updateGeometry();
230 
231  protected:
232 
234  virtual void createPolygonIfNecessary();
235 
237  virtual void updateColors();
238 
241  virtual void computeTopoTransform(DtCoordTransform& geocToTopo,
242  DtVector& geocentricOrigin) const;
243 
246  virtual void updateTextureCoordinates(DtFilledPolygonInterface* polygon);
247 
249  virtual void translateAndUpdateVertex( unsigned int index, const VertexData& vert, DtPolygonInterface* polygon);
250 
252  virtual void channelUpdated(const DtTacticalGraphicModelUpdaterManager::ChannelUpdateData&);
253 
255  virtual std::vector<DtVector> topographicVertices() const;
256 
258  virtual void slot_coordinateSystemChanged();
259 
260  virtual void deletePolygons();
261 
262  protected:
263 
265 
267 
268  // Flat list of points. Valid after call to updateGeometry
270 
272  {
273  DtPolygonInterface* polygon = nullptr;
274 
275  DtFilledPolygonInterface* filledPolygonInterface = nullptr;
276  DtOutlinedPolygonInterface* outlinedPolygonInterface = nullptr;
277  DtTexturedOutlinedPolygonInterface* texturedOutlinedPolygonInterface = nullptr;
278  DtDecalProjectorPolygonInterface* decalProjecterPolygonInterface = nullptr;
279  };
280 
283 
286 
287  bool myFilled;
289 
290  float myWidth;
293  unsigned int myStipplePattern;
295  unsigned long long myUserData;
296 
299  bool myOutline;
302 
305 
307  int myGroup;
308 
311  DtCoordinateSystem* myCoordinateSystem = nullptr;
312  };
313 
318  {
319  public:
320 
322  static void registerCreator(DtDe& de, DtModelInstanceCreator* creator);
323 
326 
329 
331  virtual DtModelInstance* create(DtDe& de);
332 
333  };
334 }
DtSignalConnectionManager myConnections
Definition: DtOverlayPolygonModelInstance.h:266
The base class for all model instances.
Definition: DtModelInstance.h:41
VertexList myVertices
Definition: DtOverlayPolygonModelInstance.h:264
A convex polygon drawn using lines.
Definition: DtOutlinedPolygonInterface.h:25
unsigned long long myUserData
Definition: DtOverlayPolygonModelInstance.h:295
A variable vertex convex filled 2D polygon.
Definition: DtFilledPolygonInterface.h:26
DtModelSetId myModelSet
Definition: DtOverlayPolygonModelInstance.h:294
bool myVisibleFlag
Definition: DtOverlayPolygonModelInstance.h:298
voidpf uLong int origin
Definition: ioapi.h:42
DtVector4< float > myOuterColor
Definition: DtOverlayPolygonModelInstance.h:292
float myWidth
Definition: DtOverlayPolygonModelInstance.h:290
Contains makVrv:DtTacticalGraphicModelUpdaterManager.
Definition: DtOverlayPolygonModelInstance.h:57
DtVector4< float > myInnerColor
Definition: DtOverlayPolygonModelInstance.h:291
Interface for a texture. Used to pass in a texture to vrvGraphics.
Definition: DtTextureInterface.h:24
bool myEventsEnabled
Definition: DtOverlayPolygonModelInstance.h:297
4 dimensional vector
An abstract interface for a polygon primitive.
Definition: DtPolygonInterface.h:21
bool myEnableDecalProjector
Definition: DtOverlayPolygonModelInstance.h:301
std::vector< DtVector > DtVerticesVector
Definition: DtTacticalGraphicUtilities.h:25
float my2DLength
Definition: DtOverlayPolygonModelInstance.h:70
DtPolygonWithInterfaces myPolygonOne
Definition: DtOverlayPolygonModelInstance.h:281
DtVector my3DOffset
Definition: DtOverlayPolygonModelInstance.h:69
DtVector my3DPos
Definition: DtOverlayPolygonModelInstance.h:68
int myGroup
Definition: DtOverlayPolygonModelInstance.h:307
The abstract Channel Class.
Definition: DtChannel.h:35
Structure used to supply data to callback. Provided as structure as contents could change over time...
Definition: DtTacticalGraphicModelUpdaterManager.h:37
DtTextureInterface * myOutlineTexture
Definition: DtOverlayPolygonModelInstance.h:285
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtPolygonWithInterfaces myPolygonTwo
Definition: DtOverlayPolygonModelInstance.h:282
The polymorphic creator for the DtModelInstance.
Definition: DtModelInstance.h:153
A Creator for the makVrv::DtOsgSimpleModelInstance class.
Definition: DtOverlayPolygonModelInstance.h:316
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
float myFillPatternFrequency
Definition: DtOverlayPolygonModelInstance.h:288
Contains makVrv::DtQuat class.
A convex polygon drawn using lines.
Definition: DtDecalProjectorPolygonInterface.h:25
bool mySolidFillCenter
Definition: DtOverlayPolygonModelInstance.h:300
unsigned int myStipplePattern
Definition: DtOverlayPolygonModelInstance.h:293
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
bool myOutline
Definition: DtOverlayPolygonModelInstance.h:299
Contains makVrv::DtModelInstance class.
Base class to provide boost signal/slot management.
std::vector< VertexData > VertexList
Definition: DtOverlayPolygonModelInstance.h:74
bool myFilled
Definition: DtOverlayPolygonModelInstance.h:287
DtVector myOrigin
Definition: DtOverlayPolygonModelInstance.h:303
Contains makVrv::DtTextProxyInterface class declaration.
VertexData()
Definition: DtOverlayPolygonModelInstance.h:59
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:72
A utility Quaternion class.
Definition: DtQuat.h:19
Draw a polygonal line with a texture.
Definition: DtTexturedOutlinedPolygonInterface.h:25
DtModelSetId
Definition: DtModelSetEnums.h:19
A model instance class which allows the drawing of a polygon (supporting textures) on an overlay...
Definition: DtOverlayPolygonModelInstance.h:53
DtChannel * myChannelInstance
Definition: DtOverlayPolygonModelInstance.h:306
DtQuat myRotation
Definition: DtOverlayPolygonModelInstance.h:304
DtTextureInterface * myFillTexture
Definition: DtOverlayPolygonModelInstance.h:284
Definition: DtOverlayPolygonModelInstance.h:271
vrvTacticalGraphicUtilities::DtVerticesVector myPoints
Definition: DtOverlayPolygonModelInstance.h:269
Contains DLL export macros.

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)