void add_component(Handle<Component>);
void remove_component(Handle<Component>);
+ template<typename T>
+ Handle<T> get_component();
+
+ Handle<Transform> get_transform() const { return transform; }
+
void add_child(Handle<Entity>);
void remove_child(Handle<Entity>);
Handle<Entity> get_root();
const std::vector<Handle<Entity>> &get_children() const { return children; }
Stage &get_stage();
- Handle<Transform> get_transform() const { return transform; }
};
+template<typename T>
+inline Handle<T> Entity::get_component()
+{
+ for(Handle<Component> c: components)
+ if(Handle<T> tc = dynamic_handle_cast<T>(c))
+ return tc;
+ return nullptr;
+}
+
inline Handle<Entity> Entity::get_root()
{
Handle<Entity> e = Handle<Entity>::from_object(this);