BsScriptCodeEditor.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptCodeEditor.h"
  4. #include "BsScriptMeta.h"
  5. #include "BsMonoField.h"
  6. #include "BsMonoClass.h"
  7. #include "BsMonoMethod.h"
  8. #include "BsMonoManager.h"
  9. #include "BsMonoUtil.h"
  10. #include "CodeEditor/BsCodeEditor.h"
  11. #include "BsEngineScriptLibrary.h"
  12. #include "BsEditorScriptLibrary.h"
  13. using namespace std::placeholders;
  14. namespace bs
  15. {
  16. ScriptCodeEditor::ScriptCodeEditor(MonoObject* instance)
  17. :ScriptObject(instance)
  18. { }
  19. void ScriptCodeEditor::initRuntimeData()
  20. {
  21. metaData.scriptClass->addInternalCall("Internal_SetActiveEditor", (void*)&ScriptCodeEditor::internal_SetActiveEditor);
  22. metaData.scriptClass->addInternalCall("Internal_GetActiveEditor", (void*)&ScriptCodeEditor::internal_GetActiveEditor);
  23. metaData.scriptClass->addInternalCall("Internal_GetAvailableEditors", (void*)&ScriptCodeEditor::internal_GetAvailableEditors);
  24. metaData.scriptClass->addInternalCall("Internal_OpenFile", (void*)&ScriptCodeEditor::internal_OpenFile);
  25. metaData.scriptClass->addInternalCall("Internal_SyncSolution", (void*)&ScriptCodeEditor::internal_SyncSolution);
  26. }
  27. CodeEditorType ScriptCodeEditor::internal_GetActiveEditor()
  28. {
  29. return CodeEditorManager::instance().getActive();
  30. }
  31. void ScriptCodeEditor::internal_SetActiveEditor(CodeEditorType type)
  32. {
  33. CodeEditorManager::instance().setActive(type);
  34. }
  35. MonoArray* ScriptCodeEditor::internal_GetAvailableEditors()
  36. {
  37. Vector<CodeEditorType> availableEditors = CodeEditorManager::instance().getAvailableEditors();
  38. ScriptArray outArray = ScriptArray::create<INT32>((UINT32)availableEditors.size());
  39. UINT32 idx = 0;
  40. for (auto& entry : availableEditors)
  41. {
  42. outArray.set(idx, (INT32)entry);
  43. idx++;
  44. }
  45. return outArray.getInternal();
  46. }
  47. void ScriptCodeEditor::internal_OpenFile(MonoString* path, UINT32 line)
  48. {
  49. Path filePath = MonoUtil::monoToString(path);
  50. CodeEditorManager::instance().openFile(filePath, line);
  51. }
  52. void ScriptCodeEditor::internal_SyncSolution()
  53. {
  54. CodeEditorManager::instance().syncSolution(SCRIPT_GAME_ASSEMBLY,
  55. CodeProjectReference { ENGINE_ASSEMBLY, EngineScriptLibrary::instance().getEngineAssemblyPath() },
  56. CodeProjectReference { EDITOR_ASSEMBLY, EditorScriptLibrary::instance().getEditorAssemblyPath() });
  57. }
  58. }