internal static string ExtractFormattedStackTrace(StackTrace stackTrace)
{
StringBuilder builder = new StringBuilder(0xff);
for (int i = 0; i < stackTrace.FrameCount; i++)
{
StackFrame frame = stackTrace.GetFrame(i);
MethodBase method = frame.GetMethod();
if (method != null)
{
System.Type declaringType = method.DeclaringType;
if (declaringType != null)
{
string str = declaringType.Namespace;
if ((str != null) && (str.Length != 0))
{
builder.Append(str);
builder.Append(".");
}
builder.Append(declaringType.Name);
builder.Append(":");
builder.Append(method.Name);
builder.Append("(");
int index = 0;
ParameterInfo[] parameters = method.GetParameters();
bool flag = true;
while (index < parameters.Length)
{
if (!flag)
{
builder.Append(", ");
}
else
{
flag = false;
}
builder.Append(parameters[index].ParameterType.Name);
index++;
}
builder.Append(")");
string fileName = frame.GetFileName();
if ((fileName != null) && (((((declaringType.Name != "Debug") || (declaringType.Namespace != "UnityEngine")) && ((declaringType.Name != "Logger") || (declaringType.Namespace != "UnityEngine"))) && (((declaringType.Name != "DebugLogHandler") || (declaringType.Namespace != "UnityEngine")) && ((declaringType.Name != "Assert") || (declaringType.Namespace != "UnityEngine.Assertions")))) && (((method.Name != "print") || (declaringType.Name != "MonoBehaviour")) || (declaringType.Namespace != "UnityEngine"))))
{
builder.Append(" (at ");
if (fileName.Replace(@"\", "/").StartsWith(projectFolder))
{
fileName = fileName.Substring(projectFolder.Length, fileName.Length - projectFolder.Length);
}
builder.Append(fileName);
builder.Append(":");
builder.Append(frame.GetFileLineNumber().ToString());
builder.Append(")");
}
builder.Append("\n");
}
}
}
return builder.ToString();
}