VR-Forces 4.8 Class Documentation
 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) 2020 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 <osg/Drawable>
18 #include <osg/BlendEquation>
19 #include <osg/BlendFunc>
20 #include <osg/ref_ptr>
21 
22 struct ImDrawData;
23 
24 namespace makVrv
25 {
26  class DtDe;
27  class DtOsgRenderer;
28  class DtMouseEvent;
29  class DtMouseEvent;
30  class DtImguiDrawable;
31 
35  {
36  public:
37  virtual void createImGui() = 0;
38  };
39 
43  {
44  public:
46  DtImGuiEventProcessor(DtImguiDrawable& imGuiDrawable);
47 
49  virtual ~DtImGuiEventProcessor();
50 
52  virtual bool processMouseEvent(const DtMouseEvent& ev, DtChannel& channel);
54  virtual bool processKeyboardEvent(const DtKeyEvent& ev, DtChannel& channel);
55 
56  virtual const std::string& className();
58  virtual void setKeyboardActive(bool enable) { myIsKeyboardActive = enable; }
59 
60  protected:
61  std::string myClassName;
65  };
66 
67  class DtGlContextWrapper;
68  class NetworkMonitorGui;
69  class DT_DLL_VRVOSG DtImguiDrawable : public osg::Drawable
70  {
71  public:
72 
74  DtImguiDrawable(DtDe & de);
75 
77  virtual ~DtImguiDrawable();
78 
80  virtual void drawImplementation(osg::RenderInfo& info) const;
82  virtual void releaseGLObjects(osg::State* state/* =0 */) const;
83 
85  virtual void shutdown();
86 
88  virtual void addUI(DtImguiTweakUI* ui);
90  virtual void removeUI(DtImguiTweakUI* ui);
91 
93  virtual bool readyToRender();
94 
96  virtual osg::observer_ptr<osg::Camera>& mainCamera();
97 
99  virtual void setMouseX(double x);
100  virtual double mouseX() const;
102  virtual void setMouseY(double y);
103  virtual double mouseY() const;
104 
106  virtual void setMousePressed(int button, bool pressed);
107  virtual bool mousePressed(int button) const;
108 
110  virtual void setMouseWheel(float wheel);
111  virtual float mouseWheel() const;
112 
114  virtual void AddInputCharacter(char character);
115 
120  virtual void setRenderVirtualCursor(bool enable);
121 
125  static DtImguiDrawable * getInstance(DtDe& de, DtOsgRenderer* renderer);
126 
128  static DtImguiDrawable * getInstance();
129 
130  protected:
132  virtual void initImGui(DtDe& de);
134  virtual bool createFontsTexture();
135 
137  virtual bool createDeviceObjects();
139  virtual void invalidateDeviceObjects();
140 
142  virtual void newFrame(osg::RenderInfo& renderInfo, DtDe& de);
143 
145  virtual void renderDrawLists(ImDrawData* draw_data, osg::State* state);
146 
147  private:
149  DtImguiDrawable(const DtImguiDrawable &other);
151  DtImguiDrawable &operator=(const DtImguiDrawable &other);
152 
153  protected:
155  std::vector<DtImguiTweakUI*> myUiArray;
157 
158  // UI Data
159  double myTime;
160  bool myMousePressed[3];
162  double myMouseX;
163  double myMouseY;
164 
165  // Rendering data
175  unsigned int myVboHandle;
176  unsigned int myVaoHandle;
177  unsigned int myElementsHandle;
179 
180  // wrapper to not indirectly include glx.h for linux everywhere else
181  DtGlContextWrapper* myContextIDWrapper;
182 
183  osg::observer_ptr<osg::Camera> myMainCamera;
184  unsigned int myLastFrameNum;
185 
190  std::vector<char> myCharacters;
191 
192  NetworkMonitorGui* myOsgEarthNetworkMonitor;
193 
194  protected:
195 
197  };
198 
199 };
int myInitialized
Definition: DtImguiDrawable.h:178
The DtOsgRenderer is the component responsible for rendering 3D images onto the screen via OpenSceneG...
Definition: DtOsgRenderer.h:125
int myFragHandle
Definition: DtImguiDrawable.h:169
int myAttribLocationUV
Definition: DtImguiDrawable.h:173
bool myLastHdrSetting
Definition: DtImguiDrawable.h:188
This class encapsulates a Key event.
Definition: DtKeyEvent.h:19
DtDe & myDe
Definition: DtImguiDrawable.h:154
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
int myAttribLocationPosition
Definition: DtImguiDrawable.h:172
int myVertHandle
Definition: DtImguiDrawable.h:168
unsigned int GLuint
Definition: DtGlTextureBufferObject.h:17
Contains makVrv::DtDe class.
double myMouseX
Definition: DtImguiDrawable.h:162
std::string myClassName
Definition: DtImguiDrawable.h:61
std::vector< char > myCharacters
Definition: DtImguiDrawable.h:190
DtGlContextWrapper * myContextIDWrapper
Definition: DtImguiDrawable.h:181
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:22
event processor that gives imgui a chance to catch events.
Definition: DtImguiDrawable.h:42
double myMouseY
Definition: DtImguiDrawable.h:163
unsigned int myVboHandle
Definition: DtImguiDrawable.h:175
The abstract Channel Class.
Definition: DtChannel.h:29
bool myRenderVirtualCursor
Definition: DtImguiDrawable.h:189
Definition: DtImguiDrawable.h:69
bool myIsKeyboardActive
Definition: DtImguiDrawable.h:62
Interface for an event processor for a channel.
DtImGuiEventProcessor * myEventProcessor
Definition: DtImguiDrawable.h:156
osg::observer_ptr< osg::Camera > myMainCamera
Definition: DtImguiDrawable.h:183
osg::ref_ptr< osg::BlendEquation > myBlendEquation
Definition: DtImguiDrawable.h:186
unsigned int myVaoHandle
Definition: DtImguiDrawable.h:176
int myAttribLocationColor
Definition: DtImguiDrawable.h:174
unsigned int myElementsHandle
Definition: DtImguiDrawable.h:177
osg::ref_ptr< osg::BlendFunc > myBlendFunc
Definition: DtImguiDrawable.h:187
bool myRightMouseMoveActive
Definition: DtImguiDrawable.h:63
DtImguiDrawable & myImGuiDrawable
Definition: DtImguiDrawable.h:64
NetworkMonitorGui * myOsgEarthNetworkMonitor
Definition: DtImguiDrawable.h:192
Definition: imgui.h:1992
Contains DLL export macros.
helper for guaranteeing consistent ordering of gui bits, only used by shadow system.
Definition: DtImguiDrawable.h:34
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
int myAttribLocationTex
Definition: DtImguiDrawable.h:170
static DtImguiDrawable * theImguiInstance
Definition: DtImguiDrawable.h:196
GLuint myFontTexture
Definition: DtImguiDrawable.h:166
std::vector< DtImguiTweakUI * > myUiArray
Definition: DtImguiDrawable.h:155
float myMouseWheel
Definition: DtImguiDrawable.h:161
The DtEventProcessorInterface defines the generic interface for classes which handle input events...
Definition: DtEventProcessorInterface.h:37
int myShaderHandle
Definition: DtImguiDrawable.h:167
virtual void setKeyboardActive(bool enable)
is this capturing the keyboard
Definition: DtImguiDrawable.h:58
int myAttribLocationProjMtx
Definition: DtImguiDrawable.h:171
double myTime
Definition: DtImguiDrawable.h:159
unsigned int myLastFrameNum
Definition: DtImguiDrawable.h:184

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)