feat(editor): unify component registration pipeline

This commit is contained in:
2026-03-26 02:24:11 +08:00
parent 1ef3048da1
commit d018a4c82c
17 changed files with 268 additions and 116 deletions

View File

@@ -0,0 +1,30 @@
#pragma once
#include "IComponentEditor.h"
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>
namespace XCEngine {
namespace Editor {
class ComponentEditorRegistry {
public:
static ComponentEditorRegistry& Get();
void RegisterEditor(std::unique_ptr<IComponentEditor> editor);
IComponentEditor* FindEditor(::XCEngine::Components::Component* component) const;
IComponentEditor* FindEditorByTypeName(const std::string& componentTypeName) const;
const std::vector<std::unique_ptr<IComponentEditor>>& GetEditors() const;
private:
ComponentEditorRegistry();
std::vector<std::unique_ptr<IComponentEditor>> m_editors;
std::unordered_map<std::string, IComponentEditor*> m_editorsByType;
};
} // namespace Editor
} // namespace XCEngine