]> git.tdb.fi Git - libs/game.git/blob - source/gameview/renderer.h
Decorate things which constitute the public API of the library
[libs/game.git] / source / gameview / renderer.h
1 #ifndef MSP_GAMEVIEW_RENDERER_H_
2 #define MSP_GAMEVIEW_RENDERER_H_
3
4 #include <msp/game/camera.h>
5 #include <msp/game/eventobserver.h>
6 #include <msp/game/events.h>
7 #include <msp/game/owned.h>
8 #include <msp/game/system.h>
9 #include <msp/gl/camera.h>
10 #include <msp/gl/sequence.h>
11 #include <msp/gl/simplescene.h>
12 #include <msp/gl/view.h>
13 #include "mspgameview_api.h"
14
15 namespace Msp::GameView {
16
17 class MeshRenderer;
18
19 class MSPGAMEVIEW_API Renderer: public Game::System
20 {
21 private:
22         struct RenderedEntity
23         {
24                 Game::Handle<Game::Entity> entity;
25                 Game::Owned<MeshRenderer> mesh_renderer;
26         };
27
28         GL::View &view;
29         Game::EventObserver event_observer;
30         std::vector<RenderedEntity> entities;
31         GL::SimpleScene scene;
32         Game::Handle<Game::Camera> active_camera;
33         GL::Camera gl_camera;
34         std::string current_seq_name;
35         std::unique_ptr<GL::Sequence> sequence;
36
37 public:
38         Renderer(Game::Stage &, GL::View &);
39         ~Renderer();
40
41 private:
42         void entity_created(const Game::Events::EntityCreated &);
43         void entity_destroyed(const Game::Events::EntityDestroyed &);
44         void camera_changed(const Game::Events::CameraChanged &);
45
46 public:
47         void tick(Time::TimeDelta) override;
48 };
49
50 } // namespace Msp::GameView
51
52 #endif