public Vector3 GetOrigin(int time, int cycleCount)
{
Vector3 offset = _baseFrame[0].Translation;
if((_jointInfo[0].AnimationBits & (AnimationBits.TranslationX | AnimationBits.TranslationY | AnimationBits.TranslationZ)) == 0)
{
// just use the baseframe
return Vector3.Zero;
}
FrameBlend frame = ConvertTimeToFrame(time, cycleCount);
int componentOffset1 = _animatedComponentCount * frame.Frame1 + _jointInfo[0].FirstComponent;
int componentOffset2 = _animatedComponentCount * frame.Frame2 + _jointInfo[0].FirstComponent;
if((_jointInfo[0].AnimationBits & AnimationBits.TranslationX) == AnimationBits.TranslationX)
{
offset.X = _componentFrames[componentOffset1] * frame.FrontLerp + _componentFrames[componentOffset2] * frame.BackLerp;
componentOffset1++;
componentOffset2++;
}
if((_jointInfo[0].AnimationBits & AnimationBits.TranslationY) == AnimationBits.TranslationY)
{
offset.Y = _componentFrames[componentOffset1] * frame.FrontLerp + _componentFrames[componentOffset2] * frame.BackLerp;
componentOffset1++;
componentOffset2++;
}
if((_jointInfo[0].AnimationBits & AnimationBits.TranslationZ) == AnimationBits.TranslationZ)
{
offset.Z = _componentFrames[componentOffset1] * frame.FrontLerp + _componentFrames[componentOffset2] * frame.BackLerp;
}
if(frame.CycleCount > 0)
{
offset += _totalDelta * (float) frame.CycleCount;
}
return offset;
}