92 lines
2.5 KiB
C#
92 lines
2.5 KiB
C#
using System;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.FixSystem
|
|
{
|
|
public class OscilloscopeViewer : MonoBehaviour
|
|
{
|
|
private const float PhaseShiftMax = Mathf.PI * 1.5f;
|
|
private const float ScanSpeed = 2f;
|
|
|
|
#region 组件索引
|
|
|
|
private WaveformVisualizer _waveformVisualizerRef;
|
|
private LineRenderer _scanLineRef;
|
|
private TMP_Text _screenText;
|
|
|
|
private BodyModuleSystem _bodyModuleSystem;
|
|
|
|
#endregion
|
|
|
|
private void Awake()
|
|
{
|
|
InitComponentRefs();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 初始化组件索引
|
|
/// </summary>
|
|
private void InitComponentRefs()
|
|
{
|
|
_waveformVisualizerRef = transform.Find("Waveform Visualizer").GetComponent<WaveformVisualizer>();
|
|
_scanLineRef = transform.Find("Scan Line").GetComponent<LineRenderer>();
|
|
_screenText = transform.Find("Screen Message").GetComponent<TMP_Text>();
|
|
|
|
// TODO System这种组件可以搞一个IOC容器来访问
|
|
_bodyModuleSystem = FindObjectOfType<BodyModuleSystem>();
|
|
|
|
// 对部分值进行初始化
|
|
_scanLineRef.startWidth = 0.05f;
|
|
_scanLineRef.endWidth = 0.05f;
|
|
_scanLineRef.gameObject.SetActive(false);
|
|
|
|
_screenText.text = "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 显示消息
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
public void ShowScreenMessage(string message)
|
|
{
|
|
_screenText.text = message;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 清除消息
|
|
/// </summary>
|
|
public void ClearScreenMessage()
|
|
{
|
|
_screenText.text = "";
|
|
}
|
|
|
|
#region 事件注册
|
|
|
|
private void OnEnable()
|
|
{
|
|
RegisterEvent();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
UnregisterEvent();
|
|
}
|
|
|
|
private void RegisterEvent()
|
|
{
|
|
// TODO 当前是靠Plug触发事件的,但我觉得应该由Socket触发
|
|
// _bodyModuleSystem.PlugInEvent.AddListener(OnPlugInEvent);
|
|
// _bodyModuleSystem.PlugOutEvent.AddListener(OnPlugOutEvent);
|
|
}
|
|
|
|
private void UnregisterEvent()
|
|
{
|
|
// TODO 当前是靠Plug触发事件的,但我觉得应该由Socket触发
|
|
// _bodyModuleSystem.PlugInEvent.RemoveListener(OnPlugInEvent);
|
|
// _bodyModuleSystem.PlugOutEvent.RemoveListener(OnPlugOutEvent);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |