#pragma once #include #include "WallpaperEngine/Core/CWallpaper.h" #include "WallpaperEngine/Core/CScene.h" #include "WallpaperEngine/Core/CVideo.h" #include "WallpaperEngine/Irrlicht/CContext.h" namespace WallpaperEngine::Irrlicht { class CContext; }; namespace WallpaperEngine::Render { class CWallpaper : public irr::scene::ISceneNode { public: template const T* as () const { assert (is ()); return (const T*) this; } template T* as () { assert (is ()); return (T*) this; } template bool is () { return this->m_type == T::Type; } CWallpaper (Core::CWallpaper* wallpaperData, std::string type, WallpaperEngine::Irrlicht::CContext* context); ~CWallpaper () override; void OnRegisterSceneNode () override; WallpaperEngine::Irrlicht::CContext* getContext () const; const irr::core::aabbox3d& getBoundingBox () const override; protected: WallpaperEngine::Irrlicht::CContext* m_context; Core::CWallpaper* m_wallpaperData; Core::CWallpaper* getWallpaperData (); private: irr::core::aabbox3d m_boundingBox = irr::core::aabbox3d (0, 0, 0, 0, 0, 0); std::string m_type; }; }