#pragma once #include namespace WallpaperEngine::Core::Objects::Effects::Constants { class CShaderConstant { public: CShaderConstant (std::string type); 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; } private: std::string m_type; }; }