3 #ifndef SCENEVIEW_VIEWPORT_HPP__
4 #define SCENEVIEW_VIEWPORT_HPP__
8 #include <QOpenGLWidget>
10 #include <sceneview/resource_manager.hpp>
11 #include <sceneview/scene.hpp>
31 explicit Viewport(
const ResourceManager::Ptr& resources,
32 const Scene::Ptr& scene,
33 QWidget* parent =
nullptr);
41 void AddRenderer(
Renderer* renderer);
57 Scene::Ptr GetScene() {
return scene_; }
59 ResourceManager::Ptr GetResources() {
return resources_; }
61 std::vector<Renderer*> GetRenderers() {
return renderers_; }
63 std::vector<InputHandler*> GetInputHandlers() {
return input_handlers_; }
65 void SetBackgroundColor(
const QColor& color);
67 void SetDrawGroups(
const std::vector<DrawGroup*>& groups);
69 InputHandler* GetActiveInputHandler() {
return input_handler_; }
72 void ScheduleRedraw();
75 void RendererAdded(
Renderer* renderer);
85 void GLShuttingDown();
88 void initializeGL()
override;
90 void resizeGL(
int width,
int height)
override;
92 void paintGL()
override;
94 void mousePressEvent(QMouseEvent *event)
override;
96 void mouseMoveEvent(QMouseEvent *event)
override;
98 void mouseReleaseEvent(QMouseEvent* event)
override;
100 void mouseDoubleClickEvent(QMouseEvent* event)
override;
102 void wheelEvent(QWheelEvent* event)
override;
104 void keyPressEvent(QKeyEvent* event)
override;
106 void keyReleaseEvent(QKeyEvent* event)
override;
112 ResourceManager::Ptr resources_;
120 std::unique_ptr<DrawContext> draw_;
122 std::vector<Renderer*> renderers_;
124 std::vector<InputHandler*> input_handlers_;
126 bool redraw_scheduled_;
128 QOpenGLContext* gl_context_;
133 #endif // SCENEVIEW_VIEWPORT_HPP__
void SetCamera(CameraNode *camera_node)
Attach the specified camera to this viewport.
Camera.
Definition: camera_node.hpp:25
Subclass this to add content in the scene and draw things.
Definition: renderer.hpp:73
Widget that draws a scene and manages Renderer and InputHandler objects.
Definition: viewport.hpp:27