BsScriptGUIElement.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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(GUIElement* element)
  14. :mIsDestroyed(false), mElement(element)
  15. { }
  16. ScriptGUIElement::ScriptGUIElement(MonoObject* instance)
  17. :ScriptObject(instance)
  18. {
  19. }
  20. void ScriptGUIElementBase::destroy()
  21. {
  22. if(!mIsDestroyed)
  23. {
  24. GUIElement::destroy(mElement);
  25. mElement = nullptr;
  26. mIsDestroyed = true;
  27. }
  28. }
  29. void ScriptGUIElement::initRuntimeData()
  30. {
  31. metaData.scriptClass->addInternalCall("Internal_Destroy", &ScriptGUIElement::internal_destroy);
  32. metaData.scriptClass->addInternalCall("Internal_SetVisible", &ScriptGUIElement::internal_setVisible);
  33. metaData.scriptClass->addInternalCall("Internal_SetParent", &ScriptGUIElement::internal_setParent);
  34. }
  35. void ScriptGUIElement::internal_destroy(ScriptGUIElementBase* nativeInstance)
  36. {
  37. nativeInstance->destroy();
  38. }
  39. void ScriptGUIElement::internal_setVisible(ScriptGUIElementBase* nativeInstance, bool visible)
  40. {
  41. if(visible)
  42. nativeInstance->getGUIElement()->enableRecursively();
  43. else
  44. nativeInstance->getGUIElement()->disableRecursively();
  45. }
  46. void ScriptGUIElement::internal_setParent(ScriptGUIElementBase* nativeInstance, MonoObject* parentLayout)
  47. {
  48. ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout);
  49. GUILayout* nativeLayout = scriptLayout->getInternalValue();
  50. nativeLayout->addElement(nativeInstance->getGUIElement());
  51. }
  52. }