DART 6.10.1
Loading...
Searching...
No Matches
ImGuiHandler.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2021, 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
64 ~ImGuiHandler() override;
65
66 void newFrame(::osg::RenderInfo& renderInfo);
67
68 void render(::osg::RenderInfo& renderInfo);
69
70 void setCameraCallbacks(::osg::Camera* camera);
71
72 //----------------------------------------------------------------------------
74 //----------------------------------------------------------------------------
75
77 bool hasWidget(const std::shared_ptr<ImGuiWidget>& widget) const;
78
80 void addWidget(
81 const std::shared_ptr<ImGuiWidget>& widget, bool visible = true);
82
84 void removeWidget(const std::shared_ptr<ImGuiWidget>& widget);
85
87 void removeAllWidget();
88
90
91 // Documentation inherited.
92 bool handle(
93 const osgGA::GUIEventAdapter& eventAdapter,
94 osgGA::GUIActionAdapter& actionAdapter,
95 ::osg::Object* object,
96 ::osg::NodeVisitor* nodeVisitor) override;
97
98protected:
99 double mTime;
100
102 std::array<bool, 3> mMousePressed;
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:274
void render(::osg::RenderInfo &renderInfo)
Definition ImGuiHandler.cpp:457
ImGuiHandler()
Constructor.
Definition ImGuiHandler.cpp:179
void setCameraCallbacks(::osg::Camera *camera)
Definition ImGuiHandler.cpp:219
double mTime
Definition ImGuiHandler.hpp:99
void addWidget(const std::shared_ptr< ImGuiWidget > &widget, bool visible=true)
Adds given Widget to this Viewer.
Definition ImGuiHandler.cpp:238
~ImGuiHandler() override
Destructor.
Definition ImGuiHandler.cpp:213
void removeAllWidget()
Removes all the widgets in this Viewer.
Definition ImGuiHandler.cpp:268
bool hasWidget(const std::shared_ptr< ImGuiWidget > &widget) const
Returns true if this Viewer contains given widget.
Definition ImGuiHandler.cpp:232
std::array< bool, 3 > mMousePressed
Mouse buttons: left, right, middle.
Definition ImGuiHandler.hpp:102
float mMouseWheel
Definition ImGuiHandler.hpp:104
void removeWidget(const std::shared_ptr< ImGuiWidget > &widget)
Removes given Widget from this Viewer.
Definition ImGuiHandler.cpp:254
std::vector< std::shared_ptr< ImGuiWidget > > mWidgets
Definition ImGuiHandler.hpp:106
void newFrame(::osg::RenderInfo &renderInfo)
Definition ImGuiHandler.cpp:429
Definition BulletCollisionDetector.cpp:65