void VerifySufficientAmountPlayersToBegin()
    {
        PM_PlayerMgr playerMgr = gameObject.GetComponent <PM_PlayerMgr>();

        if (playerMgr == null)
        {
            return;
        }

        if (playerMgr.coupledPlayersActive >= PM_PlayerMgr.MINIMUM_PLAYERS)
        {
            PermitState resultState = TransitionToNewState(StartButtonState_, NumberPlayers.Enough);
            if (resultState != StartButtonState_)
            {
                StartButtonState_ = resultState;
                EM_EventMgr.TriggerEvent("enable start button");
            }
        }

        else if (playerMgr.coupledPlayersActive < PM_PlayerMgr.MINIMUM_PLAYERS)
        {
            PermitState resultState = TransitionToNewState(StartButtonState_, NumberPlayers.Not_Enough);
            if (resultState != StartButtonState_)
            {
                StartButtonState_ = resultState;
                EM_EventMgr.TriggerEvent("disable start button");
            }
        }
    }
 //examining current state only prevents unnecessary computation
 //this seems overly wordy..
 PermitState TransitionToNewState(PermitState currentState, NumberPlayers sufficientNumberPlayers)
 {
     if (currentState == PermitState.Disabled && sufficientNumberPlayers == NumberPlayers.Enough)
     {
         return(PermitState.Enabled);
     }
     if (currentState == PermitState.Enabled && sufficientNumberPlayers == NumberPlayers.Not_Enough)
     {
         return(PermitState.Disabled);
     }
     return(currentState);
 }