BsScriptEditorGUI.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "BsScriptEditorGUI.h"
  2. #include "BsMonoManager.h"
  3. #include "BsScriptMeta.h"
  4. #include "BsMonoClass.h"
  5. #include "BsScriptEditorWindow.h"
  6. #include "BsEditorWidget.h"
  7. #include "BsEditorWidgetContainer.h"
  8. #include "BsGUIWidget.h"
  9. #include "BsCamera.h"
  10. #include "CmSceneObject.h"
  11. #include "BsEditorGUI.h"
  12. using namespace CamelotFramework;
  13. using namespace BansheeEngine;
  14. namespace BansheeEditor
  15. {
  16. ScriptEditorGUI::ScriptEditorGUI(ScriptEditorWindow* parentWindow)
  17. :ScriptGUIBase(), mParentWindow(parentWindow)
  18. {
  19. }
  20. void ScriptEditorGUI::initMetaData()
  21. {
  22. metaData = ScriptMeta(BansheeEditorAssemblyName, "BansheeEditor", "EditorGUI", &ScriptEditorGUI::initRuntimeData);
  23. MonoManager::registerScriptType(&metaData);
  24. }
  25. void ScriptEditorGUI::initRuntimeData()
  26. {
  27. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptEditorGUI::internal_createInstance);
  28. metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptEditorGUI::internal_destroyInstance);
  29. }
  30. void ScriptEditorGUI::internal_createInstance(MonoObject* instance, MonoObject* parentEditorWindow)
  31. {
  32. ScriptEditorWindow* nativeParentWindow = ScriptEditorWindow::toNative(parentEditorWindow);
  33. ScriptEditorGUI* nativeInstance = new (cm_alloc<ScriptEditorGUI>()) ScriptEditorGUI(nativeParentWindow);
  34. nativeInstance->createInstance(instance);
  35. metaData.thisPtrField->setValue(instance, (ScriptGUIBase*)nativeInstance);
  36. }
  37. void ScriptEditorGUI::internal_destroyInstance(ScriptEditorGUI* nativeInstance)
  38. {
  39. cm_delete(nativeInstance);
  40. }
  41. GUIWidget& ScriptEditorGUI::getWidget() const
  42. {
  43. EditorWidgetContainer* widgetContainer = mParentWindow->getEditorWidget()->_getParent();
  44. if(widgetContainer == nullptr)
  45. CM_EXCEPT(InternalErrorException, "Attempting to retrieve GUI widget of an unparented EditorWidget.");
  46. return widgetContainer->getParentWidget();
  47. }
  48. }