CmOverlayManager.cpp 897 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "CmOverlayManager.h"
  2. #include "CmCamera.h"
  3. #include "CmOverlay.h"
  4. namespace CamelotEngine
  5. {
  6. void OverlayManager::render(const CameraPtr& camera, DeferredRenderContextPtr& renderContext) const
  7. {
  8. auto overlays = mOverlaysPerCamera.find(camera.get());
  9. if(overlays == mOverlaysPerCamera.end())
  10. return;
  11. for(auto& overlay : overlays->second)
  12. {
  13. overlay->render(camera, renderContext);
  14. }
  15. }
  16. void OverlayManager::attachOverlay(const CameraPtr& camera, const Overlay* overlay)
  17. {
  18. mOverlaysPerCamera[camera.get()].insert(overlay);
  19. }
  20. void OverlayManager::detachOverlay(const CameraPtr& camera, const Overlay* overlay)
  21. {
  22. mOverlaysPerCamera[camera.get()].erase(overlay);
  23. }
  24. void OverlayManager::detachOverlayFromAll(const Overlay* overlay)
  25. {
  26. for(auto& overlays : mOverlaysPerCamera)
  27. {
  28. overlays.second.erase(overlay);
  29. }
  30. }
  31. }