CScene.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include "CCamera.h"
  3. #include "WallpaperEngine/Core/CScene.h"
  4. #include "WallpaperEngine/Render/CWallpaper.h"
  5. #include "WallpaperEngine/Render/CObject.h"
  6. namespace WallpaperEngine::Render
  7. {
  8. class CCamera;
  9. class CObject;
  10. class CScene : public CWallpaper
  11. {
  12. public:
  13. CScene (Core::CScene* scene, CRenderContext& context, CAudioContext& audioContext);
  14. CCamera* getCamera () const;
  15. Core::CScene* getScene () const;
  16. uint32_t getWidth () const override;
  17. uint32_t getHeight () const override;
  18. glm::vec2* getMousePosition ();
  19. glm::vec2* getMousePositionLast ();
  20. glm::vec2* getParallaxDisplacement ();
  21. protected:
  22. void renderFrame (glm::ivec4 viewport) override;
  23. void updateMouse (glm::ivec4 viewport);
  24. friend class CWallpaper;
  25. static const std::string Type;
  26. private:
  27. Render::CObject* createObject (Core::CObject* object);
  28. CCamera* m_camera;
  29. CObject* m_bloomObject;
  30. std::map<int, CObject*> m_objects;
  31. std::vector<CObject*> m_objectsByRenderOrder;
  32. glm::vec2 m_mousePosition;
  33. glm::vec2 m_mousePositionLast;
  34. glm::vec2 m_parallaxDisplacement;
  35. CFBO* _rt_4FrameBuffer;
  36. CFBO* _rt_8FrameBuffer;
  37. CFBO* _rt_Bloom;
  38. };
  39. }