8 Armature::Link &Armature::add_link()
10 links.push_back(Link(string(), links.size()));
14 const Armature::Link &Armature::get_link(unsigned index) const
16 for(list<Link>::const_iterator i=links.begin(); i!=links.end(); ++i)
17 if(i->get_index()==index)
19 throw invalid_argument("Armature::get_link");
22 const Armature::Link &Armature::get_link(const string &name) const
24 for(list<Link>::const_iterator i=links.begin(); i!=links.end(); ++i)
25 if(i->get_name()==name)
27 throw invalid_argument("Armature::get_link");
30 unsigned Armature::get_max_link_index() const
32 unsigned max_index = 0;
33 for(list<Link>::const_iterator i=links.begin(); i!=links.end(); ++i)
34 max_index = max(max_index, i->get_index());
39 Armature::Link::Link(const string &n, unsigned i):
45 void Armature::Link::set_parent(const Link *p)
50 void Armature::Link::set_base(const Vector3 &b)
56 Armature::Loader::Loader(Armature &a):
57 DataFile::ObjectLoader<Armature>(a)
59 add("link", &Loader::link);
62 void Armature::Loader::link(const string &n)
64 Link lnk(n, obj.links.size());
66 obj.links.push_back(lnk);
70 Armature::Link::Loader::Loader(Link &l, const Armature &a):
71 DataFile::ObjectLoader<Link>(l),
74 add("base", &Loader::base);
75 add("index", &Link::index);
76 add("parent", &Loader::parent);
79 void Armature::Link::Loader::base(float x, float y, float z)
81 obj.base = Vector3(x, y, z);
84 void Armature::Link::Loader::parent(const string &n)
86 obj.parent = &armature.get_link(n);