BsGUIDropDownBoxManager.cpp 997 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "BsGUIDropDownBoxManager.h"
  2. #include "BsSceneObject.h"
  3. namespace BansheeEngine
  4. {
  5. GUIDropDownBoxManager::~GUIDropDownBoxManager()
  6. {
  7. closeDropDownBox();
  8. }
  9. GameObjectHandle<GUIDropDownMenu> GUIDropDownBoxManager::openDropDownBox(Viewport* target, const DropDownAreaPlacement& placement,
  10. const GUIDropDownData& dropDownData, const HGUISkin& skin, GUIDropDownType type, std::function<void()> onClosedCallback)
  11. {
  12. closeDropDownBox();
  13. mDropDownSO = SceneObject::create("DropDownBox", SOF_Internal | SOF_Persistent | SOF_DontSave);
  14. mDropDownBox = mDropDownSO->addComponent<GUIDropDownMenu>(target, placement, dropDownData, skin, type);
  15. mOnClosedCallback = onClosedCallback;
  16. return mDropDownBox;
  17. }
  18. void GUIDropDownBoxManager::closeDropDownBox()
  19. {
  20. if(mDropDownSO != nullptr)
  21. {
  22. mDropDownSO->destroy();
  23. mDropDownSO = nullptr;
  24. if(mOnClosedCallback != nullptr)
  25. mOnClosedCallback();
  26. mOnClosedCallback = nullptr;
  27. }
  28. }
  29. }