using System;
using System.Diagnostics;
using System.Text;
using Debug = UnityEngine.Debug;
public static class FastConcatUtility
{
static readonly StringBuilder _stringBuilder = new StringBuilder(256);
public static string FastConcat(this string str1, string str2)
{
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append(str1);
_stringBuilder.Append(str2);
return _stringBuilder.ToString();
}
}
public static string FastConcat(this string str1, string str2, string str3)
{
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append(str1);
_stringBuilder.Append(str2);
_stringBuilder.Append(str3);
return _stringBuilder.ToString();
}
}
public static string FastConcat(this string str1, string str2, string str3, string str4)
{
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append(str1);
_stringBuilder.Append(str2);
_stringBuilder.Append(str3);
_stringBuilder.Append(str4);
return _stringBuilder.ToString();
}
}
public static string FastConcat(this string str1, string str2, string str3, string str4, string str5)
{
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append(str1);
_stringBuilder.Append(str2);
_stringBuilder.Append(str3);
_stringBuilder.Append(str4);
_stringBuilder.Append(str5);
return _stringBuilder.ToString();
}
}
}
namespace Utility
{
public static class Console
{
static StringBuilder _stringBuilder = new StringBuilder(256);
public static void Log(string txt)
{
Debug.Log(txt);
}
public static void LogError(string txt)
{
string toPrint;
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append("-!!!!!!-> ");
_stringBuilder.Append(txt);
toPrint = _stringBuilder.ToString();
}
Debug.LogError(toPrint);
}
public static void LogException(Exception e)
{
LogException(e, null);
}
public static void LogException(Exception e, UnityEngine.Object obj)
{
string toPrint;
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append("-!!!!!!-> ").Append(e);
toPrint = _stringBuilder.ToString();
}
Exception ex = new Exception(e.ToString());
Debug.Log(toPrint);
Debug.LogException(ex, obj);
}
public static void LogWarning(string txt)
{
string toPrint;
lock (_stringBuilder)
{
_stringBuilder.Length = 0;
_stringBuilder.Append("------> ");
_stringBuilder.Append(txt);
toPrint = _stringBuilder.ToString();
}
Debug.LogWarning(toPrint);
}
///
/// This function should never be used explicitly
///
///
public static void SystemLog(string txt)
{
string toPrint;
lock (_stringBuilder)
{
string currentTimeString = DateTime.UtcNow.ToLongTimeString(); //ensure includes seconds
string processTimeString = (DateTime.Now - Process.GetCurrentProcess().StartTime).ToString();
_stringBuilder.Length = 0;
_stringBuilder.Append("[").Append(currentTimeString);
_stringBuilder.Append("][").Append(processTimeString);
_stringBuilder.Length = _stringBuilder.Length - 3; //remove some precision that we don't need
_stringBuilder.Append("] ").AppendLine(txt);
toPrint = _stringBuilder.ToString();
}
#if !UNITY_EDITOR
System.Console.WriteLine(toPrint);
#else
Debug.Log(toPrint);
#endif
}
}
}