VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOverlaySecurityModel.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>
13 #include <vrvCore/DtModel.h>
14 #include <vrvCore/DtUniqueID.h>
16 
17 #include <vrvMath/DtVector2.h>
18 #include <vrvMath/DtVector3.h>
19 #include <vrvMath/DtVector4.h>
20 
22 
23 #include <matrix/vlDcm.h>
24 
25 #include <array>
26 
27 namespace makVrv
28 {
29  class DtDe;
30  class DtSegmentedLineInterface;
31  class DtTextProxyInterface;
32  class DtCoordinateSystem;
33 
50  {
51  public:
52  enum class SecurityType
53  {
54  COVER
55  , GUARD
56  , SCREEN
57  };
58 
61 
63  virtual ~DtOverlaySecurityModel();
64 
67 
69  // @{
70  virtual void setOrigin(const DtVector& position);
71  virtual DtVector origin() const;
72  // @}
73 
75  virtual void setOrientation(const DtTaitBryan& orientation);
76 
78  // @{
79  virtual void setScale(float scale);
80  virtual float scale() const;
81  // @}
82 
84  // @{
85  virtual void setVisible(bool isVisible);
86  virtual bool isVisible() const;
87  // @}
88 
90  // @{
91  virtual void setStipplePattern(unsigned int stipplePattern);
92  virtual unsigned int stipplePattern() const;
93  // @}
94 
96  // @{
97  virtual void setLineWidth(float);
98  virtual float lineWidth() const;
99  // @}
100 
102  virtual void setColor(float r, float g, float b, float a);
103  virtual bool getColor(float& r, float& g, float& b, float& a) const;
104 
106  // @{
107  virtual void setEventsEnabled(bool enabled);
108  virtual bool eventsEnabled() const;
109  // @}
110 
115  // @{
116  virtual void setGroup(int groupNum);
117  virtual int group() const;
118  // @}
119 
120 
123  virtual void setSecurityType(DtOverlaySecurityModel::SecurityType type);
124  virtual DtOverlaySecurityModel::SecurityType securityType() const;
126 
128  // @{
129  virtual void setFontFile(std::string fontFile);
130  virtual std::string fontFile() const;
131  // @}
132 
134  // @{
135  virtual void setFontPointSize(float pointSize);
136  virtual float fontPointSize() const;
137  // @}
138 
140  // @{
141  virtual void setFontColor(float r, float g, float b, float a);
142  virtual bool getFontColor(float& r, float& g, float& b, float& a) const;
143  // @}
144 
146 
147  // @name Inherited DtModel methods
148  // @{
149 
151  virtual void setPosition(int vtx, const DtVector& position) override;
152 
155  virtual void setOrientation(int vtx, const DtTaitBryan& orientation) override;
156 
158  virtual void setModelDefinition(const std::string& str) override;
159 
160  // @}
161 
162  protected:
163 
164  struct Arrow;
165 
166  // @name Inherited DtModel methods
167  // @{
168 
170  virtual void addToScene(const DtUniqueID& sceneObjectId,
171  DtModelSetId modelSet, int visualizerType) override;
172 
174  virtual void removeFromScene() override;
175 
179  virtual void setIsSupportModel(bool isSupport) override;
180 
181  // @}
182 
184  virtual void needsUpdate();
185 
187  virtual void update();
188 
190  virtual void createSecurityModelIfNecessary();
191 
193  virtual void clearGeometry();
194 
196  virtual void set3DPositionAux(double x, double y, double z, float tempPackedCoords[4]);
197 
199  virtual void updateColors();
200 
202  virtual void updateLineColor(DtSegmentedLineInterface* seg, float r, float g, float b, float a);
203 
205  virtual void updateLineWidth(DtSegmentedLineInterface* seg, float width);
206 
208  virtual void setEventsEnabledLine(DtSegmentedLineInterface* seg, bool b, unsigned long long userData);
209 
211  virtual void updateLineStipple(DtSegmentedLineInterface* seg, unsigned int stipple);
212 
214  virtual void updateArrow(Arrow* arrow, const DtVector& start, const DtVector& end, bool left, DtTextProxyInterface* label);
215 
217  virtual DtDcm calcOrientationDcm(const DtVector& startV, double angleMidPoint1);
218 
221  virtual void set3DPositionAuxDcm(DtDcm dcmOri, DtVector posOffset,
222  double x, double y, double z, float packedCoords[4]);
223 
225  virtual void slot_coordinateSystemChanged();
226 
228  virtual void updateVertices();
229 
231  virtual void setDimensions(float x, float y);
232  virtual bool getDimensions(float& x, float& y) const;
233 
235  virtual void forEachLine(const std::function<void(DtSegmentedLineInterface*)>& func);
236 
238  std::string securityTypeString(void) const;
239  protected:
240  std::array<DtVector, 4> myControlPoints;
241  std::array<bool, 4> myControlPointsSet;
242 
244 
245  boost::signalslib::connection mySignalPostUpdateConnection;
246 
250 
253  float myScale;
254 
255  float myLineWidth;
257  unsigned long long myUserData;
258 
259  bool myVisible;
260  unsigned int myLineStipplePattern;
261  int myGroup;
262 
264 
265  struct Arrow
266  {
267  public:
268  Arrow(DtDe& de, DtModelSetId modelSetId);
269  virtual ~Arrow();
270  public:
271  DtSegmentedLineInterface* myPrimary = nullptr;
272  DtSegmentedLineInterface* myAppendage = nullptr;
273  };
274 
275  std::array<Arrow*, 2> myArrows;
276 
277  std::array<DtTextProxyInterface*, 2> myLabels;
278 
279  // An overall position
281 
283 
285 
286  // local clone of the system wide coordinate system.
287  // for thread safety.
290 
291  std::string myFontFile;
294 
296  private:
297 
299  DtOverlaySecurityModel() = delete;
300 
303 
305  DtOverlaySecurityModel& operator=(const DtOverlaySecurityModel &) = delete;
306  };
307 }
bool myEventsEnabled
Definition: DtOverlaySecurityModel.h:256
DtSignalConnectionManager myConnections
Definition: DtOverlaySecurityModel.h:288
float myLineWidth
Definition: DtOverlaySecurityModel.h:255
DtDcm myOrientationDcm
Definition: DtOverlaySecurityModel.h:248
2 dimensional vector
boost::signalslib::connection mySignalPostUpdateConnection
Definition: DtOverlaySecurityModel.h:245
voidpf uLong int origin
Definition: ioapi.h:42
int myOverlayId
Definition: DtOverlaySecurityModel.h:263
std::array< Arrow *, 2 > myArrows
Definition: DtOverlaySecurityModel.h:275
std::string myFontFile
Definition: DtOverlaySecurityModel.h:291
4 dimensional vector
DtCoordinateSystem * myCoordinateSystem
Definition: DtOverlaySecurityModel.h:289
SecurityType
Definition: DtOverlaySecurityModel.h:52
Definition: DtOverlaySecurityModel.h:265
DtAltitudeBasedConfigurationCollection myAltitudeBasedConfigurationCollection
Definition: DtOverlaySecurityModel.h:295
3 dimensional vector
Contains makVrv::DtAltitudeBasedConfiguration class.
An interface for a convex polygon drawn using lines.
Definition: DtSegmentedLineInterface.h:25
std::array< DtTextProxyInterface *, 2 > myLabels
Definition: DtOverlaySecurityModel.h:277
SecurityType mySecurityType
Definition: DtOverlaySecurityModel.h:282
int myGroup
Definition: DtOverlaySecurityModel.h:261
A class for controlling text owned by the TextRenderer.
Definition: DtTextProxyInterface.h:30
int myNumberOfControlPoints
Definition: DtOverlaySecurityModel.h:284
DtVector myOrigin
Definition: DtOverlaySecurityModel.h:280
float myFontPointSize
Definition: DtOverlaySecurityModel.h:292
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtTaitBryan myOrientationTaitBryan
Definition: DtOverlaySecurityModel.h:249
bool myVisible
Definition: DtOverlaySecurityModel.h:259
DtModelSetId myModelSet
Definition: DtOverlaySecurityModel.h:247
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Contains makVrv::DtModel class.
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
DtVector4< double > myColor
Definition: DtOverlaySecurityModel.h:251
Base class to provide boost signal/slot management.
float myScale
Definition: DtOverlaySecurityModel.h:253
std::array< bool, 4 > myControlPointsSet
Definition: DtOverlaySecurityModel.h:241
Model for security: cover/guard/screen See: https://www.jcs.mil/Portals/36/Documents/Doctrine/Other_P...
Definition: DtOverlaySecurityModel.h:49
std::array< DtVector, 4 > myControlPoints
Definition: DtOverlaySecurityModel.h:240
DtVector4< float > myFontColor
Definition: DtOverlaySecurityModel.h:293
A model which owns a single model instance. A DtModel is a managing container for a single DtModelIns...
Definition: DtModel.h:56
Contains makVrv::DtUniqueID type.
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
DtModelSetId
Definition: DtModelSetEnums.h:19
unsigned int myLineStipplePattern
Definition: DtOverlaySecurityModel.h:260
bool myNeedsUpdate
Definition: DtOverlaySecurityModel.h:243
unsigned long long myUserData
Definition: DtOverlaySecurityModel.h:257
DtVector2< double > myDimensions
Definition: DtOverlaySecurityModel.h:252
std::vector< DtAltitudeBasedConfiguration > DtAltitudeBasedConfigurationCollection
A collection of altitude-based configurations for a text proxy.
Definition: DtAltitudeBasedConfiguration.h:42
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)