69 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|