idTech4.Game.Animation.idMD5Anim.GetOrigin C# (CSharp) Method

GetOrigin() public method

public GetOrigin ( int time, int cycleCount ) : Vector3
time int
cycleCount int
return Vector3
		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;
		}