Files
XCEngine/editor/app/Services/Engine/EngineSceneViewportBridge.h

44 lines
1.3 KiB
C++

#pragma once
#include "Engine/SceneViewportEngineBridge.h"
#include <XCEngine/Rendering/Execution/SceneRenderer.h>
namespace XCEngine::Components {
class CameraComponent;
class GameObject;
}
namespace XCEngine::UI::Editor::App {
class EngineSceneViewportBridge {
public:
~EngineSceneViewportBridge();
void Shutdown();
SceneViewportFramePlanBuildStatus BuildFramePlan(
const SceneViewportRenderRequest& request,
const ::XCEngine::Rendering::RenderContext& renderContext,
const ::XCEngine::Rendering::RenderSurface& surface,
::XCEngine::Rendering::CameraFramePlan& outFramePlan);
bool RenderFramePlan(
const ::XCEngine::Rendering::CameraFramePlan& framePlan);
bool TryResolveActiveSceneRenderObjectId(
::XCEngine::Rendering::RenderObjectId renderObjectId,
EditorSceneObjectId& outRuntimeObjectId) const;
private:
bool EnsureSceneViewportCamera();
void ConfigureSceneViewportCamera(
const EditorSceneCameraSnapshot& snapshot);
std::unique_ptr<::XCEngine::Components::GameObject> m_sceneViewportCameraObject = {};
::XCEngine::Components::CameraComponent* m_sceneViewportCamera = nullptr;
::XCEngine::Rendering::SceneRenderer m_sceneViewportRenderer = {};
};
} // namespace XCEngine::UI::Editor::App