#pragma once #include "Engine/SceneViewportEngineBridge.h" #include 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