VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgOverlayManager.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 #include <vrvOsg/vrvOsg.h>
13 #include <vrvCore/DtUniqueID.h>
15 
16 #include <osg/observer_ptr>
17 #include <osg/GraphicsContext>
18 
19 #include <unordered_map>
20 #include <set>
21 
22 namespace makVrv
23 {
24  class DtOsgRenderer;
25  class DtOsgOverlayResourceProvider;
26  class DtChannelManager;
27  class DtChannel;
28  class DtOverlayRenderer;
29  class DtWidgetPicker;
30  class DtGLFontManager;
31  class DtWindow;
32  class DtGlDeleteObjectManager;
33  class DtPickableOverlay;
34  struct DtObserverRenderData;
35  struct DtOverlayRenderData;
36  struct DtOverlayResourceRequirements;
37 
41  {
42  public:
45 
47  virtual ~DtOsgOverlayManager();
48 
50  DtOsgOverlayManager() = delete;
52  DtOsgOverlayManager(const DtOsgOverlayManager& rhs) = delete;
54  DtOsgOverlayManager& operator=(const DtOsgOverlayManager& rhs) = delete;
55  public:
57  inline DtDe& de()
58  {
59  return myDe;
60  }
61 
63  virtual void render(DtChannel* channel,
64  const DtOverlayRenderData& overlayRenderData,
65  const DtObserverRenderData& channelRenderData,
66  const double* currentProjectionMatrix) override;
67 
69  virtual void releaseResources() override;
70 
72  virtual void enableOverlayOnChannel(unsigned int layerId, bool enabled,
73  DtChannel& channel) override;
74 
78  virtual bool handleMouseEvent(const DtMouseEvent& ev, DtChannel& channel) override;
79 
81  virtual void destroyOverlayLayer(unsigned int layerId) override;
82 
84  virtual bool overlayLayerIsVisible(unsigned int layerId) const override;
85 
89  virtual void setOverlayLayerVisibility(unsigned int layerId, bool visible) override;
90 
94  virtual bool processWidgetEvent( DtElementID id, const DtMouseEvent &ev,
95  DtChannel& channel );
96 
97 
99  virtual DtOsgOverlayResourceProvider* resourceProvider();
100 
102  virtual DtOverlayRendererInterface& overlayRenderer(unsigned int layerId);
103 
106  virtual DtOverlayRendererInterface& overlayRendererEmptyScene( DtChannel* channel );
107  virtual DtOverlayRendererInterface& overlayRenderer(DtChannel* channel);
108  virtual DtOverlayRendererInterface& overlayRenderer3D(DtChannel* channel);
109  virtual DtOverlayRendererInterface& overlayRenderer2DNormalized( DtChannel* channel );
110  static DtOverlayRendererInterface* overlayRenderer2DNormalized( DtDe& de, std::string displayName,
111  std::string windowName, std::string channelName );
112 
115  virtual DtOverlayRendererInterface& overlayRenderer(DtChannel* channel, DtModelSetId modelSet);
116 
120  virtual void enableModelSetOnChannel(DtModelSetId modelSet, bool enabled,
121  DtChannel& channel);
122 
124  virtual DtWidgetPicker& widgetPicker(unsigned int layerId);
125 
128  virtual DtWidgetPicker& widgetPicker(DtChannel* channel);
129  virtual DtWidgetPicker& widgetPicker3D(DtChannel* channel);
130  virtual DtWidgetPicker& widgetPicker2DNormalized(DtChannel* channel);
131  static DtWidgetPicker* widgetPicker2DNormalized( DtDe& de, std::string displayName,
132  std::string windowName, std::string channelName );
133 
135  virtual DtWidgetPicker& widgetPicker(DtChannel* channel, DtModelSetId modelSet);
136 
138  virtual bool somethingToRender(DtChannel* channel,
139  DtOverlayResourceRequirements& resourceRequirements) const;
140 
141  protected:
142 
148  virtual bool doPickerScenePick(DtChannel& channel,
149  const int mouseX, const int mouseY, double& hitX, double& hitY, double& hitZ) const;
150 
151  virtual void handleIfActiveContextChanged(DtChannel& currentChannel);
152 
154  virtual void slot_channelToBeDestroyed(DtChannel*);
155 
158  virtual unsigned int allocateChannelSpecificLayerId();
159  virtual void deallocateChannelSpecificLayerId(unsigned int layerId);
160 
161  typedef std::unordered_map<DtChannel*, unsigned int>
163 
164  //Map that maps from channel to supported model set renderer, the sets should be in order.
165  typedef std::unordered_map<DtChannel*, std::map<DtModelSetId, unsigned int> >
167 
168  virtual void destroyChannelSpecificOverlayLayer(
169  ChannelSpecificOverlayMap &map, DtChannel* channel );
170 
172  virtual DtOverlayRendererInterface& overlayRenderer( ChannelSpecificOverlayMap &map,
173  DtChannel* channel );
174 
177  virtual DtWidgetPicker& widgetPicker( ChannelSpecificOverlayMap &map,
178  DtChannel* channel );
179 
182  virtual void destroyChannelModelSetOverlayLayers(DtChannel*);
183 
184  protected:
185 
186  typedef std::unordered_map<unsigned int,DtPickableOverlay*> OverlayMap;
187 
188  //Map, the sets should be in order.
189  typedef std::unordered_map<DtChannel*, std::set<unsigned int> >
191 
192  // Some customers have the data in a different directory
193  // keep the set data path around so the tactical graphics
194  // can load their shaders from the right path
195  static std::string myDataPath;
196 
206  bool myChannelSpecificLayerIdUsageList[
207  Channel_SpecificEnd - Channel_SpecificStart + 1 ];
209 
210  osg::observer_ptr<const osg::GraphicsContext> myLastGraphicsContext;
212  };
213 
216  {
218  virtual DtOverlayManager* create(DtDe& de);
219  };
220 }
std::unordered_map< DtChannel *, unsigned int > ChannelSpecificOverlayMap
Definition: DtOsgOverlayManager.h:162
The OSG overlay manager managers 2D graphical overlays.
Definition: DtOsgOverlayManager.h:40
A structure to hold rendering requiresments for overlays. This is used to update overlay resource pro...
Definition: DtCommonRenderData.h:84
Creator class for the DtOsgOverlayManager instance.
Definition: DtOsgOverlayManager.h:215
static std::string myDataPath
Definition: DtOsgOverlayManager.h:195
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::observer_ptr< const osg::GraphicsContext > myLastGraphicsContext
Definition: DtOsgOverlayManager.h:210
ChannelSpecificOverlayMap myChannelSpecific2DOverlayMap
Definition: DtOsgOverlayManager.h:202
ChannelSpecificOverlayMap myChannelSpecific2DNormalizedOverlayMap
Definition: DtOsgOverlayManager.h:205
ChannelModelSetOverlayMap myChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:203
DtGlDeleteObjectManager & myGlDeleteObjectManager
Definition: DtOsgOverlayManager.h:211
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:19
OverlayMap myOverlays
Definition: DtOsgOverlayManager.h:199
The abstract Channel Class.
Definition: DtChannel.h:35
Contains makVrv::DtOverlayManager class.
std::unordered_map< DtChannel *, std::set< unsigned int > > ChannelOverlayMap
Definition: DtOsgOverlayManager.h:190
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Creator class.
Definition: DtOverlayManager.h:136
Abstract base class for managing the overlays.
Definition: DtOverlayManager.h:31
ChannelOverlayMap myChannelOverlayMap
Definition: DtOsgOverlayManager.h:200
A structure to hold rendering information for overlays. This is used to pass to various overlay rende...
Definition: DtCommonRenderData.h:43
DtOsgOverlayResourceProvider * myProvider
Definition: DtOsgOverlayManager.h:208
Base class to provide boost signal/slot management.
ChannelSpecificOverlayMap myChannelSpecific2DEmptySceneMap
Definition: DtOsgOverlayManager.h:201
Vaos are OpenGL context specific. They need to be deleted in the context they are created in...
Definition: DtGlDeleteObjectManager.h:58
DtSignalConnectionManager myConnections
Definition: DtOsgOverlayManager.h:198
DtDe & myDe
Definition: DtOsgOverlayManager.h:197
Contains makVrv::DtUniqueID type.
Contains DLL export macros.
std::unordered_map< DtChannel *, std::map< DtModelSetId, unsigned int > > ChannelModelSetOverlayMap
Definition: DtOsgOverlayManager.h:166
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
The Osg specific implementation of the overlay resource provider.
Definition: DtOsgOverlayResourceProvider.h:29
DtModelSetId
Definition: DtModelSetEnums.h:19
Definition: DtCommonRenderData.h:33
DtDe & de()
get the DtDe
Definition: DtOsgOverlayManager.h:57
The DtOverlayRendererInterface implements the overlay concept. An overlay is a 2D scene that is drawn...
Definition: DtOverlayRendererInterface.h:80
ChannelSpecificOverlayMap myChannelSpecific3DOverlayMap
Definition: DtOsgOverlayManager.h:204
std::unordered_map< unsigned int, DtPickableOverlay * > OverlayMap
Definition: DtOsgOverlayManager.h:186
The picker class which allocates and does picking operations on widgets.
Definition: DtWidgetPicker.h:53

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)