Files
XCEngine/engine/include/XCEngine/Components/Component.h
ssdfasd 70571d11df 添加 Components 和 Scene 序列化支持
- Component: 添加 Serialize/Deserialize 虚函数
- TransformComponent: 实现 Transform 数据的序列化/反序列化
- GameObject: 实现对象序列化/反序列化
- Scene: 实现 Save/Load 方法,支持场景文件保存和加载
- 测试: 添加 Save_And_Load 和 Save_ContainsGameObjectData 测试
2026-03-22 03:42:40 +08:00

61 lines
1.3 KiB
C++

#pragma once
#include <string>
#include <cstdint>
#include <ostream>
namespace XCEngine {
namespace Components {
class GameObject;
class TransformComponent;
class Scene;
class Component {
public:
virtual ~Component() = default;
virtual void Awake() {}
virtual void Start() {}
virtual void Update(float deltaTime) {}
virtual void FixedUpdate() {}
virtual void LateUpdate(float deltaTime) {}
virtual void OnEnable() {}
virtual void OnDisable() {}
virtual void OnDestroy() {}
virtual std::string GetName() const = 0;
virtual void Serialize(std::ostream& os) const {}
virtual void Deserialize(std::istream& is) {}
GameObject* GetGameObject() const { return m_gameObject; }
TransformComponent& transform() const;
Scene* GetScene() const;
bool IsEnabled() const { return m_enabled; }
void SetEnabled(bool enabled) {
if (m_enabled != enabled) {
m_enabled = enabled;
if (m_enabled) {
OnEnable();
} else {
OnDisable();
}
}
}
protected:
Component() = default;
private:
bool m_enabled = true;
protected:
GameObject* m_gameObject = nullptr;
friend class GameObject;
};
} // namespace Components
} // namespace XCEngine