1 #ifndef MSP_GAME_ENTITY_H_
2 #define MSP_GAME_ENTITY_H_
10 class hierarchy_error: public std::logic_error
13 hierarchy_error(): std::logic_error("hierarchy error") { }
19 Handle<Entity> parent;
20 std::vector<Handle<Component>> components;
21 std::vector<Handle<Entity>> children;
24 Entity(Handle<Entity>);
27 void add_component(Handle<Component>);
28 void remove_component(Handle<Component>);
30 void add_child(Handle<Entity>);
31 void remove_child(Handle<Entity>);
33 Handle<Entity> get_parent() const { return parent; }
34 Handle<Entity> get_root();
38 inline Handle<Entity> Entity::get_root()
40 Handle<Entity> e = Handle<Entity>::from_object(this);
41 while(Handle<Entity> p = e->get_parent())
46 } // namespace Msp::Game