VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtImguiDrawable.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 <vrvOsg/vrvOsg.h>
13 
14 #include <vrvCore/DtDe.h>
16 
17 #include <vrvUtil/signalslib.h>
18 
19 #include <osg/Drawable>
20 #include <osg/BlendEquation>
21 #include <osg/BlendFunc>
22 #include <osg/ref_ptr>
23 
24 struct ImDrawData;
25 
26 namespace makVrv
27 {
28  class DtDe;
29  class DtOsgRenderer;
30  class DtMouseEvent;
31  class DtMouseEvent;
32  class DtImguiDrawable;
33 
37  {
38  public:
39  virtual void createImGui() = 0;
40  };
41 
45  {
46  public:
48  DtImGuiEventProcessor(DtDe& de, DtImguiDrawable& imGuiDrawable);
49 
51  virtual ~DtImGuiEventProcessor();
52 
54  virtual bool processMouseEvent(const DtMouseEvent& ev, DtChannel& channel);
56  virtual bool processKeyboardEvent(const DtKeyEvent& ev, DtChannel& channel);
57 
58  virtual const std::string& className();
60  virtual void setKeyboardActive(bool enable) { myIsKeyboardActive = enable; }
61 
62  protected:
64  std::string myClassName;
68  };
69 
70  class DtGlContextWrapper;
71  class NetworkMonitorGui;
72  class DT_DLL_VRVOSG DtImguiDrawable : public osg::Drawable
73  {
74  public:
75 
77  DtImguiDrawable(DtDe& de);
78 
80  virtual ~DtImguiDrawable();
81 
83  virtual void drawImplementation(osg::RenderInfo& info) const;
85  virtual void releaseGLObjects(osg::State* state/* =0 */) const;
86 
88  virtual void shutdown();
89 
91  virtual void addUI(DtImguiTweakUI* ui);
93  virtual void removeUI(DtImguiTweakUI* ui);
94 
96  virtual bool readyToRender();
97 
99  virtual osg::observer_ptr<osg::Camera>& mainCamera();
100 
102  virtual void setOverrideCamera(osg::Camera* camera);
103 
105  virtual void setMouseX(double x);
106  virtual double mouseX() const;
108  virtual void setMouseY(double y);
109  virtual double mouseY() const;
110 
112  virtual void setMousePressed(int button, bool pressed);
113  virtual bool mousePressed(int button) const;
114 
116  virtual void setMouseWheel(float wheel);
117  virtual float mouseWheel() const;
118 
120  virtual void AddInputCharacter(char character);
121 
123  virtual float dpiScale();
125  virtual void setDpiScale(float scale);
126 
131  virtual void setRenderVirtualCursor(bool enable);
132 
136  static DtImguiDrawable* getInstance(DtDe& de, DtOsgRenderer* renderer);
137 
139  static DtImguiDrawable* getInstance();
140 
142  static void resetDpiScaling(DtDe& de, DtOsgRenderer* renderer);
143 
144  protected:
146  virtual void initImGui();
148  virtual bool createFontsTexture();
149 
151  virtual bool createDeviceObjects();
153  virtual void invalidateDeviceObjects();
154 
156  virtual void newFrame(osg::RenderInfo& renderInfo);
157 
159  virtual void renderDrawLists(ImDrawData* draw_data, osg::State* state);
160 
161  private:
163  DtImguiDrawable(const DtImguiDrawable& other);
165  DtImguiDrawable& operator=(const DtImguiDrawable& other);
166 
167  public:
168  boost::signalslib::signal<void(osg::RenderInfo&)> signal_imguiNewFrame;
169 
170  protected:
172  std::vector<DtImguiTweakUI*> myUiArray;
174 
175  // UI Data
176  double myTime;
177  bool myMousePressed[3];
179  double myMouseX;
180  double myMouseY;
181 
182  // Rendering data
192  unsigned int myVboHandle;
193  unsigned int myVaoHandle;
194  unsigned int myElementsHandle;
196  mutable bool myMutableFirstFrame;
197 
198  // wrapper to not indirectly include glx.h for linux everywhere else
199  DtGlContextWrapper* myContextIDWrapper;
200 
201  osg::observer_ptr<osg::Camera> myMainCamera;
202  osg::observer_ptr<osg::Camera> myOverrideCamera;
203  unsigned int myLastFrameNum;
204 
210  std::vector<char> myCharacters;
211  float myDpiScale;
212 
213  NetworkMonitorGui* myOsgEarthNetworkMonitor;
214  protected:
215 
217  };
218 
219 };
int myInitialized
Definition: DtImguiDrawable.h:195
The DtOsgRenderer is the component responsible for rendering 3D images onto the screen via OpenSceneG...
Definition: DtOsgRenderer.h:90
int myFragHandle
Definition: DtImguiDrawable.h:186
int myAttribLocationUV
Definition: DtImguiDrawable.h:190
bool myLastHdrSetting
Definition: DtImguiDrawable.h:208
osg::ref_ptr< osg::BlendFunc > myVrBlendFunc
Definition: DtImguiDrawable.h:207
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
osg::observer_ptr< osg::Camera > myOverrideCamera
Definition: DtImguiDrawable.h:202
DtDe & myDe
Definition: DtImguiDrawable.h:171
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
DtDe & myDe
Definition: DtImguiDrawable.h:63
int myAttribLocationPosition
Definition: DtImguiDrawable.h:189
int myVertHandle
Definition: DtImguiDrawable.h:185
unsigned int GLuint
Definition: DtGlTextureBufferObject.h:18
Contains makVrv::DtDe class.
double myMouseX
Definition: DtImguiDrawable.h:179
std::string myClassName
Definition: DtImguiDrawable.h:64
std::vector< char > myCharacters
Definition: DtImguiDrawable.h:210
bool myMutableFirstFrame
Definition: DtImguiDrawable.h:196
DtGlContextWrapper * myContextIDWrapper
Definition: DtImguiDrawable.h:199
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:19
event processor that gives imgui a chance to catch events.
Definition: DtImguiDrawable.h:44
double myMouseY
Definition: DtImguiDrawable.h:180
unsigned int myVboHandle
Definition: DtImguiDrawable.h:192
The abstract Channel Class.
Definition: DtChannel.h:35
bool myRenderVirtualCursor
Definition: DtImguiDrawable.h:209
Definition: DtImguiDrawable.h:72
bool myIsKeyboardActive
Definition: DtImguiDrawable.h:65
Interface for an event processor for a channel.
DtImGuiEventProcessor * myEventProcessor
Definition: DtImguiDrawable.h:173
osg::observer_ptr< osg::Camera > myMainCamera
Definition: DtImguiDrawable.h:201
osg::ref_ptr< osg::BlendEquation > myBlendEquation
Definition: DtImguiDrawable.h:205
unsigned int myVaoHandle
Definition: DtImguiDrawable.h:193
int myAttribLocationColor
Definition: DtImguiDrawable.h:191
unsigned int myElementsHandle
Definition: DtImguiDrawable.h:194
osg::ref_ptr< osg::BlendFunc > myBlendFunc
Definition: DtImguiDrawable.h:206
bool myRightMouseMoveActive
Definition: DtImguiDrawable.h:66
DtImguiDrawable & myImGuiDrawable
Definition: DtImguiDrawable.h:67
NetworkMonitorGui * myOsgEarthNetworkMonitor
Definition: DtImguiDrawable.h:213
Definition: imgui.h:2523
Contains DLL export macros.
helper for guaranteeing consistent ordering of gui bits, only used by shadow system.
Definition: DtImguiDrawable.h:36
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
int myAttribLocationTex
Definition: DtImguiDrawable.h:187
static DtImguiDrawable * theImguiInstance
Definition: DtImguiDrawable.h:216
GLuint myFontTexture
Definition: DtImguiDrawable.h:183
std::vector< DtImguiTweakUI * > myUiArray
Definition: DtImguiDrawable.h:172
boost::signalslib::signal< void(osg::RenderInfo &)> signal_imguiNewFrame
Definition: DtImguiDrawable.h:168
float myMouseWheel
Definition: DtImguiDrawable.h:178
The DtEventProcessorInterface defines the generic interface for classes which handle input events...
Definition: DtEventProcessorInterface.h:34
int myShaderHandle
Definition: DtImguiDrawable.h:184
virtual void setKeyboardActive(bool enable)
is this capturing the keyboard
Definition: DtImguiDrawable.h:60
int myAttribLocationProjMtx
Definition: DtImguiDrawable.h:188
double myTime
Definition: DtImguiDrawable.h:176
float myDpiScale
Definition: DtImguiDrawable.h:211
unsigned int myLastFrameNum
Definition: DtImguiDrawable.h:203

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)