#pragma once #include "Panel.h" #include "XCUIBackend/XCUIHostedPreviewPresenter.h" #include "XCUIBackend/XCUIInputBridge.h" #include "XCUIBackend/XCUIDemoRuntime.h" #include namespace XCEngine { namespace NewEditor { class XCUIDemoPanel : public Panel { public: explicit XCUIDemoPanel( ::XCEngine::Editor::XCUIBackend::XCUIWin32InputSource* inputSource = nullptr); XCUIDemoPanel( ::XCEngine::Editor::XCUIBackend::XCUIWin32InputSource* inputSource, std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter> previewPresenter); ~XCUIDemoPanel() override = default; void Render() override; void SetHostedPreviewEnabled(bool enabled); void SetHostedPreviewPresenter( std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter> previewPresenter); bool IsHostedPreviewEnabled() const { return m_hostedPreviewEnabled; } bool IsUsingNativeHostedPreview() const; const ::XCEngine::Editor::XCUIBackend::XCUIDemoFrameResult& GetFrameResult() const; const ::XCEngine::Editor::XCUIBackend::XCUIHostedPreviewStats& GetLastPreviewStats() const; private: bool m_lastReloadSucceeded = false; bool m_hostedPreviewEnabled = true; bool m_showCanvasHud = true; bool m_showDebugRects = true; ::XCEngine::Editor::XCUIBackend::XCUIWin32InputSource* m_inputSource = nullptr; ::XCEngine::Editor::XCUIBackend::XCUIInputBridge m_inputBridge; ::XCEngine::Editor::XCUIBackend::XCUIDemoRuntime m_runtime; std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter> m_previewPresenter; ::XCEngine::Editor::XCUIBackend::XCUIHostedPreviewStats m_lastPreviewStats = {}; }; } // namespace NewEditor } // namespace XCEngine