OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scenewidget.hpp
Go to the documentation of this file.
1 #ifndef OPENCS_VIEW_SCENEWIDGET_H
2 #define OPENCS_VIEW_SCENEWIDGET_H
3 
4 #include <map>
5 #include <memory>
6 
7 #include <QWidget>
8 #include <QTimer>
9 
10 #include <osgViewer/View>
11 #include <osgViewer/CompositeViewer>
12 
13 #include "lightingday.hpp"
14 #include "lightingnight.hpp"
15 #include "lightingbright.hpp"
16 
17 
18 namespace Resource
19 {
20  class ResourceSystem;
21 }
22 
23 namespace osg
24 {
25  class Group;
26  class Camera;
27 }
28 
29 namespace CSVWidget
30 {
31  class SceneToolMode;
32  class SceneToolbar;
33 }
34 
35 namespace CSMPrefs
36 {
37  class Setting;
38 }
39 
40 namespace CSVRender
41 {
42  class CameraController;
43  class FreeCameraController;
44  class OrbitCameraController;
45  class Lighting;
46 
47  class RenderWidget : public QWidget
48  {
49  Q_OBJECT
50 
51  public:
52  RenderWidget(QWidget* parent = 0, Qt::WindowFlags f = 0);
53  virtual ~RenderWidget();
54 
56  void flagAsModified();
57 
58  void setVisibilityMask(int mask);
59 
60  osg::Camera *getCamera();
61 
62  protected:
63 
64  osg::ref_ptr<osgViewer::View> mView;
65  osg::ref_ptr<osg::Group> mRootNode;
66 
67  void updateCameraParameters(double overrideAspect = -1.0);
68 
69  QTimer mTimer;
70 
71  protected slots:
72 
73  void toggleRenderStats();
74  };
75 
77  class SceneWidget : public RenderWidget
78  {
79  Q_OBJECT
80  public:
81  SceneWidget(std::shared_ptr<Resource::ResourceSystem> resourceSystem, QWidget* parent = 0,
82  Qt::WindowFlags f = 0, bool retrieveInput = true);
83  virtual ~SceneWidget();
84 
88 
89  void setDefaultAmbient (const osg::Vec4f& colour);
91 
92  protected:
93  void setLighting (Lighting *lighting);
95 
96  void setAmbient(const osg::Vec4f& ambient);
97 
98  virtual void mouseMoveEvent (QMouseEvent *event);
99  virtual void wheelEvent (QWheelEvent *event);
100 
101  std::shared_ptr<Resource::ResourceSystem> mResourceSystem;
102 
104 
105  osg::Vec4f mDefaultAmbient;
110 
112 
115 
119 
120  public slots:
121  void update(double dt);
122 
123  protected slots:
124 
125  virtual void settingChanged (const CSMPrefs::Setting *setting);
126 
127  void selectNavigationMode (const std::string& mode);
128 
129  private slots:
130 
131  void selectLightingMode (const std::string& mode);
132 
133  signals:
134 
135  void focusToolbarRequest();
136  };
137 
138 
139  // There are rendering glitches when using multiple Viewer instances, work around using CompositeViewer with multiple views
140  class CompositeViewer : public QObject, public osgViewer::CompositeViewer
141  {
142  Q_OBJECT
143  public:
144  CompositeViewer();
145 
146  static CompositeViewer& get();
147 
148  QTimer mTimer;
149 
150  private:
151  osg::Timer mFrameTimer;
153 
154  public slots:
155  void update();
156 
157  signals:
158  void simulationUpdated(double dt);
159  };
160 
161 }
162 
163 #endif
void selectNavigationMode(const std::string &mode)
Definition: scenewidget.cpp:424
Extension of RenderWidget to support lighting mode selection & toolbar.
Definition: scenewidget.hpp:77
CameraController * mCurrentCamControl
Definition: scenewidget.hpp:118
std::shared_ptr< Resource::ResourceSystem > mResourceSystem
Definition: scenewidget.hpp:101
Definition: lightingnight.hpp:8
virtual void wheelEvent(QWheelEvent *event)
Definition: scenewidget.cpp:318
bool mHasDefaultAmbient
Definition: scenewidget.hpp:106
Mode selector tool.
Definition: scenetoolmode.hpp:18
static const struct @8 signals[]
double mSimulationTime
Definition: scenewidget.hpp:152
Definition: lighting.hpp:15
QTimer mTimer
Definition: scenewidget.hpp:69
osg::Timer mFrameTimer
Definition: scenewidget.hpp:151
void update()
Definition: scenewidget.cpp:165
void updateCameraParameters(double overrideAspect=-1.0)
Definition: scenewidget.cpp:400
bool mCamPositionSet
Tells update that camera isn't set.
Definition: scenewidget.hpp:114
LightingDay mLightingDay
Definition: scenewidget.hpp:107
RenderWidget(QWidget *parent=0, Qt::WindowFlags f=0)
Definition: scenewidget.cpp:33
int mPrevMouseX
Definition: scenewidget.hpp:111
void update(double dt)
Definition: scenewidget.cpp:323
Definition: cameracontroller.hpp:27
CompositeViewer()
Definition: scenewidget.cpp:129
FreeCameraController * mFreeCamControl
Definition: scenewidget.hpp:116
osg::Vec4f mDefaultAmbient
Definition: scenewidget.hpp:105
void toggleRenderStats()
Definition: scenewidget.cpp:117
void selectLightingMode(const std::string &mode)
Definition: scenewidget.cpp:264
OrbitCameraController * mOrbitCamControl
Definition: scenewidget.hpp:117
void setLighting(Lighting *lighting)
Definition: scenewidget.cpp:239
void simulationUpdated(double dt)
osg::ref_ptr< osgViewer::View > mView
Definition: scenewidget.hpp:64
Definition: lightingbright.hpp:14
CSVWidget::SceneToolMode * makeLightingSelector(CSVWidget::SceneToolbar *parent)
Definition: scenewidget.cpp:274
virtual void settingChanged(const CSMPrefs::Setting *setting)
Definition: scenewidget.cpp:336
Definition: cameracontroller.hpp:80
virtual void mouseMoveEvent(QMouseEvent *event)
Definition: scenewidget.cpp:310
int mPrevMouseY
Definition: scenewidget.hpp:111
Definition: setting.hpp:22
LightingNight mLightingNight
Definition: scenewidget.hpp:108
osg::ref_ptr< osg::Group > mRootNode
Definition: scenewidget.hpp:65
Definition: cameracontroller.hpp:137
Definition: scenewidget.hpp:47
QTimer mTimer
Definition: scenewidget.hpp:148
void setVisibilityMask(int mask)
Definition: scenewidget.cpp:107
void setAmbient(const osg::Vec4f &ambient)
Definition: scenewidget.cpp:253
void flagAsModified()
Initiates a request to redraw the view.
Definition: scenewidget.cpp:102
Definition: lightingday.hpp:8
void setDefaultAmbient(const osg::Vec4f &colour)
Definition: scenewidget.cpp:302
Definition: scenetoolbar.hpp:12
virtual ~RenderWidget()
Definition: scenewidget.cpp:97
virtual ~SceneWidget()
Definition: scenewidget.cpp:233
LightingBright mLightingBright
Definition: scenewidget.hpp:109
osg::Camera * getCamera()
Definition: scenewidget.cpp:112
SceneWidget(std::shared_ptr< Resource::ResourceSystem > resourceSystem, QWidget *parent=0, Qt::WindowFlags f=0, bool retrieveInput=true)
Definition: scenewidget.cpp:184
Definition: scenewidget.hpp:140
Lighting * mLighting
Definition: scenewidget.hpp:103