#pragma once #include #include namespace XCEngine::UI::Editor { class EditorWindowSystem; struct UIEditorWindowWorkspaceState; } // namespace XCEngine::UI::Editor namespace XCEngine::UI::Editor::App { class EditorWindowContentController; struct EditorUtilityWindowDescriptor; class EditorWindowContentFactory { public: virtual ~EditorWindowContentFactory() = default; virtual std::unique_ptr CreateWorkspaceContentController( const UIEditorWindowWorkspaceState& windowState) const = 0; virtual std::unique_ptr CreateUtilityContentController( const EditorUtilityWindowDescriptor& descriptor) const = 0; }; std::unique_ptr CreateDefaultEditorWindowContentFactory( EditorWindowSystem& windowSystem); } // namespace XCEngine::UI::Editor::App