#pragma once #include "WallpaperEngine/Core/Objects/CImage.h" #include "WallpaperEngine/Render/CObject.h" #include "WallpaperEngine/Render/CScene.h" #include "WallpaperEngine/Render/Shaders/Compiler.h" using namespace WallpaperEngine; namespace WallpaperEngine::Render::Objects { // TODO: MOVE IShaderConstantSetCallBack TO IT'S OWN CLASS OR ORGANIZE THIS BETTER class CImage : public CObject, public irr::video::IShaderConstantSetCallBack { public: CImage (CScene* scene, Core::Objects::CImage* image); virtual void OnSetConstants (irr::video::IMaterialRendererServices* services, int32_t userData); void render () override; const irr::core::aabbox3d& getBoundingBox() const override; protected: static const std::string Type; private: void generateMaterial (); void generatePass (Core::Objects::Images::Materials::CPassess* pass); irr::video::S3DVertex m_vertex [4]; irr::u32 m_passes; std::vector m_materials; std::vector m_renderTextures; Core::Objects::CImage* m_image; irr::core::aabbox3d m_boundingBox; std::vector m_vertexShaders; std::vector m_pixelShaders; }; }