BsScriptGUI.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "BsScriptGUI.h"
  2. #include "BsScriptGUISkin.h"
  3. #include "BsScriptGUILayout.h"
  4. #include "BsGUIWidget.h"
  5. #include "BsSceneManager.h"
  6. namespace BansheeEngine
  7. {
  8. SPtr<GUIWidget> ScriptGUI::sGUIWidget;
  9. ScriptGUILayout* ScriptGUI::sPanel = nullptr;
  10. ScriptGUI::ScriptGUI(MonoObject* managedInstance)
  11. :ScriptObject(managedInstance)
  12. { }
  13. ScriptGUI::~ScriptGUI()
  14. { }
  15. void ScriptGUI::startUp()
  16. {
  17. CameraPtr mainCamera = gSceneManager().getMainCamera().camera;
  18. sGUIWidget = GUIWidget::create(mainCamera);
  19. MonoObject* guiPanel = ScriptGUIPanel::createFromExisting(sGUIWidget->getPanel());
  20. sPanel = ScriptGUILayout::toNative(guiPanel);
  21. }
  22. void ScriptGUI::update()
  23. {
  24. if (sGUIWidget == nullptr)
  25. return;
  26. CameraPtr mainCamera = gSceneManager().getMainCamera().camera;
  27. if (mainCamera != sGUIWidget->getCamera())
  28. sGUIWidget->setCamera(mainCamera);
  29. }
  30. void ScriptGUI::shutDown()
  31. {
  32. if (sPanel != nullptr)
  33. {
  34. sPanel->destroy();
  35. sPanel = nullptr;
  36. }
  37. if (sGUIWidget != nullptr)
  38. {
  39. sGUIWidget->_destroy();
  40. sGUIWidget = nullptr;
  41. }
  42. }
  43. void ScriptGUI::initRuntimeData()
  44. {
  45. metaData.scriptClass->addInternalCall("Internal_SetSkin", &ScriptGUI::internal_SetSkin);
  46. metaData.scriptClass->addInternalCall("Internal_GetPanel", &ScriptGUI::internal_GetPanel);
  47. }
  48. void ScriptGUI::internal_SetSkin(ScriptGUISkin* skin)
  49. {
  50. HGUISkin guiSkin;
  51. if (skin != nullptr)
  52. guiSkin = skin->getHandle();
  53. if(sGUIWidget != nullptr)
  54. sGUIWidget->setSkin(guiSkin);
  55. }
  56. MonoObject* ScriptGUI::internal_GetPanel()
  57. {
  58. if (sPanel != nullptr)
  59. return sPanel->getManagedInstance();
  60. return nullptr;
  61. }
  62. }