using UnityEngine; using System.Collections.Generic; using RainbowArt.CleanFlatUI; public class OscilloscopeController : MonoBehaviour { public WaveformVisualizer waveformVisualizer; public SliderCircular phaseSlider; private float phaseShiftMax = Mathf.PI * 3f; private Plug plug; void Start() { plug = FindObjectOfType(); } 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; } if(phaseSlider.Value>0) { waveformVisualizer.SetPhaseShift(phaseShift); } else { waveformVisualizer.SetPhaseShift(0); } waveformVisualizer.gameObject.SetActive(true); if (!targetData.isCorrect) { waveformVisualizer.SetError(targetData); } } } else { ResetVisualizer(); } } } void ResetVisualizer() { waveformVisualizer.waveformType = WaveformType.Noise; waveformVisualizer.clarity = 0; waveformVisualizer.ResetWaveform(); waveformVisualizer.gameObject.SetActive(true); phaseSlider.Value=0; waveformVisualizer.SetPhaseShift(0); } }