public string GetStackTrace(ResourceRequestInfo req) { string stacktrace; if (!Stacktraces.TryGetValue(req.stacktraceHash, out stacktrace)) { return(""); } return(stacktrace); }
private ResourceRequestInfo NewRequest(string path, StackFrame sf) { ResourceRequestInfo reqInfo = new ResourceRequestInfo(); reqInfo.resourcePath = path; reqInfo.srcFile = sf.GetFileName(); reqInfo.srcLineNum = sf.GetFileLineNumber(); reqInfo.seqID = _reqSeq++; string stacktrace = UnityEngine.StackTraceUtility.ExtractStackTrace(); int _tryCount = 10; while (_tryCount > 0) { string stacktraceStored; if (!Stacktraces.TryGetValue(stacktrace.GetHashCode(), out stacktraceStored)) { Stacktraces[stacktrace.GetHashCode()] = stacktrace; break; } else { if (stacktrace == stacktraceStored) { break; } else { // collision happens! stacktrace += ((int)(UnityEngine.Random.value * 100)).ToString(); } } _tryCount--; } reqInfo.stacktraceHash = stacktrace.GetHashCode(); return(reqInfo); }