#pragma once #include "Engine/EditorEngineLifecycle.h" #include "Engine/EditorSceneBackendFactory.h" #include "Engine/EditorShaderProvider.h" #include "Engine/GameViewportEngineBridge.h" #include "Engine/SceneViewportEngineBridge.h" #include namespace XCEngine::UI::Editor::App { class EngineEditorComposition { public: EngineEditorComposition(); ~EngineEditorComposition(); EngineEditorComposition(const EngineEditorComposition&) = delete; EngineEditorComposition& operator=(const EngineEditorComposition&) = delete; EngineEditorComposition(EngineEditorComposition&&) = delete; EngineEditorComposition& operator=(EngineEditorComposition&&) = delete; EditorSceneBackendFactory& GetSceneBackendFactory(); SceneViewportEngineBridge& GetSceneViewportBridge(); GameViewportEngineBridge& GetGameViewportBridge(); EditorShaderProvider& GetShaderProvider(); EditorEngineLifecycle& GetLifecycle(); private: class Impl; std::unique_ptr m_impl = {}; }; std::unique_ptr CreateEngineEditorComposition(); } // namespace XCEngine::UI::Editor::App