7#include <unordered_map>
11#include "glm/detail/type_vec.hpp"
13#define SCRIPT_CLASS(ClassName)
15 const char* get_class_name() const override { return #ClassName; }
16 static const char* static_class_name() { return #ClassName; }
19#define SCRIPT_VAR(Type, Name, Default) Type
23#define REGISTER_VAR(Name, Type) register_property
24 (#Name, &Name, PropertyType::Type)
32 FLOAT,
INT,
BOOL,
STRING,
VEC2,
VEC3,
VEC4,
COLOR3,
COLOR4,
TEXTURE,
MATERIAL,
ARRAY
51 properties_.push_back({name, type,
static_cast<
void *>(ptr)});
72 virtual void on_event(
const std::string &event_name,
void *data =
nullptr) {
Entity & get_owner() const
const std::string & get_name() const
const TransformComponent * transform() const
TransformComponent * transform()
const std::vector< ScriptComponent * > & get_script_components() const
void initialize_scripts() const
void cleanup_scripts() const
std::vector< ScriptComponent * > script_components_
void broadcast_event(const std::string &event_name, void *data=nullptr) const
const std::vector< PropertyInfo > & get_properties() const
virtual void on_update(float delta_time)
void set_enabled(const bool enabled)
virtual const char * get_class_name() const
TransformComponent * get_transform() const
T * get_component() const
std::vector< PropertyInfo > properties_
void register_property(const std::string &name, T *ptr, PropertyType type)
virtual ~ScriptComponent()=default
bool has_component() const
ScriptComponent()=default
void trigger_event(const std::string &event_name, void *data=nullptr)
virtual void on_event(const std::string &event_name, void *data=nullptr)
void update(const float delta_time)