// Figure out which value in the list we are interested in
int subanimIndex = (int) subanim;
if (subanimIndex < 0 || subanimIndex >= v.Count()) subanimIndex = 0;
// Write out the one wanted value
if (vString.length() > 0) vString.append(' '); vString.append(ap.mapper->Map(v[subanimIndex]));
if (hasTangents && subanimIndex < it.Count())
{
if (itString.length() > 0) itString.append(' ');
if (otString.length() > 0) otString.append(' ');
if (false == isBezierKey) {
itString.append(ap.mapper->Map(it[subanimIndex]));
otString.append(ap.mapper->Map(ot[subanimIndex]));
} else {
float origVal1 = ap.mapper->Map(it[subanimIndex]);
float origVal2 = ap.mapper->Map(ot[subanimIndex]);
if (i < numKeys) {
IBezFloatKey bfk;
ki->GetKey(i, &bfk);
if (i < numKeys) {
TimeValue lastTime = maxc->GetKeyTime(i-1);
TimeValue nextTime = maxc->GetKeyTime(i+1);
float dt;
float dy;
dt = (lastTime - bfk.time) * bfk.inLength;
dy = bfk.intan * dt;
itString.append(dy);
dt = (nextTime - bfk.time) * bfk.outLength;
dy = bfk.outtan * dt;
otString.append(dy);
} else {
itString.append(origVal1);
otString.append(origVal2);
}//if (i < numKeys)
} else {
itString.append(origVal1);
otString.append(origVal2);
}//if (i < numKeys)
}//if (false == isBezierKey)
}//if (hasTangents && subanimIndex < it.Count())