示例#1
0
        string DumpObject(
            UnityEngine.Object obj, string folder, string previousFile = "")
        {
            Directory.CreateDirectory(folder);
            DumpObjectDelegate bestDumpDelegate = null;

            foreach (var kv in dumpMethods)
            {
                if (kv.Key.GetHashCode() == obj.GetType().GetHashCode())
                {
                    bestDumpDelegate = kv.Value;
                    break;
                }

                if (obj.GetType().IsSubclassOf(kv.Key))
                {
                    bestDumpDelegate = kv.Value;
                }
            }

            try {
                if (bestDumpDelegate != null)
                {
                    string fileName = $"{folder}/{BuildFileName(obj)}";
                    HTMLWriter.WriteDocument(fileName,
                                             $"{obj.name} - {obj.GetType().FullName}", cssStylePath,
                                             (HTMLWriter writer) => {
                        writer.Link(previousFile, "< GO BACK");
                        writer.NewLine();
                        writer.OneLiner("h1", obj.name);
                        writer.OneLiner("b", $"Type: {obj.GetType().FullName}");
                        writer.ShortTag("hr");

                        bestDumpDelegate.Invoke(obj, writer, this, folder);
                    });
                    return(fileName);
                }
            } catch (Exception e) {
                Logger.Error("Failed to dump object!");
                Logger.Error(e.Message);
                Logger.Error(e.StackTrace);
                return($"#exception_{e.Message}");
            }
            return("#failed_to_generate_file");
        }
示例#2
0
 void RegisterNewDumper <T>(DumpObjectDelegate dumpDelegate)
     where T : UnityEngine.Object
 {
     dumpMethods.Add(typeof(T), dumpDelegate);
 }