BsScriptCodeEditor.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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_GetAvailableEditors", &ScriptCodeEditor::internal_GetAvailableEditors);
  19. metaData.scriptClass->addInternalCall("Internal_OpenFile", &ScriptCodeEditor::internal_OpenFile);
  20. metaData.scriptClass->addInternalCall("Internal_SyncSolution", &ScriptCodeEditor::internal_SyncSolution);
  21. }
  22. void ScriptCodeEditor::internal_SetActiveEditor(CodeEditorType type)
  23. {
  24. CodeEditorManager::instance().setActive(type);
  25. }
  26. MonoArray* ScriptCodeEditor::internal_GetAvailableEditors()
  27. {
  28. Vector<CodeEditorType> availableEditors = CodeEditorManager::instance().getAvailableEditors();
  29. ScriptArray outArray = ScriptArray::create<UINT32>((UINT32)availableEditors.size());
  30. UINT32 idx = 0;
  31. for (auto& entry : availableEditors)
  32. outArray.set(idx, (UINT32)entry);
  33. return outArray.getInternal();
  34. }
  35. void ScriptCodeEditor::internal_OpenFile(MonoString* path, UINT32 line)
  36. {
  37. Path filePath = MonoUtil::monoToWString(path);
  38. CodeEditorManager::instance().openFile(filePath, line);
  39. }
  40. void ScriptCodeEditor::internal_SyncSolution()
  41. {
  42. CodeEditorManager::instance().syncSolution();
  43. }
  44. }