VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
backendLineOfSightManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
7 
12 #include <vrvCore/DtUniqueID.h>
14 #include <vlutil/vlString.h>
15 #include <matrix/vlVector.h>
16 #include <vlutil/vlPerformanceStats.h>
18 #include <vrfutil/rwUUID.h>
19 
20 #include <vlpi/simulationAddress.h>
21 
22 namespace makVrv
23 {
24  class DtDe;
25  class DtIntervisibilityStateListener;
26  class DtIntervisibilityElement;
27 }
28 
29 class DtSimMessage;
30 
31 namespace makVrf
32 {
33  class DtVrfSimBackendManager;
34  class DtIntervisibilityOptionExtensions;
35 
38  {
39  public:
41 
42  virtual ~DtBackendLineOfSightManager() override;
43 
45  static DtBackendLineOfSightManager& instance(makVrv::DtDe& de);
46  static void registerInstance(makVrv::DtDe& de, DtBackendLineOfSightManager*);
47 
49  virtual bool hasRequestPending(makVrv::DtUniqueID) const;
50 
52  virtual void requestLineOfSightCheck(makVrv::DtUniqueID, const DtVector& start, const DtVector& end,
53  bool intersectTerrain = true, bool intersectEntities = false, bool intersectFeatures = true);
54 
57  {
58  LineOfSightPoint(const DtVector& s, const DtVector& e, const DtString& u = "") :
59  start(s), end(e), userData(u) {};
60  LineOfSightPoint(const LineOfSightPoint& orig) : start(orig.start), end(orig.end), userData(orig.userData) {};
61 
62  DtVector start;
63  DtVector end;
65  };
66 
67  typedef std::vector<LineOfSightPoint> LineOfSightPoints;
68 
69  virtual void requestLineOfSightCheck(makVrv::DtUniqueID, const LineOfSightPoints& pts,
70  bool intersectTerrain = true, bool intersectEntities = false, bool intersectFeatures = true);
71 
74  virtual void addReference(makVrv::DtUniqueID);
75  virtual void removeReference(makVrv::DtUniqueID);
76 
78  virtual bool validBackendToCheck() const;
79 
81  boost::signals2::signal<void (makVrv::DtUniqueID, const DtIfIntersectionInformationResponse::IntersectionPairInformation&)> signal_lineOfSightResponse;
82 
84  boost::signals2::signal<void (makVrv::DtUniqueID, DtVrfExtendedIntervisibilitySettingsData::IntervisibilitySettings)> signal_extendedIntervisibilityOptionsChanged;
85 
87  virtual bool needsRequestForBackendLineOfSight(makVrv::DtUniqueID id, const DtVector& startPoint, const DtVector& endPoint,
88  double waitTimeRequest, bool intersectEntities, bool& startingTimeRequest, bool useAsTimer = false);
89 
91  virtual void setAlphaFactor(double);
92  virtual double alphaFactor() const;
93 
95 
96  virtual void adjustAlpha(makVrv::DtUniqueID, double alpha);
97  virtual void adjustColor(makVrv::DtUniqueID, const Color& visible, const Color& blocked);
98 
99  virtual bool itemIsSelected(makVrv::DtUniqueID) const;
100 
101  protected:
102  virtual void checkWaitingForColor();
103 
104  virtual void slot_visibleColorChanged(makVrv::DtUniqueID, float, float, float, float);
105  virtual void slot_blockedColorChanged(makVrv::DtUniqueID, float, float, float, float);
106 
107  virtual void slot_extendedIntervisibilityOptionsChanged(makVrv::DtUniqueID id, DtVrfExtendedIntervisibilitySettingsData::IntervisibilitySettings);
108 
109  virtual DtVrfSimBackendManager& backendManager() const;
110  virtual void removeRequestId(makVrv::DtUniqueID);
111  virtual void processIntersectionResponse(DtSimMessage*);
112 
115  virtual void resetColor(makVrv::DtUniqueID, const Color& visibleColor, const Color& blockedColor);
116 
117  virtual void slot_onCurrentSelectionChanged(const makVrv::DtSelectionManager::IdSet& deselected);
118 
119  virtual void setupConnectionsForListener(makVrv::DtIntervisibilityStateListener*, makVrv::DtSignalConnectionManager*);
120 
121  virtual void slot_elementToBeDestroyed(makVrv::DtIntervisibilityElement*);
122 
123  protected:
126 
127  std::map<makVrv::DtUniqueID, unsigned long> myKeyToRequestMap;
128  std::map<unsigned long, std::pair<makVrv::DtUniqueID, DtSimulationAddress> > myRequestToKeyMap;
129 
131  {
132  UpdateCheckState() : timingBackendRequest(false), elapsedTimeCheck(0.), refCount(0), listener(0),
133  lengthOfTimeForBackendResponse(0.), connections(0), optExt(0), alphaFactor(1.0)
134  {
135  }
136 
137  UpdateCheckState(const UpdateCheckState& orig) : timingBackendRequest(orig.timingBackendRequest), elapsedTimeCheck(orig.elapsedTimeCheck),
138  startPoint(orig.startPoint), endPoint(orig.endPoint), refCount(orig.refCount), listener(orig.listener),
139  lengthOfTimeForBackendResponse(orig.lengthOfTimeForBackendResponse),
140  connections(orig.connections), optExt(orig.optExt), blockedColor(orig.blockedColor), visibleColor(orig.visibleColor),
141  currentBlockedColor(orig.currentBlockedColor), currentVisibleColor(orig.currentVisibleColor), alphaFactor(orig.alphaFactor)
142  {
143  }
144 
146  {
147  delete connections;
148  }
149 
153  DtTimedSection timedSection;
154  DtVector startPoint;
155  DtVector endPoint;
156  int refCount;
159 
162  double alphaFactor;
163 
166 
167  DtTimedSection backendRequestTimer;
169  };
170 
171  std::map<makVrv::DtUniqueID, UpdateCheckState> myUpdateCheckState;
173  boost::signals2::connection mySelectionChangedConnection;
174 
176 
177  struct ColorWait
178  {
179  ColorWait() {};
180  ColorWait(const Color& v, const Color& b) : visibleColor(v), blockedColor(b) {};
181  ColorWait(const ColorWait& orig) : visibleColor(orig.visibleColor), blockedColor(orig.blockedColor) {};
182 
183  Color visibleColor, blockedColor;
184  };
185 
186  std::map<makVrv::DtUniqueID, ColorWait> myWaitForSelectionChange;
187  };
188 }
ColorWait()
Definition: backendLineOfSightManager.h:179
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Color currentVisibleColor
Definition: backendLineOfSightManager.h:165
boost::signals2::connection mySelectionChangedConnection
Definition: backendLineOfSightManager.h:173
Definition: vrfExtendedIntervisibilitySettings.h:29
makVrv::DtDe & myDe
Definition: backendLineOfSightManager.h:124
DtTimedSection timedSection
Definition: backendLineOfSightManager.h:153
The DtIntervisibilityElement class implements the common behavior of shape elements that are added to...
Definition: DtIntervisibilityElement.h:37
makVrv::DtSignalConnectionManager myConnections
Definition: backendLineOfSightManager.h:172
DtVector end
Definition: backendLineOfSightManager.h:63
DtIntervisibilityOptionExtensions * optExt
Definition: backendLineOfSightManager.h:150
Contains makVrv:DtSelectionManager class.
DtVrfSimBackendManager * myBackendManager
Definition: backendLineOfSightManager.h:125
double elapsedTimeCheck
Definition: backendLineOfSightManager.h:152
Contains the DtUUID class declaration.
std::map< makVrv::DtUniqueID, ColorWait > myWaitForSelectionChange
Definition: backendLineOfSightManager.h:186
UpdateCheckState()
Definition: backendLineOfSightManager.h:132
std::vector< LineOfSightPoint > LineOfSightPoints
Definition: backendLineOfSightManager.h:67
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
DtVector endPoint
Definition: backendLineOfSightManager.h:155
Definition: vrfExtendedIntervisibilityStateListeners.h:24
Color blockedColor
Definition: backendLineOfSightManager.h:160
DtVector startPoint
Definition: backendLineOfSightManager.h:154
Overide that adds the ability to request information from the back-end for intervisibility checks...
Definition: backendLineOfSightManager.h:37
std::map< makVrv::DtUniqueID, unsigned long > myKeyToRequestMap
Definition: backendLineOfSightManager.h:127
Color visibleColor
Definition: backendLineOfSightManager.h:164
The DtIntervisibilityStateListener is a class that will allow intervisibility objects to use start/en...
Definition: DtIntervisibilityStateListener.h:24
Contains makVrv::DtVirtualBaseClass class.
std::map< unsigned long, std::pair< makVrv::DtUniqueID, DtSimulationAddress > > myRequestToKeyMap
Definition: backendLineOfSightManager.h:128
Definition: backendLineOfSightManager.h:177
double alphaFactor
Definition: backendLineOfSightManager.h:162
File: simMsg.h.
Definition: simMessage.h:35
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
virtual ~UpdateCheckState()
Definition: backendLineOfSightManager.h:145
DT_DLL_gdb bool intersectTerrain(DtTerrainDatabase &terrainDatabase, const DtVector &localLocation, DtChordIntersectionRecord &record, DtGdbNode::DtIntersectRecordType irtFlag, DtVectorNetworkRecord *vectorRecord, DtVectorNetworkIntersectionRecord *vectorIntersectionRecord)
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
int refCount
Definition: backendLineOfSightManager.h:156
boost::signals2::signal< void(makVrv::DtUniqueID, DtVrfExtendedIntervisibilitySettingsData::IntervisibilitySettings)> signal_extendedIntervisibilityOptionsChanged
Signal sent when a listener changes it&#39;s settings.
Definition: backendLineOfSightManager.h:84
bool timingBackendRequest
Definition: backendLineOfSightManager.h:151
DtTimedSection backendRequestTimer
Definition: backendLineOfSightManager.h:167
DtVrfExtendedIntervisibilitySettingsData::Color Color
Definition: backendLineOfSightManager.h:94
double myAlphaFactor
Definition: backendLineOfSightManager.h:175
Base class to provide boost signal/slot management.
makVrv::DtSignalConnectionManager * connections
Definition: backendLineOfSightManager.h:158
makVrv::DtIntervisibilityStateListener * listener
Definition: backendLineOfSightManager.h:157
Maintains and signals state of the simulation engines that are currently connected to the GUI...
Definition: vrfSimBackendManager.h:79
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:76
UpdateCheckState(const UpdateCheckState &orig)
Definition: backendLineOfSightManager.h:137
LineOfSightPoint(const DtVector &s, const DtVector &e, const DtString &u="")
Definition: backendLineOfSightManager.h:58
double lengthOfTimeForBackendResponse
Definition: backendLineOfSightManager.h:168
Color currentBlockedColor
Definition: backendLineOfSightManager.h:161
Vector of points to use for line of sight check. Points are in local database coordinates.
Definition: backendLineOfSightManager.h:56
std::map< makVrv::DtUniqueID, UpdateCheckState > myUpdateCheckState
Definition: backendLineOfSightManager.h:171
boost::signals2::signal< void(makVrv::DtUniqueID, const DtIfIntersectionInformationResponse::IntersectionPairInformation &)> signal_lineOfSightResponse
Signal sent when backend request has been received.
Definition: backendLineOfSightManager.h:81
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
Definition: vrfExtendedIntervisibilitySettings.h:80
ColorWait(const Color &v, const Color &b)
Definition: backendLineOfSightManager.h:180
Definition: backendLineOfSightManager.h:130
DtString userData
Definition: backendLineOfSightManager.h:64

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)