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) 2024 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 
68  DtVector my3DPos;
69  DtVector my3DOffset;
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);
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 setIsTextureFillFittedToAreaEnabled(bool isTextureFillFittedToAreaEnabled);
215 
219  virtual bool isTextureFillFittedToAreaEnabled() const;
220 
224  virtual void setChannelInstance(DtChannel*, DtModelSetId modelSet);
225 
227  virtual const VertexList& vertexList() const;
228 
230  virtual void setPoints(const std::vector<DtVector>& points);
231 
233  virtual void setVertexList(const VertexList&);
234 
236  virtual const std::vector<DtVector>& points() const;
237 
239  virtual void updateGeometry();
240 
241  protected:
242 
244  virtual void createPolygonIfNecessary();
245 
247  virtual void updateColors();
248 
251  virtual void computeTopoTransform(DtCoordTransform& geocToTopo,
252  DtVector& geocentricOrigin) const;
253 
256  virtual void updateTextureCoordinates(DtFilledPolygonInterface* polygon);
257 
259  virtual void translateAndUpdateVertex( unsigned int index, const VertexData& vert, DtPolygonInterface* polygon);
260 
262  virtual void channelUpdated(const DtTacticalGraphicModelUpdaterManager::ChannelUpdateData&);
263 
265  virtual std::vector<DtVector> topographicVertices() const;
266 
268  virtual void slot_coordinateSystemChanged();
269 
270  virtual void deletePolygons();
271 
272  protected:
273 
275 
277 
278  // Flat list of points. Valid after call to updateGeometry
280 
282  {
283  DtPolygonInterface* polygon = nullptr;
284 
285  DtFilledPolygonInterface* filledPolygonInterface = nullptr;
286  DtOutlinedPolygonInterface* outlinedPolygonInterface = nullptr;
287  DtTexturedOutlinedPolygonInterface* texturedOutlinedPolygonInterface = nullptr;
288  DtDecalProjectorPolygonInterface* decalProjecterPolygonInterface = nullptr;
289  };
290 
293 
296 
298 
299  bool myFilled;
301 
302  float myWidth;
305  unsigned int myStipplePattern;
307  unsigned long long myUserData;
308 
311  bool myOutline;
314 
315  DtVector myOrigin;
317 
319  int myGroup;
320 
323  DtCoordinateSystem* myCoordinateSystem = nullptr;
324  };
325 
330  {
331  public:
332 
334  static void registerCreator(DtDe& de, DtModelInstanceCreator* creator);
335 
338 
341 
343  virtual DtModelInstance* create(DtDe& de);
344 
345  };
346 }
DtSignalConnectionManager myConnections
Definition: DtOverlayPolygonModelInstance.h:276
The base class for all model instances.
Definition: DtModelInstance.h:41
VertexList myVertices
Definition: DtOverlayPolygonModelInstance.h:274
A convex polygon drawn using lines.
Definition: DtOutlinedPolygonInterface.h:25
unsigned long long myUserData
Definition: DtOverlayPolygonModelInstance.h:307
A variable vertex convex filled 2D polygon.
Definition: DtFilledPolygonInterface.h:26
DtModelSetId myModelSet
Definition: DtOverlayPolygonModelInstance.h:306
bool myVisibleFlag
Definition: DtOverlayPolygonModelInstance.h:310
bool myIsTextureFillFittedToAreaEnabled
Definition: DtOverlayPolygonModelInstance.h:297
voidpf uLong int origin
Definition: ioapi.h:42
DtVector4< float > myOuterColor
Definition: DtOverlayPolygonModelInstance.h:304
float myWidth
Definition: DtOverlayPolygonModelInstance.h:302
Contains makVrv:DtTacticalGraphicModelUpdaterManager.
Definition: DtOverlayPolygonModelInstance.h:57
DtVector4< float > myInnerColor
Definition: DtOverlayPolygonModelInstance.h:303
Interface for a texture. Used to pass in a texture to vrvGraphics.
Definition: DtTextureInterface.h:24
bool myEventsEnabled
Definition: DtOverlayPolygonModelInstance.h:309
4 dimensional vector
An abstract interface for a polygon primitive.
Definition: DtPolygonInterface.h:21
bool myEnableDecalProjector
Definition: DtOverlayPolygonModelInstance.h:313
std::vector< DtVector > DtVerticesVector
Definition: DtTacticalGraphicUtilities.h:25
float my2DLength
Definition: DtOverlayPolygonModelInstance.h:70
DtPolygonWithInterfaces myPolygonOne
Definition: DtOverlayPolygonModelInstance.h:291
DtVector my3DOffset
Definition: DtOverlayPolygonModelInstance.h:69
DtVector my3DPos
Definition: DtOverlayPolygonModelInstance.h:68
int myGroup
Definition: DtOverlayPolygonModelInstance.h:319
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:295
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtPolygonWithInterfaces myPolygonTwo
Definition: DtOverlayPolygonModelInstance.h:292
The polymorphic creator for the DtModelInstance.
Definition: DtModelInstance.h:153
A Creator for the makVrv::DtOsgSimpleModelInstance class.
Definition: DtOverlayPolygonModelInstance.h:328
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
float myFillPatternFrequency
Definition: DtOverlayPolygonModelInstance.h:300
Contains makVrv::DtQuat class.
A convex polygon drawn using lines.
Definition: DtDecalProjectorPolygonInterface.h:25
bool mySolidFillCenter
Definition: DtOverlayPolygonModelInstance.h:312
unsigned int myStipplePattern
Definition: DtOverlayPolygonModelInstance.h:305
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
bool myOutline
Definition: DtOverlayPolygonModelInstance.h:311
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:299
DtVector myOrigin
Definition: DtOverlayPolygonModelInstance.h:315
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:76
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:318
DtQuat myRotation
Definition: DtOverlayPolygonModelInstance.h:316
DtTextureInterface * myFillTexture
Definition: DtOverlayPolygonModelInstance.h:294
Definition: DtOverlayPolygonModelInstance.h:281
vrvTacticalGraphicUtilities::DtVerticesVector myPoints
Definition: DtOverlayPolygonModelInstance.h:279
Contains DLL export macros.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)