BsOverlayManager.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "BsOverlayManager.h"
  2. #include "BsCamera.h"
  3. #include "BsOverlay.h"
  4. namespace BansheeEngine
  5. {
  6. bool OverlayManager::OverlayComparer::operator() (const Overlay* const& a, const Overlay* const& b)
  7. {
  8. return a->getDepth() > b->getDepth();
  9. }
  10. void OverlayManager::render(ViewportPtr& target, DrawList& drawList) const
  11. {
  12. auto overlays = mOverlaysPerTarget.find(target.get());
  13. if(overlays == mOverlaysPerTarget.end())
  14. return;
  15. // Render all overlays. They should already be sorted by depth, front most rendering last
  16. for(auto& overlay : overlays->second)
  17. {
  18. overlay->render(drawList);
  19. }
  20. }
  21. void OverlayManager::attachOverlay(const Viewport* target, const Overlay* overlay)
  22. {
  23. mOverlaysPerTarget[target].insert(overlay);
  24. }
  25. void OverlayManager::detachOverlay(const Viewport* target, const Overlay* overlay)
  26. {
  27. mOverlaysPerTarget[target].erase(overlay);
  28. }
  29. void OverlayManager::detachOverlayFromAll(const Overlay* overlay)
  30. {
  31. for(auto& overlays : mOverlaysPerTarget)
  32. {
  33. overlays.second.erase(overlay);
  34. }
  35. }
  36. }