BsBuiltinMaterialManager.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include "BsPrerequisites.h"
  3. #include "BsGUIMaterialInfo.h"
  4. #include "BsDebugDrawMaterialInfo.h"
  5. #include "BsModule.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_EXPORT BuiltinMaterialFactory
  9. {
  10. public:
  11. virtual ~BuiltinMaterialFactory() {}
  12. virtual void startUp() {}
  13. virtual void shutDown() {}
  14. virtual const String& getSupportedRenderSystem() const = 0;
  15. virtual HMaterial createSpriteTextMaterial() const = 0;
  16. virtual HMaterial createSpriteImageMaterial() const = 0;
  17. virtual HMaterial createDebugDraw2DClipSpaceMaterial() const = 0;
  18. virtual HMaterial createDebugDraw2DScreenSpaceMaterial() const = 0;
  19. virtual HMaterial createDebugDraw3DMaterial() const = 0;
  20. virtual HMaterial createDockDropOverlayMaterial() const = 0;
  21. virtual HMaterial createDummyMaterial() const = 0;
  22. };
  23. /**
  24. * @brief Provides access to various materials that are required for core engine systems.
  25. * Each render system implementation needs to provide its own implementation of this
  26. * module.
  27. */
  28. class BS_EXPORT BuiltinMaterialManager : public Module<BuiltinMaterialManager>
  29. {
  30. public:
  31. BuiltinMaterialManager();
  32. ~BuiltinMaterialManager();
  33. GUIMaterialInfo createSpriteTextMaterial() const;
  34. GUIMaterialInfo createSpriteImageMaterial() const;
  35. DebugDraw2DClipSpaceMatInfo createDebugDraw2DClipSpaceMaterial() const;
  36. DebugDraw2DScreenSpaceMatInfo createDebugDraw2DScreenSpaceMaterial() const;
  37. DebugDraw3DMatInfo createDebugDraw3DMaterial() const;
  38. HMaterial createDockDropOverlayMaterial() const; // TODO - This belongs in editor
  39. HMaterial createDummyMaterial() const;
  40. void addFactory(BuiltinMaterialFactory* factory);
  41. void setActive(const String& renderSystemName);
  42. private:
  43. UnorderedMap<String, BuiltinMaterialFactory*> mAvailableFactories;
  44. BuiltinMaterialFactory* mActiveFactory;
  45. };
  46. }