BsScriptCodeEditor.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. using namespace std::placeholders;
  12. namespace bs
  13. {
  14. ScriptCodeEditor::ScriptCodeEditor(MonoObject* instance)
  15. :ScriptObject(instance)
  16. { }
  17. void ScriptCodeEditor::initRuntimeData()
  18. {
  19. metaData.scriptClass->addInternalCall("Internal_SetActiveEditor", (void*)&ScriptCodeEditor::internal_SetActiveEditor);
  20. metaData.scriptClass->addInternalCall("Internal_GetActiveEditor", (void*)&ScriptCodeEditor::internal_GetActiveEditor);
  21. metaData.scriptClass->addInternalCall("Internal_GetAvailableEditors", (void*)&ScriptCodeEditor::internal_GetAvailableEditors);
  22. metaData.scriptClass->addInternalCall("Internal_OpenFile", (void*)&ScriptCodeEditor::internal_OpenFile);
  23. metaData.scriptClass->addInternalCall("Internal_SyncSolution", (void*)&ScriptCodeEditor::internal_SyncSolution);
  24. }
  25. CodeEditorType ScriptCodeEditor::internal_GetActiveEditor()
  26. {
  27. return CodeEditorManager::instance().getActive();
  28. }
  29. void ScriptCodeEditor::internal_SetActiveEditor(CodeEditorType type)
  30. {
  31. CodeEditorManager::instance().setActive(type);
  32. }
  33. MonoArray* ScriptCodeEditor::internal_GetAvailableEditors()
  34. {
  35. Vector<CodeEditorType> availableEditors = CodeEditorManager::instance().getAvailableEditors();
  36. ScriptArray outArray = ScriptArray::create<INT32>((UINT32)availableEditors.size());
  37. UINT32 idx = 0;
  38. for (auto& entry : availableEditors)
  39. {
  40. outArray.set(idx, (INT32)entry);
  41. idx++;
  42. }
  43. return outArray.getInternal();
  44. }
  45. void ScriptCodeEditor::internal_OpenFile(MonoString* path, UINT32 line)
  46. {
  47. Path filePath = MonoUtil::monoToString(path);
  48. CodeEditorManager::instance().openFile(filePath, line);
  49. }
  50. void ScriptCodeEditor::internal_SyncSolution()
  51. {
  52. CodeEditorManager::instance().syncSolution();
  53. }
  54. }