BsScriptEditorApplication.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsScriptEditorPrerequisites.h"
  5. #include "BsScriptObject.h"
  6. namespace BansheeEngine
  7. {
  8. /**
  9. * @brief Interop class between C++ & CLR for EditorApplication.
  10. */
  11. class BS_SCR_BED_EXPORT ScriptEditorApplication : public ScriptObject <ScriptEditorApplication>
  12. {
  13. public:
  14. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "EditorApplication")
  15. /**
  16. * @brief Registers internal callbacks. Must be called on scripting system load.
  17. */
  18. static void startUp();
  19. /**
  20. * @brief Unregisters internal callbacks. Must be called on scripting system shutdown.
  21. */
  22. static void shutDown();
  23. /**
  24. * @brief Called every frame. Triggers delayed project load.
  25. */
  26. static void update();
  27. private:
  28. ScriptEditorApplication(MonoObject* instance);
  29. /**
  30. * @brief Triggered when the user clicks on the editor's status bar.
  31. */
  32. static void onStatusBarClicked();
  33. static bool mRequestProjectLoad;
  34. static bool mRequestAssemblyReload;
  35. static Path mProjectLoadPath;
  36. static HEvent OnStatusBarClickedConn;
  37. /************************************************************************/
  38. /* CLR HOOKS */
  39. /************************************************************************/
  40. static void internal_SetStatusScene(MonoString* name, bool modified);
  41. static void internal_SetStatusProject(bool modified);
  42. static void internal_SetStatusCompiling(bool compiling);
  43. static MonoString* internal_GetProjectPath();
  44. static MonoString* internal_GetProjectName();
  45. static bool internal_GetProjectLoaded();
  46. static MonoString* internal_GetCompilerPath();
  47. static MonoString* internal_GetBuiltinReleaseAssemblyPath();
  48. static MonoString* internal_GetBuiltinDebugAssemblyPath();
  49. static MonoString* internal_GetScriptAssemblyPath();
  50. static MonoString* internal_GetFrameworkAssemblyPath();
  51. static MonoString* internal_GetEngineAssemblyName();
  52. static MonoString* internal_GetEditorAssemblyName();
  53. static MonoString* internal_GetScriptGameAssemblyName();
  54. static MonoString* internal_GetScriptEditorAssemblyName();
  55. static MonoObject* internal_SaveScene(MonoString* path);
  56. static bool internal_IsValidProject(MonoString* path);
  57. static void internal_SaveProject();
  58. static void internal_LoadProject(MonoString* path);
  59. static void internal_UnloadProject();
  60. static void internal_CreateProject(MonoString* path);
  61. static void internal_ReloadAssemblies();
  62. static void internal_OpenExternally(MonoString* path);
  63. static void internal_RunUnitTests();
  64. static void internal_Quit();
  65. static void internal_ToggleToolbarItem(MonoString* name, bool on);
  66. static bool internal_GetIsPlaying();
  67. static void internal_SetIsPlaying(bool value);
  68. static bool internal_GetIsPaused();
  69. static void internal_SetIsPaused(bool value);
  70. static void internal_FrameStep();
  71. static void internal_SetMainRenderTarget(ScriptRenderTarget* renderTarget);
  72. static bool internal_HasFocus();
  73. typedef void(__stdcall *OnProjectLoadedThunkDef)(MonoException**);
  74. typedef void(__stdcall *OnStatusBarClickedThunkDef) (MonoException**);
  75. static OnProjectLoadedThunkDef onProjectLoadedThunk;
  76. static OnStatusBarClickedThunkDef onStatusBarClickedThunk;
  77. };
  78. }