void Update() { curTimer += Time.deltaTime; speakingNear.Clear(); foreach (var speaker in shutUpWhenOtherSpeaking) { if (speaker.currentNotePattern != null && Vector3.Distance(speaker.transform.position, transform.position) < shutUpWhenOtherSpeakingRadius) { speakingNear.Add(speaker); } } if (speakingNear.Count > 0) { curState = IdlePatternState.ShuttingUp; playNotes.StopPlaying(); curTimer = 0f; } switch (curState) { case IdlePatternState.PlayingNotes: if (playNotes.currentPattern == null) { curState = IdlePatternState.PausedBetween; curTimer = 0f; } break; case IdlePatternState.PausedBetween: if (curTimer > pauseBetweenRepeats) { if (playNotes.currentPattern == null) { playNotes.PlayPattern(pattern, volume); curState = IdlePatternState.PlayingNotes; } } break; case IdlePatternState.ShuttingUp: if (speakingNear.Count == 0 && curTimer > pauseBeforeResume) { if (playNotes.currentPattern == null) { playNotes.PlayPattern(pattern, volume); curState = IdlePatternState.PlayingNotes; } } break; default: break; } }
void Awake() { speakingNear = new List <PlayerNoteCreator>(); curState = IdlePatternState.PausedBetween; try { string json = File.ReadAllText(NotePattern.patternFilePath + patternFile + ".json"); pattern = JsonUtility.FromJson <NotePattern>(json); } catch (Exception e) { Debug.Log("Failed to open " + NotePattern.patternFilePath + patternFile + ".json" + ", error: " + e.Message); } }