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

ConvertTimeToFrame() private method

private ConvertTimeToFrame ( int time, int cycleCount ) : FrameBlend
time int
cycleCount int
return FrameBlend
		private FrameBlend ConvertTimeToFrame(int time, int cycleCount)
		{
			FrameBlend frame = new FrameBlend();
			int frameCount = this.FrameCount;

			if(frameCount <= 1) 
			{
				frame.Frame1 = 0;
				frame.Frame2 = 0;
				frame.BackLerp = 0.0f;
				frame.FrontLerp	= 1.0f;
				frame.CycleCount = 0;
			}
			else if(time <= 0)
			{
				frame.Frame1 = 0;
				frame.Frame2 = 1;
				frame.BackLerp = 0.0f;
				frame.FrontLerp = 1.0f;
				frame.CycleCount = 0;
			}
			else
			{
				int frameTime = time * _frameRate;
				int frameNumber = frameTime / 1000;

				frame.CycleCount = frameNumber / (frameCount - 1);

				if((cycleCount > 0) && (frame.CycleCount >= cycleCount))
				{
					frame.CycleCount = cycleCount - 1;
					frame.Frame1 = frameCount - 1;
					frame.Frame2 = frame.Frame1;
					frame.BackLerp = 0.0f;
					frame.FrontLerp = 1.0f;
				}
				else
				{
					frame.Frame1 = frameNumber % (frameCount - 1);
					frame.Frame2 = frame.Frame1 + 1;
					if(frame.Frame2 >= frameCount)
					{
						frame.Frame2 = 0;
					}

					frame.BackLerp = (frameTime % 1000) * 0.001f;
					frame.FrontLerp = 1.0f - frame.BackLerp;
				}
			}

			return frame;
		}