BsScriptCodeEditor.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "BsScriptCodeEditor.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoMethod.h"
  6. #include "BsMonoManager.h"
  7. #include "BsMonoUtil.h"
  8. #include "BsCodeEditor.h"
  9. using namespace std::placeholders;
  10. namespace BansheeEngine
  11. {
  12. ScriptCodeEditor::ScriptCodeEditor(MonoObject* instance)
  13. :ScriptObject(instance)
  14. { }
  15. void ScriptCodeEditor::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_SetActiveEditor", &ScriptCodeEditor::internal_SetActiveEditor);
  18. metaData.scriptClass->addInternalCall("Internal_GetActiveEditor", &ScriptCodeEditor::internal_GetActiveEditor);
  19. metaData.scriptClass->addInternalCall("Internal_GetAvailableEditors", &ScriptCodeEditor::internal_GetAvailableEditors);
  20. metaData.scriptClass->addInternalCall("Internal_OpenFile", &ScriptCodeEditor::internal_OpenFile);
  21. metaData.scriptClass->addInternalCall("Internal_SyncSolution", &ScriptCodeEditor::internal_SyncSolution);
  22. }
  23. CodeEditorType ScriptCodeEditor::internal_GetActiveEditor()
  24. {
  25. return CodeEditorManager::instance().getActive();
  26. }
  27. void ScriptCodeEditor::internal_SetActiveEditor(CodeEditorType type)
  28. {
  29. CodeEditorManager::instance().setActive(type);
  30. }
  31. MonoArray* ScriptCodeEditor::internal_GetAvailableEditors()
  32. {
  33. Vector<CodeEditorType> availableEditors = CodeEditorManager::instance().getAvailableEditors();
  34. ScriptArray outArray = ScriptArray::create<UINT32>((UINT32)availableEditors.size());
  35. UINT32 idx = 0;
  36. for (auto& entry : availableEditors)
  37. outArray.set(idx, (UINT32)entry);
  38. return outArray.getInternal();
  39. }
  40. void ScriptCodeEditor::internal_OpenFile(MonoString* path, UINT32 line)
  41. {
  42. Path filePath = MonoUtil::monoToWString(path);
  43. CodeEditorManager::instance().openFile(filePath, line);
  44. }
  45. void ScriptCodeEditor::internal_SyncSolution()
  46. {
  47. CodeEditorManager::instance().syncSolution();
  48. }
  49. }