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) 2025 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:
63 
65  virtual void convertMouseCoordinatesForVr(DtChannel& channel, int& mouseX, int& mouseY);
66 
67  protected:
69  std::string myClassName;
73  };
74 
75  class DtGlContextWrapper;
76  class NetworkMonitorGui;
77  class DT_DLL_VRVOSG DtImguiDrawable : public osg::Drawable
78  {
79  public:
80 
82  DtImguiDrawable(DtDe& de);
83 
85  virtual ~DtImguiDrawable();
86 
88  virtual void drawImplementation(osg::RenderInfo& info) const;
90  virtual void releaseGLObjects(osg::State* state/* =0 */) const;
91 
93  virtual void shutdown();
94 
96  virtual void addUI(DtImguiTweakUI* ui);
98  virtual void removeUI(DtImguiTweakUI* ui);
99 
101  virtual bool readyToRender();
102 
104  virtual osg::observer_ptr<osg::Camera>& mainCamera();
105 
107  virtual void setOverrideCamera(osg::Camera* camera);
108 
110  virtual void setMouseX(double x);
111  virtual double mouseX() const;
113  virtual void setMouseY(double y);
114  virtual double mouseY() const;
115 
117  virtual void setMousePressed(int button, bool pressed);
118  virtual bool mousePressed(int button) const;
119 
121  virtual void setMouseWheel(float wheel);
122  virtual float mouseWheel() const;
123 
125  virtual void AddInputCharacter(char character);
126 
128  virtual float dpiScale();
130  virtual void setDpiScale(float scale);
131 
136  virtual void setRenderVirtualCursor(bool enable);
137 
141  static DtImguiDrawable* getInstance(DtDe& de, DtOsgRenderer* renderer);
142 
144  static DtImguiDrawable* getInstance();
145 
147  static void resetDpiScaling(DtDe& de, DtOsgRenderer* renderer);
148 
149  protected:
151  virtual void initImGui();
153  virtual bool createFontsTexture();
154 
156  virtual bool createDeviceObjects();
158  virtual void invalidateDeviceObjects();
159 
161  virtual void newFrame(osg::RenderInfo& renderInfo);
162 
164  virtual void renderDrawLists(ImDrawData* draw_data, osg::State* state);
165 
166  private:
168  DtImguiDrawable(const DtImguiDrawable& other);
170  DtImguiDrawable& operator=(const DtImguiDrawable& other);
171 
172  public:
173  boost::signalslib::signal<void(osg::RenderInfo&)> signal_imguiNewFrame;
174 
175  protected:
177  std::vector<DtImguiTweakUI*> myUiArray;
179 
180  // UI Data
181  double myTime;
182  bool myMousePressed[3];
184  double myMouseX;
185  double myMouseY;
186 
187  // Rendering data
197  unsigned int myVboHandle;
198  unsigned int myVaoHandle;
199  unsigned int myElementsHandle;
201  mutable bool myMutableFirstFrame;
202 
203  // wrapper to not indirectly include glx.h for linux everywhere else
204  DtGlContextWrapper* myContextIDWrapper;
205 
206  osg::observer_ptr<osg::Camera> myMainCamera;
207  osg::observer_ptr<osg::Camera> myOverrideCamera;
208  unsigned int myLastFrameNum;
209 
215  std::vector<char> myCharacters;
216  float myDpiScale;
217 
218  NetworkMonitorGui* myOsgEarthNetworkMonitor;
219  protected:
220 
222  };
223 
224 };
int myInitialized
Definition: DtImguiDrawable.h:200
The DtOsgRenderer is the component responsible for rendering 3D images onto the screen via OpenSceneG...
Definition: DtOsgRenderer.h:91
int myFragHandle
Definition: DtImguiDrawable.h:191
int myAttribLocationUV
Definition: DtImguiDrawable.h:195
bool myLastHdrSetting
Definition: DtImguiDrawable.h:213
osg::ref_ptr< osg::BlendFunc > myVrBlendFunc
Definition: DtImguiDrawable.h:212
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
osg::observer_ptr< osg::Camera > myOverrideCamera
Definition: DtImguiDrawable.h:207
DtDe & myDe
Definition: DtImguiDrawable.h:176
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
DtDe & myDe
Definition: DtImguiDrawable.h:68
int myAttribLocationPosition
Definition: DtImguiDrawable.h:194
int myVertHandle
Definition: DtImguiDrawable.h:190
unsigned int GLuint
Definition: DtGlTextureBufferObject.h:18
Contains makVrv::DtDe class.
double myMouseX
Definition: DtImguiDrawable.h:184
std::string myClassName
Definition: DtImguiDrawable.h:69
std::vector< char > myCharacters
Definition: DtImguiDrawable.h:215
bool myMutableFirstFrame
Definition: DtImguiDrawable.h:201
DtGlContextWrapper * myContextIDWrapper
Definition: DtImguiDrawable.h:204
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:185
unsigned int myVboHandle
Definition: DtImguiDrawable.h:197
The abstract Channel Class.
Definition: DtChannel.h:35
bool myRenderVirtualCursor
Definition: DtImguiDrawable.h:214
Definition: DtImguiDrawable.h:77
bool myIsKeyboardActive
Definition: DtImguiDrawable.h:70
Interface for an event processor for a channel.
DtImGuiEventProcessor * myEventProcessor
Definition: DtImguiDrawable.h:178
osg::observer_ptr< osg::Camera > myMainCamera
Definition: DtImguiDrawable.h:206
osg::ref_ptr< osg::BlendEquation > myBlendEquation
Definition: DtImguiDrawable.h:210
unsigned int myVaoHandle
Definition: DtImguiDrawable.h:198
int myAttribLocationColor
Definition: DtImguiDrawable.h:196
unsigned int myElementsHandle
Definition: DtImguiDrawable.h:199
osg::ref_ptr< osg::BlendFunc > myBlendFunc
Definition: DtImguiDrawable.h:211
bool myRightMouseMoveActive
Definition: DtImguiDrawable.h:71
DtImguiDrawable & myImGuiDrawable
Definition: DtImguiDrawable.h:72
NetworkMonitorGui * myOsgEarthNetworkMonitor
Definition: DtImguiDrawable.h:218
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:76
int myAttribLocationTex
Definition: DtImguiDrawable.h:192
static DtImguiDrawable * theImguiInstance
Definition: DtImguiDrawable.h:221
GLuint myFontTexture
Definition: DtImguiDrawable.h:188
std::vector< DtImguiTweakUI * > myUiArray
Definition: DtImguiDrawable.h:177
boost::signalslib::signal< void(osg::RenderInfo &)> signal_imguiNewFrame
Definition: DtImguiDrawable.h:173
float myMouseWheel
Definition: DtImguiDrawable.h:183
The DtEventProcessorInterface defines the generic interface for classes which handle input events...
Definition: DtEventProcessorInterface.h:34
int myShaderHandle
Definition: DtImguiDrawable.h:189
virtual void setKeyboardActive(bool enable)
is this capturing the keyboard
Definition: DtImguiDrawable.h:60
int myAttribLocationProjMtx
Definition: DtImguiDrawable.h:193
double myTime
Definition: DtImguiDrawable.h:181
float myDpiScale
Definition: DtImguiDrawable.h:216
unsigned int myLastFrameNum
Definition: DtImguiDrawable.h:208

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)