private IEnumerator EngineMonitor(PlayerControlInfo playerControlInfo) { while (true) { GameObject MySound; yield return(new WaitUntil(() => playerControlInfo.direction.magnitude > .2f)); MySound = SoundManager.instance.StartLoop(EngineRun, p.ToString(), 0.3f * (myParts[p].val[(int)part.muffler] == 0 ? 2 : 1)); MySound.GetComponent <AudioSource>().pitch = 1f + playerControlInfo.direction.magnitude; yield return(new WaitUntil(() => playerControlInfo.direction == Vector3.zero)); SoundManager.instance.StopLoop(EngineRun, p.ToString()); } }