BsBuiltinMaterialManager.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "BsBuiltinMaterialManager.h"
  2. using namespace CamelotFramework;
  3. namespace BansheeEngine
  4. {
  5. BuiltinMaterialManager::BuiltinMaterialManager()
  6. :mActiveFactory(nullptr)
  7. {
  8. }
  9. BuiltinMaterialManager::~BuiltinMaterialManager()
  10. {
  11. for(auto& iter : mAvailableFactories)
  12. {
  13. iter.second->shutDown();
  14. cm_delete(iter.second);
  15. }
  16. }
  17. HMaterial BuiltinMaterialManager::createSpriteTextMaterial() const
  18. {
  19. assert(mActiveFactory != nullptr);
  20. return mActiveFactory->createSpriteTextMaterial();
  21. }
  22. HMaterial BuiltinMaterialManager::createSpriteImageMaterial() const
  23. {
  24. assert(mActiveFactory != nullptr);
  25. return mActiveFactory->createSpriteImageMaterial();
  26. }
  27. HMaterial BuiltinMaterialManager::createDebugDraw2DClipSpaceMaterial() const
  28. {
  29. assert(mActiveFactory != nullptr);
  30. return mActiveFactory->createDebugDraw2DClipSpaceMaterial();
  31. }
  32. HMaterial BuiltinMaterialManager::createDebugDraw2DScreenSpaceMaterial() const
  33. {
  34. assert(mActiveFactory != nullptr);
  35. return mActiveFactory->createDebugDraw2DScreenSpaceMaterial();
  36. }
  37. HMaterial BuiltinMaterialManager::createDebugDraw3DMaterial() const
  38. {
  39. assert(mActiveFactory != nullptr);
  40. return mActiveFactory->createDebugDraw3DMaterial();
  41. }
  42. CM::HMaterial BuiltinMaterialManager::createDockDropOverlayMaterial() const
  43. {
  44. assert(mActiveFactory != nullptr);
  45. return mActiveFactory->createDockDropOverlayMaterial();
  46. }
  47. void BuiltinMaterialManager::addFactory(BuiltinMaterialFactory* factory)
  48. {
  49. assert(factory != nullptr);
  50. mAvailableFactories[factory->getSupportedRenderSystem()] = factory;
  51. }
  52. void BuiltinMaterialManager::setActive(const CM::String& renderSystemName)
  53. {
  54. auto iterFind = mAvailableFactories.find(renderSystemName);
  55. if(iterFind == mAvailableFactories.end())
  56. {
  57. CM_EXCEPT(InvalidParametersException, "Cannot find a factory for the specified render system: " + renderSystemName);
  58. }
  59. mActiveFactory = iterFind->second;
  60. mActiveFactory->startUp();
  61. }
  62. }