UiComponent.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Scene/Components/SceneComponent.h>
  7. #include <AnKi/Ui/UiCanvas.h>
  8. namespace anki {
  9. /// @addtogroup scene
  10. /// @{
  11. using UiQueueElementDrawCallback = void (*)(UiCanvas& canvas, void* userData);
  12. /// UI scene component.
  13. class UiComponent : public SceneComponent
  14. {
  15. ANKI_SCENE_COMPONENT(UiComponent)
  16. public:
  17. UiComponent(SceneNode* node)
  18. : SceneComponent(node, kClassType)
  19. {
  20. }
  21. ~UiComponent()
  22. {
  23. }
  24. void init(UiQueueElementDrawCallback callback, void* userData)
  25. {
  26. ANKI_ASSERT(callback != nullptr);
  27. ANKI_ASSERT(userData != nullptr);
  28. m_drawCallback = callback;
  29. m_userData = userData;
  30. }
  31. void drawUi(UiCanvas& canvas)
  32. {
  33. if(m_drawCallback && m_enabled)
  34. {
  35. m_drawCallback(canvas, m_userData);
  36. }
  37. }
  38. Bool isEnabled() const
  39. {
  40. return m_enabled;
  41. }
  42. void setEnabled(Bool enabled)
  43. {
  44. m_enabled = enabled;
  45. }
  46. private:
  47. UiQueueElementDrawCallback m_drawCallback = nullptr;
  48. void* m_userData = nullptr;
  49. Bool m_enabled = true;
  50. void update([[maybe_unused]] SceneComponentUpdateInfo& info, Bool& updated) override
  51. {
  52. updated = false;
  53. }
  54. };
  55. /// @}
  56. } // end namespace anki