BsParamBlocks.cpp 1014 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Renderer/BsParamBlocks.h"
  4. #include "RenderAPI/BsGpuParam.h"
  5. namespace bs { namespace ct
  6. {
  7. ParamBlock::~ParamBlock()
  8. {
  9. ParamBlockManager::unregisterBlock(this);
  10. }
  11. Vector<ParamBlock*> ParamBlockManager::sToInitialize;
  12. ParamBlockManager::ParamBlockManager()
  13. {
  14. for (auto& entry : sToInitialize)
  15. entry->initialize();
  16. sToInitialize.clear();
  17. }
  18. void ParamBlockManager::registerBlock(ParamBlock* paramBlock)
  19. {
  20. if (isStarted())
  21. paramBlock->initialize();
  22. else
  23. sToInitialize.push_back(paramBlock);
  24. }
  25. void ParamBlockManager::unregisterBlock(ParamBlock* paramBlock)
  26. {
  27. auto iterFind = std::find(sToInitialize.begin(), sToInitialize.end(), paramBlock);
  28. if (iterFind != sToInitialize.end())
  29. sToInitialize.erase(iterFind);
  30. }
  31. }}