57 lines
1.6 KiB
C#
57 lines
1.6 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Assets.UserReporting.Scripts.Plugin
|
|||
|
{
|
|||
|
public static class LogDispatcher
|
|||
|
{
|
|||
|
#region Static Constructors
|
|||
|
|
|||
|
static LogDispatcher()
|
|||
|
{
|
|||
|
LogDispatcher.listeners = new List<WeakReference>();
|
|||
|
Application.logMessageReceivedThreaded += (logString, stackTrace, logType) =>
|
|||
|
{
|
|||
|
lock (LogDispatcher.listeners)
|
|||
|
{
|
|||
|
int i = 0;
|
|||
|
while (i < LogDispatcher.listeners.Count)
|
|||
|
{
|
|||
|
WeakReference listener = LogDispatcher.listeners[i];
|
|||
|
ILogListener logListener = listener.Target as ILogListener;
|
|||
|
if (logListener != null)
|
|||
|
{
|
|||
|
logListener.ReceiveLogMessage(logString, stackTrace, logType);
|
|||
|
i++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LogDispatcher.listeners.RemoveAt(i);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Static Fields
|
|||
|
|
|||
|
private static List<WeakReference> listeners;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Static Methods
|
|||
|
|
|||
|
public static void Register(ILogListener logListener)
|
|||
|
{
|
|||
|
lock (LogDispatcher.listeners)
|
|||
|
{
|
|||
|
LogDispatcher.listeners.Add(new WeakReference(logListener));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|