BsScriptGUIElement.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "BsScriptGUIElement.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsMonoMethod.h"
  7. #include "BsMonoUtil.h"
  8. #include "BsGUIElement.h"
  9. #include "BsScriptGUILayout.h"
  10. #include "BsGUILayout.h"
  11. namespace BansheeEngine
  12. {
  13. ScriptGUIElementBase::ScriptGUIElementBase(MonoObject* instance)
  14. :ScriptObjectBase(instance), mIsDestroyed(false), mElement(nullptr)
  15. { }
  16. ScriptGUIElement::ScriptGUIElement(MonoObject* instance)
  17. :ScriptObject(instance)
  18. {
  19. }
  20. void ScriptGUIElementBase::initialize(GUIElement* element)
  21. {
  22. mElement = element;
  23. }
  24. void ScriptGUIElementBase::destroy()
  25. {
  26. if(!mIsDestroyed)
  27. {
  28. GUIElement::destroy(mElement);
  29. mElement = nullptr;
  30. mIsDestroyed = true;
  31. }
  32. }
  33. void ScriptGUIElement::initRuntimeData()
  34. {
  35. metaData.scriptClass->addInternalCall("Internal_Destroy", &ScriptGUIElement::internal_destroy);
  36. metaData.scriptClass->addInternalCall("Internal_SetVisible", &ScriptGUIElement::internal_setVisible);
  37. metaData.scriptClass->addInternalCall("Internal_SetParent", &ScriptGUIElement::internal_setParent);
  38. }
  39. void ScriptGUIElement::internal_destroy(ScriptGUIElementBase* nativeInstance)
  40. {
  41. nativeInstance->destroy();
  42. }
  43. void ScriptGUIElement::internal_setVisible(ScriptGUIElementBase* nativeInstance, bool visible)
  44. {
  45. if(visible)
  46. nativeInstance->getGUIElement()->enableRecursively();
  47. else
  48. nativeInstance->getGUIElement()->disableRecursively();
  49. }
  50. void ScriptGUIElement::internal_setParent(ScriptGUIElementBase* nativeInstance, MonoObject* parentLayout)
  51. {
  52. ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout);
  53. GUILayout* nativeLayout = scriptLayout->getInternalValue();
  54. nativeLayout->addElement(nativeInstance->getGUIElement());
  55. }
  56. }