BsScriptGUIPanelContainer.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. :ScriptObject(instance), mGUIPanelContainer(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. nativeInstance->mGUIPanelContainer->setPanel(*guiPanel);
  34. }
  35. }