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

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)