Files
XCEngine/new_editor/app/Features/Scene/SceneViewportFeature.h

53 lines
1.4 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 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