While loop uses extra variables - can this be cleaned up?
Basically, this code controls everything except the body of the loop: initialization, increment, and destruction. This suggests that the actual while should be inside State.World.Looping, and it should take another parameter, an Action or equivalent delegate, which the caller should pass in. For instance, the call would be rewritten:

state.World.Looping(reqComponents, () =&gt;
{
    TimerComponent timer = state.World.GetComponent(TimerComponent.Type);

    if (timer.IsActive)
    {
        timer.TimeLeft -= gameTime.ElapsedGameTime.TotalSeconds;

        if (timer.IsFinished)
        {
            timer.IsActive = false;
        }
    }
});


and Looping itself could be modified to:

public void Looping(ComponentType reqComponents, Action loopBody)
{
    if (!HasComponents(reqComponents))
    {
       return;
    }
    CurrentEntity = 0;

    do
    {
       loopBody();
    } while (++CurrentEntity != EntityCount - 1);
}


I think I got the number of iterations right but I'm not completely sure.