49 lines
1.0 KiB
C++
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 };
|
|
}; |