private ToneControllerBehaviour NewToneController() { ToneControllerBehaviour newController = Instantiate(toneControllerBehaviourPrefab, toneControllersContainers); controllers.Add(newController); return(newController); }
public int PlayTone(OctaveTone tone, float seg) { ToneControllerBehaviour controller = null; for (int i = 0; i < controllers.Count; i++) { if (!controllers[i].IsInUse) { controller = controllers[i]; } } if (controller == null) { controller = NewToneController(); } StartCoroutine(PlayToneRoutine(controller, tone, seg)); return(0); }
private IEnumerator PlayToneRoutine(ToneControllerBehaviour toneController, OctaveTone tone, float seg) { toneController.IsInUse = true; toneController.PlayTone(tone); if (seg > 0) { yield return(new WaitForSeconds(seg)); toneController.IsInUse = false; } else { do { yield return(new WaitForEndOfFrame()); } while (toneController.GetCurrentTone != null); toneController.IsInUse = false; } }