#pragma once #include "Features/Scene/SceneViewportController.h" #include "Rendering/Viewport/SceneViewportRenderService.h" #include #include #include namespace XCEngine::UI::Editor::App { class EditorCommandFocusService; class EditorSceneRuntime; } // namespace XCEngine::UI::Editor::App namespace XCEngine::UI::Editor::Ports { class TexturePort; } // namespace XCEngine::UI::Editor::Ports namespace XCEngine::UI::Editor::App { class ViewportHostService; class SceneViewportFeature { public: void Initialize( const std::filesystem::path& repoRoot, Ports::TexturePort& textureHost, ViewportHostService& viewportHostService); void Shutdown( Ports::TexturePort& textureHost, ViewportHostService& viewportHostService); void ResetInteractionState(); void SetCommandFocusService(EditorCommandFocusService* commandFocusService); void SyncRenderRequest(EditorSceneRuntime& sceneRuntime); void Update( EditorSceneRuntime& sceneRuntime, const UIEditorWorkspaceComposeState& composeState, const UIEditorWorkspaceComposeFrame& composeFrame); void Append(::XCEngine::UI::UIDrawList& drawList) const; private: SceneViewportRenderService m_renderService = {}; SceneViewportController m_controller = {}; }; } // namespace XCEngine::UI::Editor::App