public int InvokeRepeating( CoroutineMethodToCall method, float waitTime, float repeatRate )
 {
     ++counter;
     IEnumerator tempIEnumerator = InvokeRepeatingMethod( method, waitTime, repeatRate );
     currentCoroutines.Add( counter, tempIEnumerator );
     StartCoroutine( tempIEnumerator );
     return counter;
 }
    private IEnumerator InvokeRepeatingMethod( CoroutineMethodToCall method, float waitTime, float repeatRate )
    {
        yield return new WaitForSeconds( waitTime );
        method();

        while ( true ) {
            yield return new WaitForSeconds( repeatRate );
            method();
        }
    }