DYTSrouce/src/entities/Component.h
2025-01-05 23:54:44 +08:00

49 lines
1.0 KiB
C++

#pragma once
#include <unordered_map>
#include <QObject>
#include "xml/tinyxml2.h"
class Component : public QObject {
Q_OBJECT
public:
explicit Component(Component* parent = nullptr);
virtual ~Component();
virtual void Serialize(const tinyxml2::XMLElement* element);
virtual void UnSerialize(tinyxml2::XMLElement* element);
virtual bool SetAttribute(const char* name, const char* value);
virtual bool SaveAttribute(tinyxml2::XMLElement* element);
virtual void Begin();
virtual void Update(double dt);
virtual void End();
virtual std::vector<class SceneComponent*> GetChildren() const;
virtual bool OnDestroy();
static std::string GetTypeName();
virtual std::string GetSelfTypeName();
virtual void AttachEntity(class Entity* owner);
virtual bool AttachTo(class SceneComponent* parent);
class Entity* GetEntity() const {
return owner_;
}
const QString& GetUUID() const {
return uuid_;
}
protected:
void SetUUId(const QString& uuid) {
uuid_ = uuid;
}
protected:
QString name_;
QString uuid_;
class Entity* owner_{ nullptr };
};