#include "Passes/SceneViewportSelectionOutlinePass.h" namespace XCEngine { namespace Editor { namespace { class SceneViewportSelectionOutlinePass final : public Rendering::RenderPass { public: SceneViewportSelectionOutlinePass( SceneViewportSelectionOutlinePassRenderer& renderer, RHI::RHIResourceView* objectIdTextureView, std::vector selectedObjectIds, const SceneViewportSelectionOutlineStyle& style) : m_renderer(renderer) , m_objectIdTextureView(objectIdTextureView) , m_selectedObjectIds(std::move(selectedObjectIds)) , m_style(style) { } const char* GetName() const override { return "SceneViewportSelectionOutline"; } bool Execute(const Rendering::RenderPassContext& context) override { return m_renderer.Render( context.renderContext, context.surface, m_objectIdTextureView, m_selectedObjectIds, m_style); } private: SceneViewportSelectionOutlinePassRenderer& m_renderer; RHI::RHIResourceView* m_objectIdTextureView = nullptr; std::vector m_selectedObjectIds = {}; SceneViewportSelectionOutlineStyle m_style = {}; }; } // namespace SceneViewportSelectionOutlinePassRenderer::SceneViewportSelectionOutlinePassRenderer() : m_outlinePass() { } void SceneViewportSelectionOutlinePassRenderer::Shutdown() { m_outlinePass.Shutdown(); } bool SceneViewportSelectionOutlinePassRenderer::Render( const Rendering::RenderContext& renderContext, const Rendering::RenderSurface& surface, RHI::RHIResourceView* objectIdTextureView, const std::vector& selectedObjectIds, const SceneViewportSelectionOutlineStyle& style) { return m_outlinePass.Render( renderContext, surface, objectIdTextureView, selectedObjectIds, ToBuiltinSceneViewportSelectionOutlineStyle(style)); } std::unique_ptr CreateSceneViewportSelectionOutlinePass( SceneViewportSelectionOutlinePassRenderer& renderer, RHI::RHIResourceView* objectIdTextureView, const std::vector& selectedObjectIds, const SceneViewportSelectionOutlineStyle& style) { return std::make_unique( renderer, objectIdTextureView, selectedObjectIds, style); } } // namespace Editor } // namespace XCEngine