BsGUIDropDownBoxManager.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "GUI/BsGUIDropDownBoxManager.h"
  4. #include "Scene/BsSceneObject.h"
  5. namespace bs
  6. {
  7. GUIDropDownBoxManager::~GUIDropDownBoxManager()
  8. {
  9. closeDropDownBox();
  10. }
  11. GameObjectHandle<GUIDropDownMenu> GUIDropDownBoxManager::openDropDownBox(const DROP_DOWN_BOX_DESC& desc,
  12. GUIDropDownType type, std::function<void()> onClosedCallback)
  13. {
  14. closeDropDownBox();
  15. mDropDownSO = SceneObject::create("DropDownBox", SOF_Internal | SOF_Persistent | SOF_DontSave);
  16. mDropDownBox = mDropDownSO->addComponent<GUIDropDownMenu>(desc, type);
  17. mOnClosedCallback = onClosedCallback;
  18. return mDropDownBox;
  19. }
  20. void GUIDropDownBoxManager::closeDropDownBox()
  21. {
  22. if(mDropDownSO != nullptr)
  23. {
  24. mDropDownSO->destroy();
  25. mDropDownSO = nullptr;
  26. if(mOnClosedCallback != nullptr)
  27. mOnClosedCallback();
  28. mOnClosedCallback = nullptr;
  29. }
  30. }
  31. }