/*! * @file resource_shader.h * @brief Contains the ResourceShader class, that handles the Resource-specific loading part of the Shader. * */ #ifndef _RESOURCE_SHADER_H #define _RESOURCE_SHADER_H #include "util/loading/resource.h" #include "shader.h" class ResourceShader : public Shader, public Resources::Resource { public: ResourceShader(const std::string& vertexShaderName, const std::string& fragmentShaderName, const Resources::KeepLevel& keepLevel = Resources::KeepLevel()); static ResourceShader createFromString(const std::string& loadString, const Resources::KeepLevel& keepLevel = Resources::KeepLevel()); private: class ShaderResourcePointer : public Resources::StorePointer { public: ShaderResourcePointer(const std::string& loadString, const Resources::KeepLevel& keepLevel, const ShaderData::Pointer& data); inline const ShaderData::Pointer& ptr() const { return pointer; } virtual bool last() const { return pointer.count() == 1; } private: ShaderData::Pointer pointer; }; private: static Resources::tType type; }; #endif /* _RESOURCE_SHADER_H */