BsGUIToggleGroup.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "BsGUIToggleGroup.h"
  2. #include "BsGUIToggle.h"
  3. namespace BansheeEngine
  4. {
  5. GUIToggleGroup::~GUIToggleGroup()
  6. {
  7. for(auto& button : mButtons)
  8. {
  9. button->_setToggleGroup(nullptr);
  10. }
  11. }
  12. void GUIToggleGroup::initialize(const std::shared_ptr<GUIToggleGroup>& sharedPtr)
  13. {
  14. mThis = sharedPtr;
  15. }
  16. void GUIToggleGroup::_add(GUIToggle* toggle)
  17. {
  18. auto iterFind = std::find(begin(mButtons), end(mButtons), toggle);
  19. if(iterFind != end(mButtons))
  20. return;
  21. mButtons.push_back(toggle);
  22. toggle->_setToggleGroup(mThis.lock());
  23. }
  24. void GUIToggleGroup::_remove(GUIToggle* toggle)
  25. {
  26. auto sharedPtr = mThis.lock(); // Make sure we keep a reference because calling _setToggleGroup(nullptr)
  27. // may otherwise clear the last reference and cause us to destruct
  28. auto iterFind = std::find(begin(mButtons), end(mButtons), toggle);
  29. if(iterFind == end(mButtons))
  30. return;
  31. (*iterFind)->_setToggleGroup(nullptr);
  32. mButtons.erase(iterFind);
  33. }
  34. }