BsScriptEditorWindow.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsEditorWidget.h"
  5. namespace BansheeEditor
  6. {
  7. class ScriptEditorWidget;
  8. class BS_SCR_BED_EXPORT ScriptEditorWindow : public BansheeEngine::ScriptObject<ScriptEditorWindow>
  9. {
  10. struct EditorWindowHandle
  11. {
  12. uint32_t gcHandle;
  13. ScriptEditorWindow* nativeObj;
  14. };
  15. public:
  16. ~ScriptEditorWindow();
  17. EditorWidgetBase* getEditorWidget() const { return mEditorWidget; }
  18. static void initMetaData();
  19. static void registerManagedEditorWindows();
  20. private:
  21. friend class ScriptEditorWidget;
  22. ScriptEditorWindow(const CM::String& windowName, const CM::String& displayName, EditorWidgetBase* editorWidget);
  23. static MonoObject* internal_createOrGetInstance(MonoString* ns, MonoString* typeName);
  24. static void internal_destroyInstance(ScriptEditorWindow* nativeInstance);
  25. static void initRuntimeData();
  26. CM::String mName;
  27. EditorWidgetBase* mEditorWidget;
  28. // Global editor window management methods
  29. static void registerScriptEditorWindow(ScriptEditorWindow* editorWindow);
  30. static void unregisterScriptEditorWindow(const CM::String& windowTypeName);
  31. static CM::UnorderedMap<CM::String, EditorWindowHandle>::type OpenScriptEditorWindows;
  32. static EditorWidgetBase* openEditorWidgetCallback(CM::String ns, CM::String type, EditorWidgetContainer& parentContainer);
  33. };
  34. class BS_SCR_BED_EXPORT ScriptEditorWidget : public EditorWidgetBase
  35. {
  36. public:
  37. ScriptEditorWidget(const CM::String& windowTypeName, const CM::HString& displayName, EditorWidgetContainer& parentContainer);
  38. ~ScriptEditorWidget();
  39. private:
  40. CM::String mWindowTypeName;
  41. };
  42. }