BsScriptGUIPanelContainer.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "BsScriptGUIPanelContainer.h"
  2. #include "BsGUIPanelContainer.h"
  3. #include "BsScriptMeta.h"
  4. #include "BsMonoField.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoManager.h"
  7. #include "BsMonoMethod.h"
  8. #include "BsGUIOptions.h"
  9. namespace BansheeEngine
  10. {
  11. ScriptGUIPanelContainer::ScriptGUIPanelContainer(MonoObject* instance, GUIPanelContainer* panelContainer)
  12. :TScriptGUIElement(instance, panelContainer)
  13. {
  14. }
  15. void ScriptGUIPanelContainer::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIPanelContainer::internal_createInstance);
  18. metaData.scriptClass->addInternalCall("Internal_SetPanel", &ScriptGUIPanelContainer::internal_setPanel);
  19. }
  20. void ScriptGUIPanelContainer::internal_createInstance(MonoObject* instance, MonoObject* panel, MonoArray* guiOptions)
  21. {
  22. GUIOptions options;
  23. UINT32 arrayLen = (UINT32)mono_array_length(guiOptions);
  24. for (UINT32 i = 0; i < arrayLen; i++)
  25. options.addOption(mono_array_get(guiOptions, GUIOption, i));
  26. ScriptGUIPanel* guiPanel = ScriptGUIPanel::toNative(panel);
  27. GUIPanelContainer* guiPanelContainer = GUIPanelContainer::create(*guiPanel, options);
  28. ScriptGUIPanelContainer* nativeInstance = new (bs_alloc<ScriptGUIPanelContainer>()) ScriptGUIPanelContainer(instance, guiPanelContainer);
  29. }
  30. void ScriptGUIPanelContainer::internal_setPanel(ScriptGUIPanelContainer* nativeInstance, MonoObject* panel)
  31. {
  32. ScriptGUIPanel* guiPanel = ScriptGUIPanel::toNative(panel);
  33. GUIPanelContainer* panelContainer = static_cast<GUIPanelContainer*>(nativeInstance->getGUIElement());
  34. panelContainer->setPanel(*guiPanel);
  35. }
  36. }