- Component: 添加 Serialize/Deserialize 虚函数 - TransformComponent: 实现 Transform 数据的序列化/反序列化 - GameObject: 实现对象序列化/反序列化 - Scene: 实现 Save/Load 方法,支持场景文件保存和加载 - 测试: 添加 Save_And_Load 和 Save_ContainsGameObjectData 测试
61 lines
1.3 KiB
C++
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
|