BsGUIDropDownBoxManager.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "BsGUIDropDownBoxManager.h"
  2. #include "CmSceneObject.h"
  3. using namespace CamelotFramework;
  4. namespace BansheeEngine
  5. {
  6. GUIDropDownBoxManager::~GUIDropDownBoxManager()
  7. {
  8. closeDropDownBox();
  9. }
  10. CM::GameObjectHandle<GUIDropDownBox> GUIDropDownBoxManager::openDropDownBox(CM::Viewport* target, CM::RenderWindow* window, const GUIDropDownAreaPlacement& placement,
  11. const CM::Vector<GUIDropDownData>::type& elements, const GUISkin& skin, GUIDropDownType type, std::function<void()> onClosedCallback)
  12. {
  13. closeDropDownBox();
  14. mDropDownSO = SceneObject::create("DropDownBox");
  15. mDropDownBox = mDropDownSO->addComponent<GUIDropDownBox>(target, window, placement, elements, skin, type);
  16. mOnClosedCallback = onClosedCallback;
  17. return mDropDownBox;
  18. }
  19. void GUIDropDownBoxManager::closeDropDownBox()
  20. {
  21. if(mDropDownSO != nullptr)
  22. {
  23. mDropDownSO->destroy();
  24. mDropDownSO = nullptr;
  25. if(mOnClosedCallback != nullptr)
  26. mOnClosedCallback();
  27. mOnClosedCallback = nullptr;
  28. }
  29. }
  30. }