private static void UpdateAnimation(Sprite animation)
		{
			var animationData = animation.Material.Animation;
			animation.Elapsed += Time.Delta;
			if (animation.Elapsed >= animation.Material.Duration)
				animation.InvokeAnimationEndedAndReset();
			animation.CurrentFrame =
				(int)(animationData.Frames.Length * animation.Elapsed / animation.Material.Duration);
			animationData.UpdateMaterialDiffuseMap(animation.CurrentFrame, animation.Material);
		}
		private static void UpdateSpriteSheet(Sprite animation)
		{
			var animationData = animation.Material.SpriteSheet;
			animation.Elapsed += Time.Delta;
			animation.CurrentFrame =
				(int)(animationData.UVs.Count * animation.Elapsed / animation.Material.Duration);
			if (animation.CurrentFrame >= animationData.UVs.Count)
				animation.InvokeAnimationEndedAndReset();
			animation.LastUV = animation.UV = animationData.UVs[animation.CurrentFrame];
		}