43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#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<FWindowManager>
|
|
{
|
|
public:
|
|
virtual void Init() override;
|
|
virtual void Release() override;
|
|
|
|
FMainWindow* GetMainWindow() const { return MainWindow; }
|
|
|
|
void CreateChildWindow(FVector2D Size, FString Title, TSharedRef<IChildWindow> Content);
|
|
|
|
void FrontChildWindow(TSharedPtr<SChildWindow> ChildWindow);
|
|
|
|
void OpenPluginEditor(FPluginHost* PluginHost);
|
|
void ClosePluginEditor(FPluginHost* PluginHost);
|
|
void TogglePluginEditor(FPluginHost* PluginHost);
|
|
TSharedPtr<SWindow> FindPluginEditor(FPluginHost* PluginHost);
|
|
private:
|
|
void OnPluginWindowClosed(const TSharedRef<SWindow>& Window);
|
|
bool HasPluginEditor(TSharedPtr<SWindow> Window);
|
|
|
|
FMainWindow* MainWindow;
|
|
TMap<TSharedPtr<SWindow>, FPluginHost*> PluginEditorWindows;
|
|
TMap<FPluginHost*, FWindowInfo> PluginEditorWindowInfos;
|
|
};
|