#include "ComponentEditors/ComponentEditorRegistry.h" #include "ComponentEditors/CameraComponentEditor.h" #include "ComponentEditors/LightComponentEditor.h" #include "ComponentEditors/MeshFilterComponentEditor.h" #include "ComponentEditors/MeshRendererComponentEditor.h" #include "ComponentEditors/TransformComponentEditor.h" namespace XCEngine { namespace Editor { ComponentEditorRegistry& ComponentEditorRegistry::Get() { static ComponentEditorRegistry registry; return registry; } ComponentEditorRegistry::ComponentEditorRegistry() { RegisterEditor(std::make_unique()); RegisterEditor(std::make_unique()); RegisterEditor(std::make_unique()); RegisterEditor(std::make_unique()); RegisterEditor(std::make_unique()); } void ComponentEditorRegistry::RegisterEditor(std::unique_ptr editor) { if (!editor) { return; } IComponentEditor* editorPtr = editor.get(); m_editorsByType[editor->GetComponentTypeName()] = editorPtr; m_editors.push_back(std::move(editor)); } IComponentEditor* ComponentEditorRegistry::FindEditor(::XCEngine::Components::Component* component) const { return component ? FindEditorByTypeName(component->GetName()) : nullptr; } IComponentEditor* ComponentEditorRegistry::FindEditorByTypeName(const std::string& componentTypeName) const { const auto it = m_editorsByType.find(componentTypeName); return it != m_editorsByType.end() ? it->second : nullptr; } const std::vector>& ComponentEditorRegistry::GetEditors() const { return m_editors; } } // namespace Editor } // namespace XCEngine