| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "Renderer/BsRendererManager.h"
- #include "Renderer/BsRenderer.h"
- #include "Error/BsException.h"
- #include "Renderer/BsRendererFactory.h"
- namespace bs
- {
- RendererManager::~RendererManager()
- {
- if (mActiveRenderer != nullptr)
- mActiveRenderer->destroy();
- }
- void RendererManager::setActive(const String& name)
- {
- for(auto iter = mAvailableFactories.begin(); iter != mAvailableFactories.end(); ++iter)
- {
- if((*iter)->name() == name)
- {
- SPtr<ct::Renderer> newRenderer = (*iter)->create();
- if(newRenderer != nullptr)
- {
- if (mActiveRenderer != nullptr)
- mActiveRenderer->destroy();
- mActiveRenderer = newRenderer;
- }
- }
- }
- if(mActiveRenderer == nullptr)
- {
- BS_EXCEPT(InternalErrorException,
- "Cannot initialize renderer. Renderer with the name '" + name + "' cannot be found.")
- }
- }
- void RendererManager::initialize()
- {
- if (mActiveRenderer != nullptr)
- mActiveRenderer->initialize();
- }
- void RendererManager::_registerFactory(SPtr<RendererFactory> factory)
- {
- assert(factory != nullptr);
- mAvailableFactories.push_back(factory);
- }
- }
|