81 lines
2.5 KiB
C#
81 lines
2.5 KiB
C#
using System;
|
|
using System.Text;
|
|
using UnityEngine;
|
|
using UnityEngine.Networking.PlayerConnection;
|
|
|
|
namespace YooAsset
|
|
{
|
|
internal class RemoteDebuggerInRuntime : MonoBehaviour
|
|
{
|
|
#if UNITY_EDITOR
|
|
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
|
private static void OnRuntimeInitialize()
|
|
{
|
|
_sampleOnce = false;
|
|
_autoSample = false;
|
|
}
|
|
#endif
|
|
|
|
private static bool _sampleOnce = false;
|
|
private static bool _autoSample = false;
|
|
|
|
private void Awake()
|
|
{
|
|
#if UNITY_EDITOR
|
|
RemotePlayerConnection.Instance.Initialize();
|
|
#endif
|
|
}
|
|
private void OnEnable()
|
|
{
|
|
#if UNITY_EDITOR
|
|
RemotePlayerConnection.Instance.Register(RemoteDebuggerDefine.kMsgEditorSendToPlayer, OnHandleEditorMessage);
|
|
#else
|
|
PlayerConnection.instance.Register(RemoteDebuggerDefine.kMsgEditorSendToPlayer, OnHandleEditorMessage);
|
|
#endif
|
|
}
|
|
private void OnDisable()
|
|
{
|
|
#if UNITY_EDITOR
|
|
RemotePlayerConnection.Instance.Unregister(RemoteDebuggerDefine.kMsgEditorSendToPlayer);
|
|
#else
|
|
PlayerConnection.instance.Unregister(RemoteDebuggerDefine.kMsgEditorSendToPlayer, OnHandleEditorMessage);
|
|
#endif
|
|
}
|
|
private void LateUpdate()
|
|
{
|
|
if (_autoSample || _sampleOnce)
|
|
{
|
|
_sampleOnce = false;
|
|
var debugReport = YooAssets.GetDebugReport();
|
|
var data = DebugReport.Serialize(debugReport);
|
|
|
|
#if UNITY_EDITOR
|
|
RemotePlayerConnection.Instance.Send(RemoteDebuggerDefine.kMsgPlayerSendToEditor, data);
|
|
#else
|
|
PlayerConnection.instance.Send(RemoteDebuggerDefine.kMsgPlayerSendToEditor, data);
|
|
#endif
|
|
}
|
|
}
|
|
|
|
private static void OnHandleEditorMessage(MessageEventArgs args)
|
|
{
|
|
var command = RemoteCommand.Deserialize(args.data);
|
|
YooLogger.Log($"On handle remote command : {command.CommandType} Param : {command.CommandParam}");
|
|
if (command.CommandType == (int)ERemoteCommand.SampleOnce)
|
|
{
|
|
_sampleOnce = true;
|
|
}
|
|
else if (command.CommandType == (int)ERemoteCommand.SampleAuto)
|
|
{
|
|
if (command.CommandParam == "open")
|
|
_autoSample = true;
|
|
else
|
|
_autoSample = false;
|
|
}
|
|
else
|
|
{
|
|
throw new NotImplementedException(command.CommandType.ToString());
|
|
}
|
|
}
|
|
}
|
|
} |