#pragma once #include "CoreMinimal.h" #include "Singleton/Singleton.h" class IChildWindow; class FMainWindow; class SWidget; class FPluginHost; class SConstraintCanvas; class SWindow; class SChildWindow; struct FWindowInfo { FVector2D Pos; FVector2D Size; }; class FWindowManager : public TSingleton { public: virtual void Init() override; virtual void Release() override; FMainWindow* GetMainWindow() const { return MainWindow; } void CreateChildWindow(FVector2D Size, FString Title, TSharedRef Content); void FrontChildWindow(TSharedPtr ChildWindow); void OpenPluginEditor(FPluginHost* PluginHost); void ClosePluginEditor(FPluginHost* PluginHost); void TogglePluginEditor(FPluginHost* PluginHost); TSharedPtr FindPluginEditor(FPluginHost* PluginHost); private: void OnPluginWindowClosed(const TSharedRef& Window); bool HasPluginEditor(TSharedPtr Window); FMainWindow* MainWindow; TMap, FPluginHost*> PluginEditorWindows; TMap PluginEditorWindowInfos; };