CmOverlayManager.h 809 B

123456789101112131415161718192021222324252627
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmModule.h"
  4. namespace CamelotEngine
  5. {
  6. /**
  7. * @brief Takes care which overlay gets rendered on which camera.
  8. *
  9. * @note Overlays could have been stored directly on a Camera but this class
  10. * was created to decouple the connection.
  11. *
  12. * @see Overlay
  13. */
  14. class CM_EXPORT OverlayManager : public Module<OverlayManager>
  15. {
  16. public:
  17. void render(const Camera* camera, DeferredRenderContextPtr& renderContext) const;
  18. void attachOverlay(const Camera* camera, const Overlay* overlay);
  19. void detachOverlay(const Camera* camera, const Overlay* overlay);
  20. void detachOverlayFromAll(const Overlay* overlay);
  21. private:
  22. unordered_map<const Camera*, unordered_set<const Overlay*>::type>::type mOverlaysPerCamera;
  23. };
  24. }