DART 6.7.3
Loading...
Searching...
No Matches
ImGuiHandler.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2019, The DART development contributors
3 * All rights reserved.
4 *
5 * The list of contributors can be found at:
6 * https://github.com/dartsim/dart/blob/master/LICENSE
7 *
8 * This file is provided under the following "BSD-style" License:
9 * Redistribution and use in source and binary forms, with or
10 * without modification, are permitted provided that the following
11 * conditions are met:
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer in the documentation and/or other materials provided
17 * with the distribution.
18 * * This code incorporates portions of Open Dynamics Engine
19 * (Copyright (c) 2001-2004, Russell L. Smith. All rights
20 * reserved.) and portions of FCL (Copyright (c) 2011, Willow
21 * Garage, Inc. All rights reserved.), which were released under
22 * the same BSD license as below
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
25 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
26 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
27 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
29 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
32 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
33 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
35 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 */
38
39#ifndef DART_GUI_OSG_IMGUIHANDLER_HPP_
40#define DART_GUI_OSG_IMGUIHANDLER_HPP_
41
42#include <array>
43#include <memory>
44#include <vector>
45
46#include <osg/GraphicsContext>
47#include <osgGA/GUIActionAdapter>
48#include <osgGA/GUIEventAdapter>
49#include <osgGA/GUIEventHandler>
50
51namespace dart {
52namespace gui {
53namespace osg {
54
55class ImGuiWidget;
56
57class ImGuiHandler : public osgGA::GUIEventHandler
58{
59public:
62
63 void init();
64
65 void newFrame(::osg::RenderInfo& renderInfo);
66
67 void render(::osg::RenderInfo& renderInfo);
68
69 void setCameraCallbacks(::osg::Camera* camera);
70
71 //----------------------------------------------------------------------------
73 //----------------------------------------------------------------------------
74
76 bool hasWidget(const std::shared_ptr<ImGuiWidget>& widget) const;
77
79 void addWidget(const std::shared_ptr<ImGuiWidget>& widget,
80 bool visible = true);
81
83 void removeWidget(const std::shared_ptr<ImGuiWidget>& widget);
84
86 void removeAllWidget();
87
89
90 // Documentation inherited.
91 bool handle(const osgGA::GUIEventAdapter& eventAdapter,
92 osgGA::GUIActionAdapter& actionAdapter,
93 ::osg::Object* object,
94 ::osg::NodeVisitor* nodeVisitor) override;
95
96protected:
97 double mTime;
98
100 std::array<bool, 3> mMousePressed;
101
103
105
106 std::vector<std::shared_ptr<ImGuiWidget>> mWidgets;
107};
108
109} // namespace osg
110} // namespace gui
111} // namespace dart
112
113#endif // DART_GUI_OSG_IMGUIHANDLER_HPP_
Definition ImGuiHandler.hpp:58
bool handle(const osgGA::GUIEventAdapter &eventAdapter, osgGA::GUIActionAdapter &actionAdapter, ::osg::Object *object, ::osg::NodeVisitor *nodeVisitor) override
Definition ImGuiHandler.cpp:276
void render(::osg::RenderInfo &renderInfo)
Definition ImGuiHandler.cpp:385
void init()
Definition ImGuiHandler.cpp:182
ImGuiHandler()
Constructor.
Definition ImGuiHandler.cpp:172
GLuint mFontTexture
Definition ImGuiHandler.hpp:104
void setCameraCallbacks(::osg::Camera *camera)
Definition ImGuiHandler.cpp:220
double mTime
Definition ImGuiHandler.hpp:97
void addWidget(const std::shared_ptr< ImGuiWidget > &widget, bool visible=true)
Adds given Widget to this Viewer.
Definition ImGuiHandler.cpp:239
void removeAllWidget()
Removes all the widgets in this Viewer.
Definition ImGuiHandler.cpp:270
bool hasWidget(const std::shared_ptr< ImGuiWidget > &widget) const
Returns true if this Viewer contains given widget.
Definition ImGuiHandler.cpp:233
std::array< bool, 3 > mMousePressed
Mouse buttons: left, right, middle.
Definition ImGuiHandler.hpp:100
float mMouseWheel
Definition ImGuiHandler.hpp:102
void removeWidget(const std::shared_ptr< ImGuiWidget > &widget)
Removes given Widget from this Viewer.
Definition ImGuiHandler.cpp:255
std::vector< std::shared_ptr< ImGuiWidget > > mWidgets
Definition ImGuiHandler.hpp:106
void newFrame(::osg::RenderInfo &renderInfo)
Definition ImGuiHandler.cpp:357
Definition BulletCollisionDetector.cpp:63