VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtSensorFieldOfViewManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
17 #include <vrvCore/DtUniqueID.h>
18 
19 namespace makVrv
20 {
21  class DtObserver;
22  class DtSensorViewOverlay;
23  class DtCoordinateSystem;
24 
29  {
30  public:
31 
32  typedef std::map<DtUniqueID, DtSensorFieldOfViewData> SensorFieldOfViewDataMap;
33 
35  static DtSensorFieldOfViewManager& instance( DtDe& de );
36 
38  virtual ~DtSensorFieldOfViewManager();
39 
41  virtual void addSensorFieldOfView(DtElementID hostEntity,
42  DtElementID sensorFieldOfView, const DtSensorFieldOfViewData& initData);
43 
45  virtual void updateSensorFieldOfView(DtElementID hostEntity,
46  DtElementID sensorFieldOfView, const DtSensorFieldOfViewData& data);
47 
49  virtual void getSensorFieldOfViewData(DtElementID hostEntity,
50  DtElementID sensorFieldOfView, DtSensorFieldOfViewData& data) const;
51 
53  virtual void removeSensorFieldOfView(DtElementID hostEntity,
54  DtElementID sensorFieldOfView);
55 
58  virtual void addSensorObserver(const std::string& observerName,
59  DtElementID hostId, DtElementID sensorId, bool createControls);
60 
62  virtual bool hasSensorObserver(DtElementID hostId, DtElementID sensorId);
63 
67  virtual std::string sensorObserverName(DtElementID hostId, DtElementID sensorId) const;
68 
71  const SensorFieldOfViewDataMap* fieldsOfViewForEntity(DtElementID entity) const;
72 
74 
75  virtual std::string sensorId(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
76  virtual void setSensorId(DtElementID hostEntity, DtElementID sensorFieldOfView,
77  const std::string& id);
79 
81 
82  virtual DtVector relativeLocation(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
83  virtual void setRelativeLocation(DtElementID hostEntity, DtElementID sensorFieldOfView,
84  const DtVector& loc);
86 
88 
89  virtual DtTaitBryan relativeOrientation(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
90  virtual void setRelativeOrientation(DtElementID hostEntity, DtElementID sensorFieldOfView,
91  const DtTaitBryan& ori);
93 
95 
96  virtual double radius(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
97  virtual void setRadius(DtElementID hostEntity, DtElementID sensorFieldOfView,
98  double r);
100 
103 
104  virtual double minimumAzimuthAngle(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
105  virtual void setMinimumAzimuthAngle(DtElementID hostEntity, DtElementID sensorFieldOfView,
106  double angle);
108 
111 
112  virtual double maximumAzimuthAngle(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
113  virtual void setMaximumAzimuthAngle(DtElementID hostEntity, DtElementID sensorFieldOfView,
114  double angle);
116 
119 
120  virtual double minimumElevationAngle(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
121  virtual void setMinimumElevationAngle(DtElementID hostEntity, DtElementID sensorFieldOfView,
122  double angle);
124 
127 
128  virtual double maximumElevationAngle(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
129  virtual void setMaximumElevationAngle(DtElementID hostEntity, DtElementID sensorFieldOfView,
130  double angle);
132 
134 
135  virtual double maximumZoomLevel(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
136  virtual void setMaximumZoomLevel(DtElementID hostEntity, DtElementID sensorFieldOfView,
137  double zoom);
139 
141 
142  virtual double zoomLevel(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
143  virtual void setZoomLevel(DtElementID hostEntity, DtElementID sensorFieldOfView,
144  double zoom);
146 
149 
150  virtual double xHalfAngle(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
151  virtual void setXHalfAngle(DtElementID hostEntity, DtElementID sensorFieldOfView,
152  double angle);
154 
157 
158  virtual double yHalfAngle(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
159  virtual void setYHalfAngle(DtElementID hostEntity, DtElementID sensorFieldOfView,
160  double angle);
162 
164 
165  virtual DtElementID targetId(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
166  virtual void setTargetId(DtElementID hostEntity, DtElementID sensorFieldOfView,
167  DtElementID id);
169 
171 
172  virtual DtVector targetLocation(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
173  virtual void setTargetLocation(DtElementID hostEntity, DtElementID sensorFieldOfView,
174  const DtVector& loc);
176 
178 
179  virtual std::string trackingMode(DtElementID hostEntity, DtElementID sensorFieldOfView) const;
180  virtual void setTrackingMode(DtElementID hostEntity, DtElementID sensorFieldOfView,
181  const std::string& mode);
183 
185 
186  virtual void color(DtElementID hostEntity, DtElementID sensorFieldOfView,
187  float& r, float& g, float& b, float& a) const;
188  virtual void setColor(DtElementID hostEntity, DtElementID sensorFieldOfView,
189  float r, float g, float b, float a);
191 
193 
194  virtual DtSensorFieldOfViewData* sensorFieldOfViewData(DtElementID hostEntity,
195  DtElementID sensorFieldOfView);
196  virtual const DtSensorFieldOfViewData* sensorFieldOfViewData(DtElementID hostEntity,
197  DtElementID sensorFieldOfView) const;
199 
201  virtual void removeSensorView(DtUniqueID entId, DtUniqueID sensorId);
202 
203  protected:
204 
207 
209  virtual void processTrackTarget(DtObserver* observer, DtElementID hostEntity,
210  const DtVector& relativeLocation, DtElementID targetEntity);
211 
213  virtual void processTrackLocation(DtObserver* observer, DtElementID hostEntity,
214  const DtVector& relativeLocation, const DtVector& targetLocation);
215 
217  virtual void processSetOrientation(DtObserver* observer, DtElementID hostEntity,
218  const DtVector& relativeLocation, const DtTaitBryan& relativeOrientation);
219 
222  virtual bool findDisplayWindowAndChannel(const DtObserver* observer,
223  std::string& displayName, std::string& windowName, std::string& channelName) const;
224 
225 
226  virtual void slot_onObjectAdded(const DtVrlinkSensorFieldsOfViewView&);
227  virtual void slot_onObjectUpdated(DtStateView<DtVrlinkSensorFieldsOfView>* fieldsOfView);
228  virtual void slot_onObjectAboutToBeRemoved(const DtVrlinkSensorFieldsOfViewView&);
229  virtual void slot_onUpdate();
230 
231  virtual void update(DtUniqueID hostId, DtUniqueID sensorId, const std::string& observerName);
232 
234  virtual void slot_coordinateSystemChanged();
235 
236  protected:
237 
240 
241  typedef std::pair<DtElementID, DtElementID> HostAndSensorId;
242  typedef std::map<HostAndSensorId, std::string> SensorObserverMap;
243  typedef std::map<std::string, DtSensorViewOverlay*> SensorObserverOverlayMap;
244  typedef std::map<DtElementID, SensorFieldOfViewDataMap> HostSensorFieldOfViewDataMap;
245 
249 
251 
253 
256  DtCoordinateSystem* myCoordinateSystem = nullptr;
257  };
258 }
259 
260 
261 
262 
263 
264 
265 
266 
267 
268 
269 
270 
std::map< DtUniqueID, DtSensorFieldOfViewData > SensorFieldOfViewDataMap
Definition: DtSensorFieldOfViewManager.h:32
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtVrlinkSensorFieldsOfViewStateViewCollection * mySensorFieldsOfViewCollection
Definition: DtSensorFieldOfViewManager.h:239
DtDe & myDe
Definition: DtSensorFieldOfViewManager.h:238
SensorObserverOverlayMap mySensorOverlays
Definition: DtSensorFieldOfViewManager.h:248
SensorObserverMap mySensorObservers
Definition: DtSensorFieldOfViewManager.h:247
DtSignalConnectionManager myConnections
Definition: DtSensorFieldOfViewManager.h:252
Contains the data defining the current state of a sensor field of view.
Definition: DtSensorFieldOfViewData.h:23
A facade for a DtObserverObject.
Definition: DtObserver.h:37
Contains makVrv::DtVirtualBaseClass class.
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
std::map< HostAndSensorId, std::string > SensorObserverMap
Definition: DtSensorFieldOfViewManager.h:242
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
A DtStateView is a the interface to simulation state information. Users can create DtStateViews for s...
Definition: DtStateView.h:49
A DtStateViewCollection is a collection of DtStateViews of a specific state.
Definition: DtStateViewCollection.h:27
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myRegisteredForUpdates
Definition: DtSensorFieldOfViewManager.h:250
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
Base class to provide boost signal/slot management.
const char int mode
Definition: ioapi.h:38
Contains makVrv::DtUniqueID type.
std::pair< DtElementID, DtElementID > HostAndSensorId
Definition: DtSensorFieldOfViewManager.h:241
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:70
std::map< DtElementID, SensorFieldOfViewDataMap > HostSensorFieldOfViewDataMap
Definition: DtSensorFieldOfViewManager.h:244
The sensor field of view manager. Keeps track of sensor field of view states and any observers associ...
Definition: DtSensorFieldOfViewManager.h:28
std::map< std::string, DtSensorViewOverlay * > SensorObserverOverlayMap
Definition: DtSensorFieldOfViewManager.h:243
Contains DLL export macros.
HostSensorFieldOfViewDataMap mySensorFieldOfViewData
Definition: DtSensorFieldOfViewManager.h:246

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)