2
0

BsScriptGUIPanelContainer.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. #include "BsDebug.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptGUIPanelContainer::ScriptGUIPanelContainer(MonoObject* instance, GUIPanelContainer* panelContainer)
  13. :TScriptGUIElement(instance, panelContainer)
  14. {
  15. }
  16. void ScriptGUIPanelContainer::initRuntimeData()
  17. {
  18. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIPanelContainer::internal_createInstance);
  19. metaData.scriptClass->addInternalCall("Internal_SetPanel", &ScriptGUIPanelContainer::internal_setPanel);
  20. }
  21. void ScriptGUIPanelContainer::internal_createInstance(MonoObject* instance, MonoObject* panel, MonoArray* guiOptions)
  22. {
  23. GUIOptions options;
  24. UINT32 arrayLen = (UINT32)mono_array_length(guiOptions);
  25. for (UINT32 i = 0; i < arrayLen; i++)
  26. options.addOption(mono_array_get(guiOptions, GUIOption, i));
  27. ScriptGUIPanel* guiPanel = ScriptGUIPanel::toNative(panel);
  28. LOGWRN("Creating panel: " + toString((UINT64)guiPanel));
  29. GUIPanelContainer* guiPanelContainer = GUIPanelContainer::create(*guiPanel, options);
  30. ScriptGUIPanelContainer* nativeInstance = new (bs_alloc<ScriptGUIPanelContainer>()) ScriptGUIPanelContainer(instance, guiPanelContainer);
  31. }
  32. void ScriptGUIPanelContainer::internal_setPanel(ScriptGUIPanelContainer* nativeInstance, MonoObject* panel)
  33. {
  34. ScriptGUIPanel* guiPanel = ScriptGUIPanel::toNative(panel);
  35. GUIPanelContainer* panelContainer = static_cast<GUIPanelContainer*>(nativeInstance->getGUIElement());
  36. panelContainer->setPanel(*guiPanel);
  37. }
  38. }