Program Listing for File Component.hpp
↰ Return to documentation for file (engine/include/Cacao/Component.hpp
)
#pragma once
#include "Actor.hpp"
#include "Cacao/ComponentExporter.hpp"
#include "DllHelper.hpp"
#include <memory>
namespace Cacao {
class CACAO_API Component {
public:
bool IsEnabled() const {
return actor.lock()->IsActive() && enabled;
}
void SetEnabled(bool state) {
enabled = state;
if(IsEnabled()) {
OnEnable();
}
}
std::shared_ptr<Actor> GetOwner() const {
Check<NonexistentValueException>(!actor.expired(), "Cannot get expired Actor from Component!");
return actor.lock();
}
virtual ~Component() {}
protected:
Component();
virtual void OnMount() {};
virtual void OnEnable() {};
virtual void OnDisable() {};
std::weak_ptr<Actor> actor [[maybe_unused]];
friend class Actor;
friend class ComponentExporter;
private:
bool enabled;
std::shared_ptr<ComponentExporter> expHnd;
};
}