73 lines
2.1 KiB
C#
73 lines
2.1 KiB
C#
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<Plug>();
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
}
|