CWallpaper.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <irrlicht/irrlicht.h>
  3. #include "WallpaperEngine/Core/CWallpaper.h"
  4. #include "WallpaperEngine/Core/CScene.h"
  5. #include "WallpaperEngine/Core/CVideo.h"
  6. #include "WallpaperEngine/Irrlicht/CContext.h"
  7. namespace WallpaperEngine::Irrlicht
  8. {
  9. class CContext;
  10. };
  11. namespace WallpaperEngine::Render
  12. {
  13. class CWallpaper : public irr::scene::ISceneNode
  14. {
  15. public:
  16. template<class T> const T* as () const { assert (is<T> ()); return (const T*) this; }
  17. template<class T> T* as () { assert (is<T> ()); return (T*) this; }
  18. template<class T> bool is () { return this->m_type == T::Type; }
  19. CWallpaper (Core::CWallpaper* wallpaperData, std::string type, WallpaperEngine::Irrlicht::CContext* context);
  20. ~CWallpaper () override;
  21. void OnRegisterSceneNode () override;
  22. WallpaperEngine::Irrlicht::CContext* getContext () const;
  23. const irr::core::aabbox3d<irr::f32>& getBoundingBox () const override;
  24. protected:
  25. WallpaperEngine::Irrlicht::CContext* m_context;
  26. Core::CWallpaper* m_wallpaperData;
  27. Core::CWallpaper* getWallpaperData ();
  28. private:
  29. irr::core::aabbox3d<irr::f32> m_boundingBox = irr::core::aabbox3d<irr::f32> (0, 0, 0, 0, 0, 0);
  30. std::string m_type;
  31. };
  32. }