2026-04-25 16:46:01 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
2026-04-25 18:20:17 +08:00
|
|
|
#include "Windowing/Content/EditorWindowContentController.h"
|
2026-04-25 16:46:01 +08:00
|
|
|
|
|
|
|
|
#include <XCEditor/Shell/UIEditorShellInteraction.h>
|
|
|
|
|
|
|
|
|
|
#include <XCEngine/UI/Types.h>
|
|
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
namespace XCEngine::UI::Editor::App {
|
|
|
|
|
|
|
|
|
|
class EditorUtilityWindowPanel;
|
|
|
|
|
struct EditorUtilityWindowDescriptor;
|
|
|
|
|
|
|
|
|
|
class EditorUtilityWindowContentController final
|
|
|
|
|
: public EditorWindowContentController {
|
|
|
|
|
public:
|
|
|
|
|
EditorUtilityWindowContentController(
|
|
|
|
|
std::unique_ptr<EditorUtilityWindowPanel> panel,
|
|
|
|
|
const ::XCEngine::UI::UISize& minimumOuterSize);
|
|
|
|
|
~EditorUtilityWindowContentController() override;
|
|
|
|
|
|
2026-04-25 17:51:37 +08:00
|
|
|
EditorWindowContentCapabilities GetCapabilities() const override;
|
2026-04-25 16:46:01 +08:00
|
|
|
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<EditorUtilityWindowPanel> m_panel = {};
|
|
|
|
|
::XCEngine::UI::UISize m_minimumOuterSize = {};
|
|
|
|
|
UIEditorShellInteractionState m_shellInteractionState = {};
|
|
|
|
|
UIEditorShellInteractionFrame m_shellFrame = {};
|
|
|
|
|
bool m_windowFocused = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<EditorWindowContentController> CreateEditorUtilityWindowContentController(
|
|
|
|
|
const EditorUtilityWindowDescriptor& descriptor);
|
|
|
|
|
|
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|