重构ui_editor:向引擎核心类型对齐

- 删除UI::Event,使用XCEngine::Core::Event替代
- GameObject.h重构,Component添加friend class Entity
- LogEntry使用XCEngine::Debug::LogLevel
- SceneManager/SelectionManager使用XCEngine::Core::Event
- LogSystem使用XCEngine::Debug::LogLevel
- CMakeLists.txt添加engine/include路径
This commit is contained in:
2026-03-20 17:28:06 +08:00
parent 376fa08e56
commit a40544344b
13 changed files with 96 additions and 111 deletions

View File

@@ -7,15 +7,32 @@
#include <functional>
#include <cstdint>
#include <XCEngine/Core/Event.h>
namespace UI {
using EntityID = uint64_t;
constexpr EntityID INVALID_ENTITY = 0;
constexpr EntityID INVALID_ENTITY_ID = 0;
class Component {
public:
virtual ~Component() = default;
virtual std::string GetName() const = 0;
virtual void Awake() {}
virtual void Start() {}
virtual void Update(float deltaTime) {}
virtual void OnDestroy() {}
class Entity* GetEntity() const { return m_entity; }
bool IsEnabled() const { return m_enabled; }
void SetEnabled(bool enabled) { m_enabled = enabled; }
protected:
class Entity* m_entity = nullptr;
bool m_enabled = true;
friend class Entity;
};
class TransformComponent : public Component {
@@ -35,10 +52,11 @@ public:
std::string GetName() const override { return "Mesh Renderer"; }
};
struct Entity {
EntityID id = INVALID_ENTITY;
class Entity {
public:
EntityID id = INVALID_ENTITY_ID;
std::string name;
EntityID parent = INVALID_ENTITY;
EntityID parent = INVALID_ENTITY_ID;
std::vector<EntityID> children;
std::vector<std::unique_ptr<Component>> components;
bool selected = false;
@@ -46,6 +64,7 @@ struct Entity {
template<typename T, typename... Args>
T* AddComponent(Args&&... args) {
auto comp = std::make_unique<T>(std::forward<Args>(args)...);
comp->m_entity = this;
T* ptr = comp.get();
components.push_back(std::move(comp));
return ptr;
@@ -60,6 +79,17 @@ struct Entity {
}
return nullptr;
}
template<typename T>
std::vector<T*> GetComponents() {
std::vector<T*> result;
for (auto& comp : components) {
if (auto casted = dynamic_cast<T*>(comp.get())) {
result.push_back(casted);
}
}
return result;
}
};
using ComponentInspectorFn = std::function<void(Component*)>;
@@ -98,4 +128,4 @@ private:
std::unordered_map<std::string, std::function<std::unique_ptr<Component>()>> m_factories;
};
}
}