BsScriptEditorWindow.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsEditorWidget.h"
  5. namespace BansheeEngine
  6. {
  7. class ScriptEditorWidget;
  8. class BS_SCR_BED_EXPORT ScriptEditorWindow : public ScriptObject<ScriptEditorWindow>
  9. {
  10. struct EditorWindowHandle
  11. {
  12. uint32_t gcHandle;
  13. ScriptEditorWindow* nativeObj;
  14. };
  15. public:
  16. SCRIPT_OBJ(BansheeEditorAssemblyName, "BansheeEditor", "EditorWindow")
  17. ~ScriptEditorWindow();
  18. EditorWidgetBase* getEditorWidget() const { return mEditorWidget; }
  19. static void registerManagedEditorWindows();
  20. private:
  21. friend class ScriptEditorWidget;
  22. ScriptEditorWindow(MonoObject* instance, const String& windowName, const String& displayName, EditorWidgetBase* editorWidget);
  23. static MonoObject* internal_createOrGetInstance(MonoString* ns, MonoString* typeName);
  24. static UINT32 internal_getWidth(ScriptEditorWindow* thisPtr);
  25. static UINT32 internal_getHeight(ScriptEditorWindow* thisPtr);
  26. static void internal_initializeGUIPanel(ScriptEditorWindow* thisPtr, MonoObject* panel);
  27. void onWidgetMoved(INT32 x, INT32 y);
  28. void onWidgetResized(UINT32 width, UINT32 height);
  29. void onWidgetParentChanged(EditorWidgetContainer* newParent);
  30. void _onManagedInstanceDeleted();
  31. String mName;
  32. EditorWidgetBase* mEditorWidget;
  33. Vector<ScriptGUIPanel*> mPanels;
  34. HEvent mOnWidgetMovedConn;
  35. HEvent mOnWidgetResizedConn;
  36. HEvent mOnParentChangedConn;
  37. static MonoMethod* onResizedMethod;
  38. // Global editor window management methods
  39. static void registerScriptEditorWindow(ScriptEditorWindow* editorWindow);
  40. static void unregisterScriptEditorWindow(const String& windowTypeName);
  41. static UnorderedMap<String, EditorWindowHandle> OpenScriptEditorWindows;
  42. static EditorWidgetBase* openEditorWidgetCallback(String ns, String type, EditorWidgetContainer& parentContainer);
  43. };
  44. class BS_SCR_BED_EXPORT ScriptEditorWidget : public EditorWidgetBase
  45. {
  46. public:
  47. ScriptEditorWidget(const String& windowTypeName, const HString& displayName, EditorWidgetContainer& parentContainer);
  48. ~ScriptEditorWidget();
  49. private:
  50. String mWindowTypeName;
  51. };
  52. }