Files
XCEngine/editor/app/Features/Scene/SceneViewportFeature.h
2026-04-25 16:46:01 +08:00

55 lines
1.5 KiB
C++

#pragma once
#include "Features/Scene/SceneViewportController.h"
#include "Rendering/Viewport/SceneViewportRenderService.h"
#include <XCEditor/Workspace/UIEditorWorkspaceCompose.h>
#include <XCEngine/UI/DrawData.h>
#include <filesystem>
namespace XCEngine::UI::Editor::App {
class EditorCommandFocusService;
class BuiltInIcons;
class EditorSceneRuntime;
} // namespace XCEngine::UI::Editor::App
namespace XCEngine::UI::Editor::Rendering::Host {
class UiTextureHost;
} // namespace XCEngine::UI::Editor::Rendering::Host
namespace XCEngine::UI::Editor::App {
class ViewportHostService;
class SceneViewportFeature {
public:
void Initialize(
const std::filesystem::path& repoRoot,
Rendering::Host::UiTextureHost& textureHost,
const BuiltInIcons* builtInIcons,
ViewportHostService& viewportHostService);
void Shutdown(
Rendering::Host::UiTextureHost& 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