private void WaitForStageActivatorToActiveThenMoveToNextStage()
        {
            if (!activeStageActivator.IsActive())
            {
                return;
            }

            isGateOpenedLastTimeCheck = false;
            //close and seal the gate so that it would not be opened again
            //DLog.Log("Close gate");
            activeGateController.Close();
            activeGateController.Seal();

            int indexOfActiveStageActivator = stageActivators.IndexOf(activeStageActivator);

            if (indexOfActiveStageActivator < stageActivators.Count - 1)
            {
                activeStageActivator = stageActivators[indexOfActiveStageActivator + 1];
                components.Remove(activeStageActivatorComponent);
            }

            int indexOfActiveGate = gates.IndexOf(activeGateController);

            if (indexOfActiveGate < gates.Count - 1)
            {
                activeGateController = gates[indexOfActiveGate + 1];
//				components.Remove(activeGateComponent);
            }

            MoveToNextStage();
        }