#pragma once #include "Windowing/Content/EditorWindowContentController.h" #include #include #include namespace XCEngine::UI::Editor::App { class EditorUtilityWindowPanel; struct EditorUtilityWindowDescriptor; class EditorUtilityWindowContentController final : public EditorWindowContentController { public: EditorUtilityWindowContentController( std::unique_ptr panel, const ::XCEngine::UI::UISize& minimumOuterSize); ~EditorUtilityWindowContentController() override; EditorWindowContentCapabilities GetCapabilities() const override; void Shutdown() override; void ResetInteractionState() override; EditorWindowFrameTransferRequests UpdateAndAppend( const EditorWindowContentFrameContext& context, ::XCEngine::UI::UIDrawData& drawData) override; const UIEditorShellInteractionFrame& GetShellFrame() const override; const UIEditorShellInteractionState& GetShellInteractionState() const override; ::XCEngine::UI::UISize ResolveMinimumOuterSize() const override; private: std::unique_ptr m_panel = {}; ::XCEngine::UI::UISize m_minimumOuterSize = {}; UIEditorShellInteractionState m_shellInteractionState = {}; UIEditorShellInteractionFrame m_shellFrame = {}; bool m_windowFocused = true; }; std::unique_ptr CreateEditorUtilityWindowContentController( const EditorUtilityWindowDescriptor& descriptor); } // namespace XCEngine::UI::Editor::App