Files
aibis-dream/Assets/Scripts/FixSystem/Scope/OscilloscopeController.cs
T
2024-10-14 13:30:01 +08:00

69 lines
2.2 KiB
C#

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<Plug>();
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);
}
}