using UnityEngine; using System.Collections.Generic; using RainbowArt.CleanFlatUI; public class OscilloscopeController : MonoBehaviour { public WaveformVisualizer waveformVisualizer; public ErrorWaveformVisualizer errorWaveformVisualizer; public SliderCircular phaseSlider; private float phaseShiftMax = Mathf.PI * 2f; private Plug plug; void Start() { plug = FindObjectOfType(); errorWaveformVisualizer.SetWaveformVisualizer(waveformVisualizer); } void Update() { if (plug != null) { var currentSocket = plug.currentSocket; if (currentSocket != null && currentSocket.targetData != null) { var targetData = currentSocket.targetData; if (targetData != null) { waveformVisualizer.waveformType = targetData.waveformType; waveformVisualizer.clarity = 1; float phaseShift = 0f; if (phaseSlider != null) { float sliderPhase = (phaseSlider.Value / 10f) * phaseShiftMax; phaseShift = sliderPhase + targetData.initialRandomPhase; } waveformVisualizer.SetPhaseShift(phaseShift); waveformVisualizer.gameObject.SetActive(true); if (targetData.isCorrect) { errorWaveformVisualizer.gameObject.SetActive(false); } else { errorWaveformVisualizer.SetWaveformVisualizer(waveformVisualizer); errorWaveformVisualizer.gameObject.SetActive(true); } } } else { ResetVisualizer(); } } } void ResetVisualizer() { waveformVisualizer.waveformType = WaveformType.Noise; waveformVisualizer.clarity = 0; waveformVisualizer.ResetWaveform(); waveformVisualizer.gameObject.SetActive(true); errorWaveformVisualizer.gameObject.SetActive(false); } }