Files
aibis-dream/Assets/Scripts/FixSystemNew/OscilloscopeViewer.cs
T
2024-11-12 14:32:02 +08:00

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
}
}