#include "SceneViewportOverlayBuilder.h" #include "Core/IEditorContext.h" #include "Core/ISceneManager.h" #include #include namespace XCEngine { namespace Editor { SceneViewportOverlayBuilder::SceneViewportOverlayBuilder() : m_providerRegistry(BuildDefaultSceneViewportOverlayProviderRegistry()) { } SceneViewportOverlayBuilder::SceneViewportOverlayBuilder( SceneViewportOverlayProviderRegistry providerRegistry) : m_providerRegistry(std::move(providerRegistry)) { } SceneViewportOverlayFrameData SceneViewportOverlayBuilder::Build( IEditorContext& context, const SceneViewportOverlayData& overlay, uint32_t viewportWidth, uint32_t viewportHeight, const std::vector& selectedObjectIds, const SceneViewportTransformGizmoOverlayState* transformGizmoOverlayState) const { SceneViewportOverlayFrameData frameData = {}; frameData.overlay = overlay; if (!overlay.valid || viewportWidth == 0u || viewportHeight == 0u) { return frameData; } const Components::Scene* scene = context.GetSceneManager().GetScene(); if (scene == nullptr) { return frameData; } const SceneViewportOverlayBuildContext buildContext = { &context, scene, &overlay, viewportWidth, viewportHeight, &selectedObjectIds, transformGizmoOverlayState }; m_providerRegistry.AppendOverlay(buildContext, frameData); return frameData; } } // namespace Editor } // namespace XCEngine