Extra2D/include/scene/component.h

84 lines
1.5 KiB
C
Raw Normal View History

#pragma once
#include <types/ptr/ref_counted.h>
namespace extra2d {
// 前向声明
class Node;
/**
* @brief
*
*
*/
class Component : public RefCounted {
public:
/**
* @brief
*/
virtual ~Component() = default;
/**
* @brief
* @param owner
*/
virtual void onAttach(Node* owner);
/**
* @brief
*/
virtual void onDetach();
/**
* @brief
*/
virtual void onEnable();
/**
* @brief
*/
virtual void onDisable();
/**
* @brief
* @param dt
*/
virtual void update(float dt);
/**
* @brief
*/
virtual void render();
/**
* @brief
* @return
*/
Node* getOwner() const { return owner_; }
/**
* @brief
* @param enabled
*/
void setEnabled(bool enabled);
/**
* @brief
* @return
*/
bool isEnabled() const { return enabled_; }
/**
* @brief
* @return
*/
virtual const char* getTypeName() const = 0;
protected:
Node* owner_ = nullptr;
bool enabled_ = true;
};
} // namespace extra2d