+ char *name, *buf;
+ struct ts_attr *attr;
+ long tm;
+ int tidx;
+ struct anm_track *trk;
+
+ if(!(name = (char*)ts_get_attr_str(node, "name", 0))) {
+ return;
+ }
+ if(pname) {
+ buf = alloca(strlen(name) + strlen(pname) + 2);
+ sprintf(buf, "%s.%s", pname, name);
+ name = buf;
+ }
+
+ if((tidx = dsys_add_track(name)) == -1) {
+ return;
+ }
+ trk = dsys.track + tidx;
+
+ attr = node->attr_list;
+ while(attr) {
+ if(sscanf(attr->name, "key_%ld", &tm) == 1 && attr->val.type == TS_NUMBER) {
+ anm_set_value(trk, tm, attr->val.fnum);
+ }
+ attr = attr->next;
+ }