Moved a couple of folders and wrote some code
This commit is contained in:
@ -0,0 +1,142 @@
|
||||
using FishNet.Documenting;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FishNet.Managing.Logging
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Configuration ScriptableObject specifying which data to log. Used in conjuction with NetworkManager.
|
||||
/// </summary>
|
||||
[CreateAssetMenu(fileName = "New LevelLoggingConfiguration", menuName = "FishNet/Logging/Level Logging Configuration")]
|
||||
public class LevelLoggingConfiguration : LoggingConfiguration
|
||||
{
|
||||
|
||||
#region Serialized.
|
||||
/// <summary>
|
||||
/// Type of logging to use for development builds and editor.
|
||||
/// </summary>
|
||||
[Tooltip("Type of logging to use for development builds and editor.")]
|
||||
[SerializeField]
|
||||
private LoggingType _developmentLogging = LoggingType.Common;
|
||||
/// <summary>
|
||||
/// Type of logging to use for GUI builds.
|
||||
/// </summary>
|
||||
[Tooltip("Type of logging to use for GUI builds.")]
|
||||
[SerializeField]
|
||||
private LoggingType _guiLogging = LoggingType.Warning;
|
||||
/// <summary>
|
||||
/// Type of logging to use for headless builds.
|
||||
/// </summary>
|
||||
[Tooltip("Type of logging to use for headless builds.")]
|
||||
[SerializeField]
|
||||
private LoggingType _headlessLogging = LoggingType.Error;
|
||||
#endregion
|
||||
|
||||
#region Private.
|
||||
/// <summary>
|
||||
/// True when initialized.
|
||||
/// </summary>
|
||||
private bool _initialized;
|
||||
/// <summary>
|
||||
/// Highest type which can be logged.
|
||||
/// </summary>
|
||||
private LoggingType _highestLoggingType = LoggingType.Off;
|
||||
#endregion
|
||||
|
||||
[APIExclude]
|
||||
public void LoggingConstructor(bool loggingEnabled, LoggingType development, LoggingType gui, LoggingType headless)
|
||||
{
|
||||
base.LoggingEnabled = loggingEnabled;
|
||||
_developmentLogging = development;
|
||||
_guiLogging = gui;
|
||||
_headlessLogging = headless;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes script for use.
|
||||
/// </summary>
|
||||
/// <param name="manager"></param>
|
||||
public override void InitializeOnce()
|
||||
{
|
||||
byte currentHighest = (byte)LoggingType.Off;
|
||||
#if UNITY_SERVER //if headless.
|
||||
currentHighest = Math.Max(currentHighest, (byte)_headlessLogging);
|
||||
#endif
|
||||
#if UNITY_EDITOR || DEVELOPMENT_BUILD //if editor or development.
|
||||
currentHighest = Math.Max(currentHighest, (byte)_developmentLogging);
|
||||
#endif
|
||||
#if !UNITY_EDITOR && !UNITY_SERVER //if a build.
|
||||
currentHighest = Math.Max(currentHighest, (byte)_guiLogging);
|
||||
#endif
|
||||
_highestLoggingType = (LoggingType)currentHighest;
|
||||
_initialized = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// True if can log for loggingType.
|
||||
/// </summary>
|
||||
/// <param name="loggingType">Type of logging being filtered.</param>
|
||||
/// <returns></returns>
|
||||
public override bool CanLog(LoggingType loggingType)
|
||||
{
|
||||
if (!base.LoggingEnabled)
|
||||
return false;
|
||||
|
||||
if (!_initialized)
|
||||
{
|
||||
#if UNITY_EDITOR || DEVELOPMENT_BUILD
|
||||
if (Application.isPlaying)
|
||||
Debug.LogError("CanLog called before being initialized.");
|
||||
else
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
return ((byte)loggingType <= (byte)_highestLoggingType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Logs a common value if can log.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public override void Log(string value)
|
||||
{
|
||||
if (CanLog(LoggingType.Common))
|
||||
Debug.Log(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Logs a warning value if can log.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public override void LogWarning(string value)
|
||||
{
|
||||
if (CanLog(LoggingType.Warning))
|
||||
Debug.LogWarning(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Logs an error value if can log.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public override void LogError(string value)
|
||||
{
|
||||
if (CanLog(LoggingType.Error))
|
||||
Debug.LogError(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clones this logging configuration.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override LoggingConfiguration Clone()
|
||||
{
|
||||
LevelLoggingConfiguration copy = ScriptableObject.CreateInstance<LevelLoggingConfiguration>();
|
||||
copy.LoggingConstructor(base.LoggingEnabled, _developmentLogging, _guiLogging, _headlessLogging);
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 925fc096350b81f4f82f4fe4ac0c4dda
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,57 @@
|
||||
using FishNet.Documenting;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FishNet.Managing.Logging
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Base for logging configurations.
|
||||
/// </summary>
|
||||
public abstract class LoggingConfiguration : ScriptableObject
|
||||
{
|
||||
|
||||
#region Serialized.
|
||||
/// <summary>
|
||||
/// True to use logging features. False to disable all logging.
|
||||
/// </summary>
|
||||
[Tooltip("True to use logging features. False to disable all logging.")]
|
||||
public bool LoggingEnabled = true;
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Initializes script for use.
|
||||
/// </summary>
|
||||
/// <param name="manager"></param>
|
||||
public virtual void InitializeOnce() { }
|
||||
|
||||
/// <summary>
|
||||
/// True if can log for loggingType.
|
||||
/// </summary>
|
||||
/// <param name="loggingType">Type of logging being filtered.</param>
|
||||
/// <returns></returns>
|
||||
public abstract bool CanLog(LoggingType loggingType);
|
||||
|
||||
/// <summary>
|
||||
/// Logs a common value if can log.
|
||||
/// </summary>
|
||||
public abstract void Log(string value);
|
||||
|
||||
/// <summary>
|
||||
/// Logs a warning value if can log.
|
||||
/// </summary>
|
||||
public abstract void LogWarning(string value);
|
||||
|
||||
/// <summary>
|
||||
/// Logs an error value if can log.
|
||||
/// </summary>
|
||||
public abstract void LogError(string value);
|
||||
|
||||
/// <summary>
|
||||
/// Clones this logging configuration.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public abstract LoggingConfiguration Clone();
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 438d7e99b7655114891d4fa6e9f68c7d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,25 @@
|
||||
namespace FishNet.Managing.Logging
|
||||
{
|
||||
/// <summary>
|
||||
/// Type of logging being filtered.
|
||||
/// </summary>
|
||||
public enum LoggingType : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// Disable logging.
|
||||
/// </summary>
|
||||
Off = 0,
|
||||
/// <summary>
|
||||
/// Only log errors.
|
||||
/// </summary>
|
||||
Error = 1,
|
||||
/// <summary>
|
||||
/// Log warnings and errors.
|
||||
/// </summary>
|
||||
Warning = 2,
|
||||
/// <summary>
|
||||
/// Log all common activities, warnings, and errors.
|
||||
/// </summary>
|
||||
Common = 3
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bf0a7ab3f60fe44984fcfd16d8fe7b4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user