CMaterial.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "WallpaperEngine/Core/Objects/Images/Materials/CPass.h"
  3. #include "WallpaperEngine/Core/Objects/Effects/CBind.h"
  4. #include "WallpaperEngine/Core/Core.h"
  5. #include "WallpaperEngine/Assets/CContainer.h"
  6. namespace WallpaperEngine::Core::Objects::Images
  7. {
  8. using json = nlohmann::json;
  9. using namespace WallpaperEngine::Assets;
  10. class CMaterial
  11. {
  12. public:
  13. static CMaterial* fromFile (const std::string& filename, CContainer* container);
  14. static CMaterial* fromJSON (const std::string& name, json data);
  15. static CMaterial* fromFile (const std::string& filename, const std::string& target, CContainer* container);
  16. static CMaterial* fromJSON (const std::string& name, json data, const std::string& target);
  17. void insertPass (Materials::CPass* mass);
  18. void insertTextureBind (Effects::CBind* bind);
  19. const std::vector <Materials::CPass*>& getPasses () const;
  20. const std::map <int, Effects::CBind*>& getTextureBinds () const;
  21. const std::string& getTarget () const;
  22. const bool hasTarget () const;
  23. const std::string& getName () const;
  24. protected:
  25. CMaterial (const std::string& name);
  26. void setTarget (const std::string& target);
  27. private:
  28. std::vector <Materials::CPass*> m_passes;
  29. std::map <int, Effects::CBind*> m_textureBindings;
  30. std::string m_target;
  31. std::string m_name;
  32. };
  33. };