opensurgsim
OsgManager.h
1 // This file is a part of the OpenSurgSim project.
2 // Copyright 2013, SimQuest Solutions Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #ifndef SURGSIM_GRAPHICS_OSGMANAGER_H
17 #define SURGSIM_GRAPHICS_OSGMANAGER_H
18 
19 #include "SurgSim/Graphics/Manager.h"
20 
21 #include <memory>
22 
23 #include <osgViewer/CompositeViewer>
24 
25 namespace SurgSim
26 {
27 
28 namespace Graphics
29 {
30 
31 class Representation;
32 class Group;
33 class View;
34 class OsgCamera;
35 class OsgGroup;
36 class OsgScreenSpacePass;
37 
42 class OsgManager : public Manager
43 {
44 public:
50  OsgManager();
52  virtual ~OsgManager();
53 
56  void setMultiThreading(bool val);
57 
59  bool isMultiThreading() const;
60 
61  friend class OsgManagerTest;
62 
64  osg::ref_ptr<osgViewer::CompositeViewer> getOsgCompositeViewer() const;
65 
67  void dumpDebugInfo() const override;
68 
69 protected:
70  bool doUpdate(double dt) override;
71 
72  bool doInitialize() override;
73 
74  bool doStartUp() override;
75 
80  bool addRepresentation(std::shared_ptr<Representation> representation) override;
81 
86  bool addView(std::shared_ptr<View> view) override;
87 
92  bool removeView(std::shared_ptr<View> view) override;
93 
94  std::shared_ptr<Group> getOrCreateGroup(const std::string& name) override;
95 
96 private:
97 
100  void doBeforeStop();
101 
103  osg::ref_ptr<osgViewer::CompositeViewer> m_viewer;
104 
106  std::shared_ptr<OsgScreenSpacePass> m_hudElement;
107 };
108 
109 }; // namespace Graphics
110 
111 }; // namespace SurgSim
112 
113 #endif // SURGSIM_GRAPHICS_OSGMANAGER_H
bool doUpdate(double dt) override
Performs an update for a single timestep.
Definition: OsgManager.cpp:225
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
void setMultiThreading(bool val)
Change the threading model of the graphics manager viewer.
Definition: OsgManager.cpp:116
bool isMultiThreading() const
Definition: OsgManager.cpp:128
bool doStartUp() override
Starts up the manager after all threads have initialized.
Definition: OsgManager.cpp:220
bool addView(std::shared_ptr< View > view) override
Adds a view to the manager.
Definition: OsgManager.cpp:177
void dumpDebugInfo() const override
OsgManager will write out the scenegraph in the working directory.
Definition: OsgManager.cpp:273
virtual ~OsgManager()
Destructor.
Definition: OsgManager.cpp:112
Basic graphics manager class which manages graphics components to provide a visualization of the scen...
Definition: Manager.h:37
bool removeView(std::shared_ptr< View > view) override
Removes a view from the manager.
Definition: OsgManager.cpp:199
osg::ref_ptr< osgViewer::CompositeViewer > getOsgCompositeViewer() const
Returns the OSG CompositeViewer used to manage and render the views.
Definition: OsgManager.cpp:268
OSG-based implementation of graphics manager class.
Definition: OsgManager.h:42
std::shared_ptr< Group > getOrCreateGroup(const std::string &name) override
Fetch a group with a given name, if the group does not exist, create it.
Definition: OsgManager.cpp:133
Definition: OsgManagerTests.cpp:49
bool doInitialize() override
Initializes the manager.
Definition: OsgManager.cpp:211
OsgManager()
Constructor.
Definition: OsgManager.cpp:106
bool addRepresentation(std::shared_ptr< Representation > representation) override
Adds an representation to the manager.
Definition: OsgManager.cpp:154